티스토리 뷰
dbca가 아닌 CREATE DATABASE 명령어를 통해 수동으로 DB를 생성해보자.
OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2
1. /u01/app/oracle/oradata 폴더 아래 testdb라는 디렉토리 생성
testdb 디렉토리 생성 후 disk 디렉토리들도 생성해준다.
2. PFILE 설정
PFILE은 오라클이 구동할 수 있게 설계되어 있는 도면과 같다. 데이터베이스를 기동하기 위해서는 파라미터 파일을 참조하여 SGA 및 기타 필요한 환경을 구성해야 한다.
2-1. oraenv
지금처럼 데이터베이스를 하나 더 생성하는 경우에는 ORACLE_SID, ORACLE_HOME 같은 환경변수를 수정해주어야 한다. 수정하는 방법은 .bash_profile을 수정하거나 export 명령어를 사용한다. 하지만 해당 데이터베이스로 접속할 때마다 이렇게 수정하는 것은 번거롭기 때문에 oraenv를 사용하여 환경변수를 더 쉽게 수정할 수 있다.
2-2. oratab
oraenv도 편하지만 항상 ORACLE_HOME 경로를 써주기 귀찮기 때문에 /etc/oratab 파일에 새로운 DB에 대한 정보를 추가해준다. 그러면 oraenv로 접속할 때 ORACLE_HOME 경로를 적지 않아도 된다.
2-3. pfile
파라미터파일은 $ORACLE_HOME/dbs에 위치한다. 따라서 그 위치에 testdb의 pfile을 생성해준다.
그리고 현재 계정의 비밀번호도 설정해준다.
[testdb@host01 ~]$ vi $ORACLE_HOME/dbs/inittestdb.ora
db_name=testdb --필수 파라미터
service_names=testdb
control_files='/u01/app/oracle/oradata/testdb/disk1/control01.ctl','/u01
/app/oracle/oradata/testdb/disk2/control02.ctl --필수 파라미터
shared_pool_size=164m --필수 파라미터
db_cache_size=50m --필수 파라미터
remote_login_passwordfile='EXCLUSIVE' --Password file을 하나의 DB에서만 사용.
undo_tablespace='UNDOTBS1'
db_name, control_files, shared_pool_size, db_cache_size를 설정해주어야 한다.
*remote_login_passwordfile : 관리자 유저의 remote 보안 접속 가능하도록 설정
pfile이 정상적으로 생성된 것을 확인할 수 있다.
3. DB 생성
수동으로 DB를 생성하는 명령어이다.
[testdb@host01 testdb]$ vi cdb.sql
CREATE DATABASE testdb
USER SYS IDENTIFIED BY oracle_4U
USER SYSTEM IDENTIFIED BY oracle_4U
CONTROLFILE REUSE
LOGFILE
GROUP 1 ('/u01/app/oracle/oradata/testdb/disk1/redo01a.log', '/u01/app/oracle/oradata/testdb/disk2/redo01b.log') SIZE 30M REUSE,
GROUP 2 ('/u01/app/oracle/oradata/testdb/disk1/redo02a.log', '/u01/app/oracle/oradata/testdb/disk2/redo02b.log') SIZE 30M REUSE
DATAFILE
'/u01/app/oracle/oradata/testdb/disk1/system01.dbf' SIZE 50M REUSE AUTOEXTEND ON
SYSAUX
DATAFILE '/u01/app/oracle/oradata/testdb/disk1/sysaux01.dbf' SIZE 30M REUSE AUTOEXTEND ON
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/testdb/disk1/temp01.dbf' SIZE 100M REUSE AUTOEXTEND ON
UNDO TABLESPACE UNDOTBS1 DATAFILE '/u01/app/oracle/oradata/testdb/disk1/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL;
- SYS, SYSTEM User의 패스워드를 oracle_4U로 설정
- 파라미터파일에 설정된 Controlfile의 정보대로 Controlfile 생성
- Redo log group을 2개 생성하고 각 그룹에 member 2개씩 생성(member는 서로 다른 디스크에 나누어 저장하는 것이 좋음)
- SYSTEM, SYSAUX, TEMPORARY, UNDO Tablespace 생성
- Character set 설정
- Extent 관리방식을 LOCAL로 설정
- REUSE : 해당 파일이 이미 존재하면 덮어써서 생성
DB 생성은 파라미터를 읽을 수 있는 상태인 nomount 상태에서 가능하다.
[testdb@host01 dbs]$ sqlplus / as sysdba
아래의 명령어들로 DB가 잘 생성되었는지 확인한다.
select name, open_mode from v$database;
select status from v$instance;
select name from v$datafile;
4. catalog.sql, catproc.sql, pupbld.sql 실행
데이터베이스를 수동 생성했을 때 Data Dictionary 조회나, Oracle에서 제공하는 패키지들이 실행되지 않는 문제가 발생한다. 따라서 몇가지 후속작업을 해주어야 한다. 이 후속작업들은 시간이 꽤 걸린다.
4-1. catalog.sql
Data Dictionary를 조회할 수 있는 view를 생성해주는 파일이다. 이 파일을 실행해주어야 Data Dictionary 조회가 가능하다. 이 파일은 $ORACLE_HOME/rdbms/admin에 위치한다.
4-2. catproc.sql
oracle이 제공하는 패키지들을 생성하기 위해 실행해주어야 하는 파일이다. 또한 위에서 catalog.sql 파일을 실행한 후에도 조회되지 않는 딕셔너리 뷰들을 생성해준다.
4-3. pupbld.sql
나중에 새로운 User를 생성하여 접속했을 때 "Error accessing PRODUCT_USER_PROFILE" 이라는 경고가 발생한다. 이를 해결하기 위해 system 유저로 접속하여 pupbld.sql 파일을 실행해주어야 한다.
DB를 생성했으니 TABLESPACE를 생성해보자.
'ORACLE > ADMIN' 카테고리의 다른 글
Oracle Listener 구성(정적등록vs동적등록) (0) | 2020.07.28 |
---|---|
Oracle undo 언두 관리 (0) | 2020.07.21 |
Oracle redo log file, control file 다중화 (0) | 2020.07.20 |
Oracle User 유저 생성 (2) | 2020.07.19 |
Oracle Tablespace 테이블스페이스 생성 (0) | 2020.07.18 |