
파라미터 파일 생성
인스턴스 생성을 위해 pfile을 vi 편집기로 생성합니다. 파일이 있어야 할 디렉토리는 $ORACLE_HOME/dbs입니다.
cd $ORACLE_HOME/dbs
vi initorcl.ora |
db_name='orcl'
enable_pluggable_database=true
audit_trail='db'
control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
db_block_size=8192
db_domain=''
memory_target=800M
open_cursors=300
processes=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1' |
디렉토리 생성
데이터 파일을 저장할 디렉토리와 Fast Recovery Area 디렉토리를 생성합니다. container database, seed pluggable database, pluggable database의 데이터 파일을 저장할 위치를 각각 생성합니다.
mkdir -p /u01/app/oracle/oradata/orcl
mkdir -p /u01/app/oracle/oradata/orcl/pdbseed
mkdir -p /u01/app/oracle/oradata/orcl/salespdb
mkdir -p /u01/app/oracle/oradata/orcl/hrpdb
mkdir -p /u01/app/oracle/fast_recovery_area/orcl |
데이터베이스 생성
sysdba 권한으로 접속하여 nomount에서 데이터베이스 생성 스크립트를 실행합니다.
startup nomount
create spfile from pfile;
CREATE DATABASE orcl
CONTROLFILE REUSE
USER sys IDENTIFIED BY oracle
USER system IDENTIFIED BY oracle
LOGFILE GROUP 1
('/u01/app/oracle/oradata/orcl/redo01.log') SIZE 50M,
GROUP 2
('/u01/app/oracle/oradata/orcl/redo02.log') SIZE 50M,
GROUP 3
('/u01/app/oracle/oradata/orcl/redo03.log') SIZE 50M
MAXLOGFILES 16
MAXLOGMEMBERS 4
MAXDATAFILES 1024
MAXINSTANCES 1
MAXLOGHISTORY 680
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
DEFAULT TABLESPACE USERS
DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
USER_DATA TABLESPACE userstbs
DATAFILE '/u01/app/oracle/oradata/orcl/pdbseed/userstbsp01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
ENABLE PLUGGABLE DATABASE
SEED
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/orcl',
'/u01/app/oracle/oradata/orcl/pdbseed'); |
시스템 뷰, 딕셔너리 테이블 생성
시스템 뷰와 딕셔너리 테이블 생성을 위한 스크립트를 실행합니다. 12c에서는 perl 스크립트를 이용해서 생성하는 것을 권장하고 있습니다.
cd $ORACLE_HOME/rdbms/admin
perl catcon.pl -u sys/oracle -s -e -d $ORACLE_HOME/rdbms/admin -b catalog1 catalog.sql > catcon-catalog.log
perl catcon.pl -u sys/oracle -s -e -d $ORACLE_HOME/rdbms/admin -b catproc1 catproc.sql > catcon-catproc.log
perl catcon.pl -u system/oracle -s -e -d $ORACLE_HOME/sqlplus/admin -b pupbld1 pupbld.sql > catcon-pupbld.log |
PDB 생성
sysdba 권한으로 pluggable database(이하 PDB)를 create pluggable database 문을 이용해서 생성합니다.
CREATE PLUGGABLE DATABASE salespdb
ADMIN USER salesadm IDENTIFIED BY oracle
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/orcl/pdbseed',
'/u01/app/oracle/oradata/orcl/salespdb');
CREATE PLUGGABLE DATABASE hrpdb
ADMIN USER hradm IDENTIFIED BY oracle
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/orcl/pdbseed',
'/u01/app/oracle/oradata/orcl/hrpdb'); |
리스너 생성
$ORACLE_HOME/network/admin 디렉토리에 listener.ora 파일을 생성합니다.
cd $ORACLE_HOME/network/admin
vi listener.ora |
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c.localdomain)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = salespdb)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
)
(SID_DESC =
(SID_NAME = hrpdb)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
)
) |
원격 접속을 위한 tnsnames.ora 파일은 아래와 같습니다.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SALESPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = salespdb)
)
)
HRPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = hrpdb)
)
) |
PDB 복제
create pluggable database ... from 문을 이용해서 PDB를 복제할 수 있습니다.
CREATE PLUGGABLE DATABASE salespdb2
FROM salespdb
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/orcl/salespdb',
'/u01/app/oracle/oradata/orcl/salespb2')
STORAGE (MAXSIZE 6G MAX_SHARED_TEMP_SIZE 100M); |
데이터베이스 정지
PDB를 close한 후에 전체 인스턴스를 shutdown 합니다.
alter pluggable database all close immediate;
select con_id, name, open_mode from v$pdbs; |
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 SALESPDB MOUNTED
4 HRPDB MOUNTED |
|
데이터베이스 기동
Container Database를 startup 명령을 이용해 open한 후에 PDB를 open합니다.
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2293880 bytes
Variable Size 545263496 bytes
Database Buffers 285212672 bytes
Redo Buffers 2334720 bytes
Database mounted.
Database opened. |
select instance_name, status from v$instance; |
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN |
select con_id, name, open_mode from v$pdbs; |
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 SALESPDB MOUNTED
4 HRPDB MOUNTED |
|
alter pluggable database all open; |
Pluggable database altered. |
select con_id, name, open_mode from v$pdbs; |
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE |
|