We assume you created user oracle and installed Oracle 12c database software in directory /data/oracle/product/12.2.0/dbhome_1
The following rules are important for every production database
-------------------------------------------------------------------------------- -- execute as oracle -------------------------------------------------------------------------------- -- create directory structure -- separate disk for data files mkdir -p /data/oracle/database/oradb01/adump mkdir -p /data/oracle/database/oradb01/control mkdir -p /data/oracle/database/oradb01/data mkdir -p /data/oracle/database/oradb01/dpdump -- separate disk for control file and redo logs 1 mkdir -p /redo1/oracle/database/oradb01/control mkdir -p /redo1/oracle/database/oradb01/redo -- separate disk for control file and redo logs 2 mkdir -p /redo2/oracle/database/oradb01/control mkdir -p /redo2/oracle/database/oradb01/redo -- separate disk for archived logs mkdir -p /arch/oracle/database/oradb01/arch_logs -------------------------------------------------------------------------------- -- create init file vi $ORACLE_HOME/dbs/initoradb01.ora audit_file_dest='/data/oracle/database/oradb01/adump' audit_trail='db' compatible='12.0.0' control_files='/data/oracle/database/oradb01/control/control.ctl','/redo1/oracle/database/oradb01/control/control.ctl','/redo2/oracle/database/oradb01/control/control.ctl' db_block_size=8192 db_domain='' db_name='oradb01' diagnostic_dest='/data/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=oradb01XDB)' log_archive_dest_1='LOCATION=/arch/oracle/database/oradb01/arch_logs MANDATORY REOPEN=300' memory_target=10G nls_length_semantics='CHAR' open_cursors=3000 processes=1000 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDO1' -------------------------------------------------------------------------------- -- oracle settings export ORACLE_BASE=/data/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 PATH=$PATH:$ORACLE_HOME/bin export ORACLE_HOSTNAME=db01-s export ORACLE_UNQNAME=oradb01 export ORACLE_SID=oradb01 -- create password file $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapworadb01 password=Geheim force=y -- connect as user sys sqlplus / as sysdba -- create spfile create spfile from pfile; -- start database instance startup nomount -------------------------------------------------------------------------------- -- create empty database set echo on set termout on spool createdb create database oradb01 user sys identified by Geheim user system identified by Geheim maxdatafiles 100 maxinstances 1 maxlogfiles 100 maxlogmembers 2 maxloghistory 1 archivelog character set AL32UTF8 national character set AL16UTF16 extent management local datafile '/data/oracle/database/oradb01/data/system01.dbf' size 500M reuse autoextend on next 10M maxsize unlimited sysaux datafile '/data/oracle/database/oradb01/data/sysaux01.dbf' size 500M reuse autoextend on next 10M maxsize unlimited bigfile default tablespace USERS datafile '/data/oracle/database/oradb01/data/users01.dbf' size 500M reuse autoextend on next 10M maxsize unlimited bigfile default temporary tablespace TEMP1 tempfile '/data/oracle/database/oradb01/data/temp01.dbf' size 500M reuse autoextend on next 10M maxsize unlimited bigfile undo tablespace UNDO1 datafile '/data/oracle/database/oradb01/data/undo01.dbf' size 500M reuse autoextend on next 10M maxsize unlimited logfile group 1 ('/redo1/oracle/database/oradb01/redo/redo01.log','/redo2/oracle/database/oradb01/redo/redo01.log') size 100M, group 2 ('/redo1/oracle/database/oradb01/redo/redo02.log','/redo2/oracle/database/oradb01/redo/redo02.log') size 100M, group 3 ('/redo1/oracle/database/oradb01/redo/redo03.log','/redo2/oracle/database/oradb01/redo/redo03.log') size 100M, group 4 ('/redo1/oracle/database/oradb01/redo/redo04.log','/redo2/oracle/database/oradb01/redo/redo04.log') size 100M, group 5 ('/redo1/oracle/database/oradb01/redo/redo05.log','/redo2/oracle/database/oradb01/redo/redo05.log') size 100M, group 6 ('/redo1/oracle/database/oradb01/redo/redo06.log','/redo2/oracle/database/oradb01/redo/redo06.log') size 100M, group 7 ('/redo1/oracle/database/oradb01/redo/redo07.log','/redo2/oracle/database/oradb01/redo/redo07.log') size 100M, group 8 ('/redo1/oracle/database/oradb01/redo/redo08.log','/redo2/oracle/database/oradb01/redo/redo08.log') size 100M, group 9 ('/redo1/oracle/database/oradb01/redo/redo09.log','/redo2/oracle/database/oradb01/redo/redo09.log') size 100M, group 10 ('/redo1/oracle/database/oradb01/redo/redo10.log','/redo2/oracle/database/oradb01/redo/redo10.log') size 100M ; spool off -------------------------------------------------------------------------------- -- create sys objects spool catalog @?/rdbms/admin/catalog.sql spool off spool catproc @?/rdbms/admin/catproc.sql spool off spool javavm @?/javavm/install/initjvm.sql spool off spool catjava @?/rdbms/admin/catjava.sql spool off -- recompile invalid objects @?/rdbms/admin/utlrp.sql -- check if everything is created select comp_name, version, status from dba_registry; -- restart database instance for spfile to take effect shutdown immediate; startup; exit -------------------------------------------------------------------------------- -- optional stuff sqlplus / as sysdba -- change profile alter profile DEFAULT limit password_life_time unlimited; -- directory for data pump create or replace directory dmpdir as '/data/oracle/database/oradb01/dpdump'; -- create product user profile to avoid the warning in sqlplus connect system/Geheim @?/sqlplus/admin/pupbld.sql exit -------------------------------------------------------------------------------- -- configure Enterprise Manager DB Express sqlplus / as sysdba exec dbms_xdb_config.sethttpsport(5500); select dbms_xdb_config.gethttpsport() from dual; -- EM URL: https://hostname:port/em/ -- in my case it is: https://192.168.8.1:5500/em/ -- for more info look at EM DB Express 12cR1 --------------------------------------------------------------------------------