Oracle/RAC

Single to RAC (DB변환하기)

에몽이ㅋ 2012. 5. 9. 18:05
참고
http://www.commit.co.kr/101

실습전
설정 및 설치는 일반 RAC구성하는것과 동일하게 구성하되
db를 생성할때에는 cluster database생성말고 single instance로 db를 생성한 후
실습하세요.


환경
DB이름 : oel
DB_SID : oel --> oel1, oel2

single instance to cluster instance
(node1)            (node1+node2)
(이미 database는 공유스토리지에 저장되어있어서 위치이동은 필요없는 상태입니다.)
(기존DB가 공유스토리지에 있지 않다면, catclust.sql 를 실행하기 전에
반드시 공유스토리지에 파일위치를 옮기는 작업이 필요합니다.
예: control파일재생성 및 기존DB파일 백업 & 복구, 등등)



node1

thread2를 위한 redo log생성
SQL> alter database add logfile thread 2 group 4
  2  ('+DATA/oel/redo04.log') size 50M;

SQL> alter database add logfile thread 2 group 5
  2  ('+DATA/oel/redo05.log') size 50M;

SQL> alter database add logfile thread 2 group 6
  2  ('+DATA/oel/redo06.log') size 50M;
Database altered.

SQL> alter database enable public thread 2;
Database altered.


thread2를 위한 undo tablespace생성
SQL> create undo tablespace undotbs2 datafile '+DATA' size 100M autoextend on;
Tablespace created.


파라미터수정을 위한 pfile생성
SQL> create pfile='/home/oracle/init.ora' from spfile;
File created.


데이터파일 위치변경을 위한 controlfile 재생성스크립트생성
(공유스토리지에 설치가 되어있지 않은사용자만 수행하세요, 나중에 데이터 파일위치 변경을 위한 단계입니다.)
SQL> alter database backup controlfile to trace as '/home/oracle/control.sql';
Database altered.


pfile수정및추가
vi /home/oracle/init.ora

*.__db_cache_size=322961408
*.__java_pool_size=4194304
*.__large_pool_size=4194304
*.__pga_aggregate_target=159383552
*.__sga_target=478150656
*.__shared_io_pool_size=0
*.__shared_pool_size=138412032
*.__streams_pool_size=0

*.undo_management=auto
oel1.undo_tablespace='UNDOTBS1'
oel2.undo_tablespace='UNDOTBS2'
*.cluster_database_instances=2
oel1.instance_number=1
oel2.instance_number=2
oel1.thread=1
oel2.thread=2
*.cluster_database=false
# cluster_database : 추후 모든 설정이 완료되고나서 true로 바꿔야함


필요한 경로생성
SQL> show parameter audit
SQL> show parameter background
SQL> show parameter core
SQL> show parameter user
위 결과를 참고하여 node2에 경로생성
[oracle@oel2 ~]$ mkdir -p /app/oracle/admin/oel/adump
[oracle@oel2 ~]$ mkdir -p /app/oracle/diag/rdbms/oel/oel/trace
[oracle@oel2 ~]$ mkdir -p /app/oracle/diag/rdbms/oel/oel/cdump
[oracle@oel2 ~]$ mkdir -p /app/oracle/diag/rdbms/oel/oel/trace


파라미터파일복사(노드1, 노드2)
[oracle@oel1 ~]$ cp init.ora $ORACLE_HOME/dbs/initoel1.ora
[oracle@oel1 ~]$ scp ~/init.ora oel2:$ORACLE_HOME/dbs/initoel2.ora


패스워드파일생성(양쪽노드 둘다에서 실행)
[oracle@oel1 ~]$ orapwd file=$ORACLE_HOME/dbs/orapwoel1 password=oracle
[oracle@oel2 ~]$ orapwd file=$ORACLE_HOME/dbs/orapwoel2 password=oracle


single instance shutdown
SQL> shut immediate

[oracle@oel1 ~]$ export ORACLE_SID=oel1
[oracle@oel1 ~]$ sqlplus  / as sysdba
SQL> startup


변환하기
SQL> @?/rdbms/admin/catclust (temporary tablespace가 있어야합니다.)
완료 후
SQL> shut immediate


양쪽노드의 파라미터파일 수정
*.cluster_database=true

이후 .bash_profile의 ORACLE_SID부분을 수정

모든 노드에서 sqlplus로 접속하여 startup

grid의 resource등록
저는 따로 서비스 등록할 필요가 없었지만, crs_stat해보시고 서비스가 등록안된분들은 참고사이트문서를 참고하셔서 추가하세요.