[oracle] 기존 DB에 database 수동으로 추가하기
기존에 설치되어있는 DB에 datafile위치를 다르게 새로운 database 를 생성하는 예제입니다.
몇시간 고생해서 설치했는데.. 혹시 필요하신분 참고하세요.
0. 들어가기전에…
$ORACLE_HOME 은 오라클 제품이 설치되는 디렉토리
$ORACLE_BASE 는 datafile, control file등이 설치되는 디렉토리
linux는 ORACLE_HOME이 ORACLE_BASE 밑에 들어가 있지만.. SID에 따라 ORACLE_BASE는 변경이 가능하다.
여기서는 database file을 다른 위치에 설치하려고 하기때문에 ORACLE_BASE를 변경한다.
1. 환경변수 세팅
ORACLE_HOME, ORACLE_SID, PATH, LD_LIBRARY_PATH 를 세팅한다.
여기선 기존세팅이 되어있다 보고, ORACLE_SID만 수정한다.
(datafile path를 full path로 잡아줄 생각이기에, $ORACLE_BASE는 변경하지 않아도 된다.)
$ export ORACLE_SID=TESTDB
2. init.ora(pfile) 생성
$ORACLE_HOME/dbs/init.ora 를 생성할 SID용 file로 복사 후 몇가지 변수 조정
$ cp init.ora initTESTDB.ora
[oracle@www dbs]$ diff init.ora initTESTDB.ora
78c78
< db_name=DEFAULT
—
> db_name=TESTDB
92c92
< shared_pool_size = 3500000 # SMALL
—
> # shared_pool_size = 3500000 # SMALL
94c94
< # shared_pool_size = 9000000 # LARGE
—
> shared_pool_size = 9000000 # LARGE
159c159
< control_files = (ora_control1, ora_control2)
—
> control_files = (/home/orahome/oradata/testdb/control1.ctl, /home/orahome/oradata/testdb/control2.ctl)
174c174,178
< #compatible = 8.1.0
—
> compatible = 9.2.0.0.0
> undo_management = auto
> undo_tablespace=undotbs
> background_dump_dest=/home/orahome/logs
> user_dump_dest=/home/orahome/logs
[oracle@www dbs]$
3. nomount 로 startup
$ sqlplus “/nolog”
SQL> conn /as sysdba
SQL> startup nomount
4. create table 실행
SQL> @create_db.sql
[oracle@www ~]$ cat create_db.sql
CREATE DATABASE testdb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 (‘/home/orahome/oradata/testdb/redo01.log’) SIZE 100M,
GROUP 2 (‘/home/orahome/oradata/testdb/redo02.log’) SIZE 100M,
GROUP 3 (‘/home/orahome/oradata/testdb/redo03.log’) SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET KO16KSC5601
NATIONAL CHARACTER SET AL16UTF16
— NATIONAL CHARACTER SET KO16KSC5601
DATAFILE ‘/home/orahome/oradata/testdb/system01.dbf’ SIZE 325M
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE ‘/home/orahome/oradata/testdb/temp01.dbf’
SIZE 20M
UNDO TABLESPACE undotbs
DATAFILE ‘/home/orahome/oradata/testdb/undotbs01.dbf’
SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
/
[oracle@www ~]$
(character set 설정이 잘 안되서.. 그냥 우선 AL16UTF16 으로 잡음)
5. 에러가 나면 alert log 를 확인한다.
6. catalog.sql, catproc.sql 실행
$ORACLE_HOME/rdbms/admin 에 있는
catalog.sql, catproc.sql 을 실행한다.
SQL> @/opt/oracle/product/9.2.0.4/rdbms/admin/catalog.sql
SQL> @/opt/oracle/product/9.2.0.4/rdbms/admin/catproc.sql
7. 자료 백업 및 spfile 생성
SQL> shutdown immediate
[datafile 및 initTESTDB.ora 복사]
SQL> startup
SQL> create spfile from pfile=’/opt/oracle/product/9.2.0.4/dbs/initTESTDB.ora’