본문 바로가기

카테고리 없음

ORACLE DATA GUARD 10g INSTALLATION v1.0

ORACLE DATA GUARD 10g INSTALLATION (SINGLE HOST)

 

From

 

*주의 사항이대로 진행하면 생성에 실패할 확률이 매우 높음 ;;*

*특히 log_archive_dest_n 에 대해서는 추후 따로 이야기할 예정이니 참고

 

1.    DATA GUARD (10g) INSTALLATION

환경정보

-SINGLE HOST, PHYSICAL STANDBY, USING SQL(수동구성)

 

테스트용으로 같은 PC 에 구축하며 SQL 을 이용해 수동으로 구축한다. 여기서 구축하는 STANDBY  PHYSICAL STANDBY 이다.

 

PRIMARY DB 의 정보는 다음과 같다.

 

NO ARCHIVE LOG

NO FLASHBACK

SID : ORCL

 

2.    INSTALLATION OUTLINE

 

시간순서대로 나열한 목록이다.

PHYSICAL STAND BY DB DB_UNIQUE_NAME STBY 로 명명했다.

 

-PRIMARY DB SHUTDOWN

-PRIMARY DB MOUNT

-ARCHIVE 설정

-FLASHBACK 설정

-기타 PARAMETER 설정(*다수설정*)

-TNS : LOCAL NAMING 설정

-STAND BY CONTROLFILE 생성

-PRIMARY DB PFILE 생성

-PRIMARY DB SHUTDOWN

-DB 복사(cold backup 이용)

-CONTROL FILE 복사

-INIT PARAMETER 설정

-PHYSICAL STANDBY DB MOUNT

-PRIMARY DB OPEN

-LOG 전송 확인

 

3.    PRACTICE

 

-PROFILE 설정

ORACLE_SID=stby export 했다. DB 엔진이 동일하기 때문에

다른설정은 건드리지 않았다.

 

-PRIMARY DB SHUTDOWN

SHUTDOWN IMMEDIATE

 

-PRIMARY DB MOUNT

STARTUP MOUNT

 

-ARCHIVE 설정

ALTER DATABASE ARCHIVELOG

 

*log_archive_dest_n 에 설정가능한 내용은 상당히 많다. 여기서는 단순히 돌아갈수 있게만 정의 했고 내용을 뜯어보면 잘못 된 부분도 있을 수 있다. (있을거란 확신이 든다;;)*

 

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=

’LOCATION=/u01/oradata/flash_recovery_area/ORCL/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL’ SCOPE=BOTH

 

*문서의 LINUX 상에서 다른 문자로 인지된다. 수정해야함*

 

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STBY VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STBY' SCOPE=BOTH

 

-FLASHBACK 설정

db_recovery_file_dest 설정

db_recovery_file_dest_size 설정

 

ALTER DATABASE FLASHBACK ON

 

-기타 PARAMETER 설정(*다수설정*)

DB_UNIQUE_NAME 확인

 

alter system set db_file_name_convert=

'/u01/oradata/orcl','/u01/oradata/stby' scope=spfile

 

alter system set log_file_name_convert=

'/u01/oradata/orcl','/u01/oradata/stby' scope=spfile

 

-TNS : LOCAL NAMING 설정

*여기서는 같은 리스너를 사용했다. /*+ 새로운 리스너 추가 */

 

<<LISTENER>>

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = orcl)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

    )

    (SID_DESC =

      (SID_NAME = stby)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

    )

 

  )

 

LISTENER =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = ocp.mycorpdomain.com)(PORT = 1521))

  )

 

<<TNSNAMES>>

 

ORCL =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = ocp.mycorpdomain.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SID = orcl)

    )

  )

 

stby =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = ocp.mycorpdomain.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = stby)

    )

  )

 

-STAND BY CONTROLFILE 생성

alter database create standby controlfile

as '/home/oracle/control01.ctl';

 

-PRIMARY DB PFILE 생성

 

-PRIMARY DB SHUTDOWN

SHUTDOWN IMMEDIATE

 

-DB 복사

cp -R orcl stby

 

-CONTROL FILE 복사

ALTER DATABASE BACKUP CONTROLFILE 에 정의했던 경로로 이동해

해당 파일을 원하는 경로에 복사한다.

여기서는 DATA FILE 과 같은 경로에 넣었다.

 

ocp@orcl : /home/oracle> cp control01.ctl /u01/oradata/stby/control02.ctl

ocp@orcl : /home/oracle> cp control01.ctl /u01/oradata/stby/control03.ctl

ocp@orcl : /home/oracle> mv control01.ctl /u01/oradata/stby/

 

-INIT PARAMETER 설정

앞서 만들어 놓은 PRIMARY DB PFILE init{$ORACLE_SID}.ora 로 복사한다.

 

<<Initstby.ora 수정 파라미터>> *여기서는 sid stby 를 사용했다.*

 

db_file_convert, db_log_convert, db_name 를 제외하고 기존 orcl 부분을 stby 로 변경한다.

(실제로 stand by db db_file_convert db_log_convert optional parameter 로 삭제했다. 이 파라미터는 단순히 경로를 일괄수정하기 위한 편의 제공으로 보면 된다.)

 

변경에 영향받는 파라미터는 아래와 같다.

 

각종 dest (ex: audit_dump_dest, background_dump_dest, core_dump_dest, user_dump_dest)

 

control_files

 

db_unique_name

 

log_archive_dest_n

 

*** log_archive_dest_n stby Primary DB 라 상정하고 셋팅한다. ***

 

*.log_archive_dest_1='LOCATION=/u01/oradata/flash_recovery_area/STBY/archivelog

VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STBY' *.log_archive_dest_2='SERVICE=STBY VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL'

 

*위의 파라미터는 archive log directory로 동일 위치를 사용하면 log 이동을 눈으로 확인하기 어렵기에 다른 경로를 설정했다.*

 

PARAMETER 에 셋팅은 했지만 존재하지 않는 폴더에 대해서는 CREATE 한다.

Ex : bdump, cdump, udump

 

-CREATE PASSWORD FILE OF PHYSICAL STANDBY

Stby password file 을 생성한다.

Remote_login_passwordfile default exclusive 값으로 위에선 따로 수정하지 않았다.

 

-PHYSICAL STANDBY DB MOUNT

ORACLE SID STBY 로 변경 후 MOUNT 한다.

위 과정에서 존재하지 않는 경로가 있게되면 에러가 난다. 에러가 날 소지가 있는

OPTIONAL PARAMETER 는 배제하는게 하나의 방법이 될 수 있다.

(EX : AUDIT_DUMP_DEST)

 

-PRIMARY DB OPEN

 

-LOG 전송 확인

<in Primary>

Alter system switch logfile (2~3회 반복)

 

select dest_id,error

from v$archive_dest

 

위 쿼리를 수행시 각 dest_id 에 대해 error 컬럼이 비어있으면 정상이다.

 

<in standby>

 

SQL> select process,status from v$managed_standby;

 

PROCESS   STATUS

--------- ------------

ARCH      CONNECTED

ARCH      CONNECTED

 

SQL> /

 

PROCESS   STATUS

--------- ------------

ARCH      CONNECTED

ARCH      CONNECTED

RFS       IDLE

 

SQL> /

 

PROCESS   STATUS

--------- ------------

ARCH      CONNECTED

ARCH      CONNECTED

RFS       WRITING

 

Stand by db 에서 log 를 받아 쓰기 시작하면 위와같이 RFS 의 상태가 WRITING 으로 바뀐다. 최초 standby db 기동 후 log 전송이 아직 없을 때는 RFS 프로세스가 없다. 위와같이 필요에 의해 한번 기동된 이래로는 작동상태가 유지된다. (위의 경우엔 WRITING / IDLE )

 

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/oradata/flash_recovery_area/STBY/archivelog/

Oldest online log sequence     49

Next log sequence to archive   0

Current log sequence           51

SQL> show parameter log_archive_dest_1

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_1                   string      location=/u01/oradata/flash_re

                                                 covery_area/STBY/archivelog/ v

                                                 alid_for=(all_logfiles,primary

                                                 _role) db_unique_name=stby

 

위의 경로에 이동해 확인하면 archived log file 을 확인할 수 있다.

 

4.    ERROR INFO

A.     V$archive_dest

SQL> select dest_id,error

  2  from v$archive_dest;

 

   DEST_ID ERROR

---------- -----------------------------------------------------------------

         1

         2 ORA-01031: insufficient privileges

         3

         4

         5

         6

         7

         8

         9

        10

 

10 rows selected.

 

위의 경우 stby 에 대해 password file 이 생성되어 있지 않으면 나타날 수 있다.