1.EM을 이용한 Oracle SQL Performance Analyzer

   

  • TEST환경 11.2.0.3 (SID=test) / 11.2.0.3 (SID=orcl) - 성공,
  • 11.2.0.3(SID=test) 9.2.0.8(SID=orcl) - 실패
  • Hr 유저에게 dba 권한을 부여하여 TEST진행.

       

2.문제가 되었던 오라클 패키지

  • SYS.DBMS_ADVISOR

    SYS>cd {ORACLE_HOME}/rdbms/admin/@dbmsadv.sql

       

  • SYS.DBMS_SQLPA

    SYS>cd {ORACLE_HOME}/rdbms/admin/dbmsspa.sql

       

    -해당 패키지가 존재 해야 된다. 10.2.0.4부터 DBMS_SQLPA가 존재하는 것으로 예상 됨.

 

  • 9i 같은 경우 위의 해당 DBMS 패키지가 존재하지 않아서 EM으로 동작할 경우 해당 패키지에러가 발생합니다 그래서 일단은 SPA의 전반적인 과정을 확인해 보기 위해서 두 개의 11G TEST 서버에서 진행 하였습니다.

       

   

  • EM에서 로그인하게 되면 성능 TAB에서 해당 SQL문 검색 및 튜닝집합 생성 후, SQL 성능분석기를 통하여 2개의 DB에 각각 SQL문을 돌린 실행계획을 확인할 수 있습니다.

       


       

3.SQL 검색을 통하여 해당 쿼리문을 추출하여 SQL튜닝 집합을 만듭니다.

  • 데이터 소스 및 필터 조건을 조절하여, 해당 쿼리문을 검색한합니다.
  • 검색 후, SQL 튜닝 집합에 저장 부분에서 새 SQL튜닝 집합 이름지정 후 저장합니다.

     

   

   

4.SQL 튜닝 집합 확인

  • SQL 튜닝 집합으로 만들어진 해당 이름과 스키마 쿼리문을 확인할 수 있다.

       

   

   

5.SQL 성능 분석기(SQL Performance Analyzer)

  • 다양한 형태의 성능 분석 방법들이 준비되어 있습니다.
  • 대략적인 TEST 순서는 아래와 같습니다.
    • 환경설정
    • SQL 튜닝 집합에 준하는 SQL Performance Analyzer 작업생성
    • 초기 환경에서 SQL Tuning Set 재생
    • 변경된 환경에서 SQL Tuning Set 재생(DB link를 이용하여 원격 DB에 접속)
    • 단계 2와 단계 3비교
    • 비교 보고서 보기

         

         

     

  • 여러가지 형식 중하나인 안내식 워크플로우를 보게 되면 단계별로 SQL 성능 분석기를 TEST할 수 있습니다.

       

   

  • TEST 완료 후 각 서버에서 SQL을 실행하여 얻은 결과보고서를 한눈에 볼 수 있습니다.
  • 아래쪽 비교 보고서를 보게 되면 SQL set으로 만들어 놓았던 쿼리문들에 대해서 자세하게 비교하여 볼 수 있습니다.

       

   

   

  • 하나의 쿼리문에 대하여 수집된 실행 계획을 확인할 수 있습니다.

       

   

  • 다른 옵션의 창인데, 수행 과정은 위와 동일하게 진행됩니다.

       

   

   

   

4.9.2.0.8i와 11.2.0.3를 가지고 위와 동일한 TEST를 하였지만 실패.

  • 그 원인 중에 하나는 9i에서는 oracle DBMS 패키지 중에 SYS.DBMS_ADVISOR, SYS.DBMS_SQLPA가 존재하지 않아서 스크립트가 돌아갈 때 아래와 같은 에러가 발생합니다.

       

  • 그래서 해당 패키지를 11G에서 설치 SQL문을 가지고 와서 패키지를 생성해 보았지만, 버전 차이로 인한 새로운 기능이라 추가적으로 다른 패키지 부족에러가 발생하였습니다.

       

  • EM만으로는 9i->11g test는 할 수 없고, 스크립트를 이용하여 진행할 경우 가능할 것으로 예상됩니다.

https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_afrLoop=415397735012079&id=560977.1&_afrWindowMode=0&_adf.ctrl-state=y509e7up1_40

   

   

ORA-06512: "SYS.PRVT_ADVISOR", 2735행 ORA-06512: "SYS.DBMS_ADVISOR", 241행 ORA-06512: "SYS.DBMS_SQLPA", 342행 ORA-06512: "SYS.DBMS_SQLPA", 359행 ORA-06512: 1행

  

   

   

   

<참고문서>

https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_afrLoop=415397735012079&id=560977.1&_afrWindowMode=0&_adf.ctrl-state=y509e7up1_40

   

http://docs.oracle.com/cd/E14072_01/server.112/e10822/tdppt_sqltune.htm#TDPPT160

   

https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_afrLoop=403659916853090&id=562899.1&_afrWindowMode=0&_adf.ctrl-state=7b5uqhddb_177

   

https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?_afrLoop=403933301039403&id=742644.1&_afrWindowMode=0&_adf.ctrl-state=7b5uqhddb_186

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Datapump를 이용한 백업!! //백업전 준비사항 확인 후 백업시작할 것.

   

1. 리스너 상태확인

   

   

1-1  "lsnrctl status" 를 통하여 현재 리스너 연결 상태를 확인한다.

   

1-2  리스너가 연결 되어 있다면 "lsnrctl stop"을 통하여 연결을 잠시 끊어준다. 

       (DB 끄고 난 뒤 다시 리스너 연결을 해도 됨.)

   

1-3  현재 DB를 사용하고 있는 사용자들을 초기화 하기 위함.

   

1-4  다시 리스너 연결을 해도 된다. "lsnrctl start"

   

<현재 리스너가 연결되지 않은 상태에서 시작했지만 실제 현장에서는 연결 되어 있었습니다.>

   

2. 리스너 정지 및 디렉토리 생성

   

   

   

2-1  backup을 해도 되는 디렉토리를 마운트 시켜주면, 그곳에 자신이 정리하기 쉽게 mkdir /경로/datapump 디렉토리를 만들어 놓는다.

   

2-2  편의상 디렉토리를 만들었기 때문에 만들지 않아도 상관없다.

   

   

3. DB 사용량 확인하기(백업하기 전 준비사항 참고)

   

   

3-1  백업을 실행 하기 전 한번더 현재 데이터 사용량을 확인한다.

   

3-2  현재 DB 사용량 확인

       select sum (bytes)/1024/1024 from DBA_data_files;  

       select sum (bytes)/1024/1024 from DBA_free_space;

   

3-3  현재 사용하는 DB의 수 확인 

       cd $ORACLE_BASE/admin 들어가서 확인

       cd $ORACLE_HOME/dbs/ 들어가서 init 파일 확인

3-4  추가적인건 "백업하기전에 해야될 것들!!" 을 확인하자! 

   

   

4. DB 정지 후 재시작

   

   

4-1 본격적으로 datapump 백업을 하기전에 몇가지 선수해야될 사항들이 있다.

   

4-2  디렉토리 설정   

       create or replace directory dpump_dir as '/backup/datapump';

   

4-3  디렉토리 권한 설정

       grant read, write on directory dpump_dir to system ;

   

※ dpump_dir 명칭을 변경해되 된다, 다만 일치 시켜줘야한다.

   

   

5. Datapump export/import 시작

   

   

5-1 이제는 실제로 datapump를 실행해서 백업을 받을 시간이다.

   

5-2 datapump export 명령어

     expdp system/oracle directory=dpump_dir dumpfile=full_dump.dmp logfile=full_dmp.log job_name=expdp_full full=y; 

   

5-3 datapump import 명령어

      impdp system/oracle directory=dump_dir dumpfile=full_dump.dmp logfile=full_dmp.log job_name=expdp_full full=y

   

※ system/oracle 의 경우 system 비밀번호가 다를 수 있다.

※ 해당 dump_dir의 이름이 일치해야 된다.

※ 백업 파일명에 백업한 날짜를 넣어 주면 좋다.

   

   

6. Datapump export 성공 및 오류발생

   

   

   

6-1 만약 아무런 오류 없이 성공했다면 datapump는 끝이 난다.

6-2 .dmp파일이 만들어 진 것을 볼 수있다.(.log 파일로 백업의 현재 진행상황 및 상태를 확인할 수 있다.)

   

하지만 오류가 나게된다면!!

대부분 초반에 오류가 나타난다. 

   

   

6-3  위 그림과 같은 XML 스키마관련 테이블 에러가 발생한다면, 해결방법은 2가지이다.

   

6-4 첫번째는 datapump를 포기하고 기존의 export백업을 실행하는 방법.

   

6-5 두번째는 오류가 발생한 해당 테이블만 export백업으로 받는 것이다. 

      exp system/oracle tables=SYS.tableName 

                 file=backup/datapump/exp_full_20110825.dmp log=/home/oracle/datapump/exp_full_20110825.log 

   

   

※ SYS 부분에 해당 테이블 이름을 명시하고 위치를 지정해주면 된다.

※ import를 해야되는 경우에는 각각 import해주어야 한다.

   

   

추가적인 오류로 인하여 datapump를 수행하지 못하고 export백업을 하게 될 경우도 있다.

다음에는 export백업에 대하여 정리하겠습니다.

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 

1.ADG DGMGRL

  • Data Guard 를 관리하기 위한 CLI (command line interface) 이다.

    수동으로 관리하게 되면 장애시점에서 수동으로 Primary, standby를 바꿔줘야 하지만 한번 설정하게 되면 자동으로 관리를 해주는 controller입니다.

       

2.DGMGRL 접속 및 명령어

localhost@orcl : /home/oracle> dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - Production

   

Copyright (c) 2000, 2009, Oracle. All rights reserved.

   

Welcome to DGMGRL, type "help" for information.

Connected.

DGMGRL>

DGMGRL>

DGMGRL> help

   

The following commands are available:

   

add Adds a standby database to the broker configuration

connect Connects to an Oracle database instance

convert Converts a database from one type to another

create Creates a broker configuration

disable Disables a configuration, a database, or fast-start failover

edit Edits a configuration, database, or instance

enable Enables a configuration, a database, or fast-start failover

exit Exits the program

failover Changes a standby database to be the primary database

help Displays description and syntax for a command

quit Exits the program

reinstate Changes a database marked for reinstatement into a viable standby

rem Comment to be ignored by DGMGRL

remove Removes a configuration, database, or instance

show Displays information about a configuration, database, or instance

shutdown Shuts down a currently running Oracle database instance

sql Executes a SQL statement

start Starts the fast-start failover observer

startup Starts an Oracle database instance

stop Stops the fast-start failover observer

switchover Switches roles between a primary and standby database

   

Use "help <command>" to see syntax for individual commands

   

DGMGRL>

   

   

3.DGMGRL Configuration 생성

[Primary DB]

   

ocp@orcl : /home/oracle> dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - Production

   

Copyright (c) 2000, 2009, Oracle. All rights reserved.

   

Welcome to DGMGRL, type "help" for information.

Connected.

   

DGMGRL>

create configuration 'test_DG' as

primary database is 'orcl'

connect identifier is 'orcl';

   

Error:

ORA-16525: the Data Guard broker is not yet available

ORA-06512: at "SYS.DBMS_DRS", line 157

ORA-06512: at line 1

   

[해결방안]

Database dg_broker_start 모두 false이므로 위와 같은 Error 발생함.

Primary, standby 모두 true 변경(DG Broker start)

Alter system set dg_broker_start=true;

   

DGMGRL> show configuration;

   

Configuration - test_DG

   

Protection Mode: MaxPerformance

Databases:

orcl - Primary database

   

Fast-Start Failover: DISABLED

   

Configuration Status:

DISABLED

   

  

[Primary DB] - standby DB 추가

   

DGMGRL>

add database 'stby' as

connect identifier is 'stby';

   

Database "stby" added

   

   

DGMGRL> show configuration;

   

Configuration - test_DG

   

Protection Mode: MaxPerformance

Databases:

orcl - Primary database

stby - Physical standby database

   

Fast-Start Failover: DISABLED

   

Configuration Status:

DISABLED

   

DGMGRL> enable configuration;

Enabled.

   

DGMGRL> show configuration;

   

Configuration - test_DG

   

Protection Mode: MaxPerformance

Databases:

orcl- Primary database

stby- Physical standby database

   

Fast-Start Failover: DISABLED

   

Configuration Status:

SUCCESS

  

   

   

4.DGMGRL Switch Over

  • 장애가 발생할 경우 Primary DB-> standby DB Switch Over 기능

DGMGRL> switchover to stby;

Performing switchover NOW, please wait...

New primary database "stby" is opening...

Operation requires shutdown of instance "orcl" on database "orcl"

Shutting down instance "orcl"...

ORACLE instance shut down.

Operation requires startup of instance "orcl" on database "orcl"

Starting instance "orcl"...

ORACLE instance started.

Database mounted.

Database opened.

Switchover succeeded, new primary is "stby"

   

   

[참고문헌]

http://h391106.tistory.com/231

http://docs.oracle.com/cd/B19306_01/server.102/b14239/concepts.htm

http://h391106.tistory.com/238

http://download.oracle.com/docs/cd/E11882_01/server.112/e17023/dgmgrl.htm

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


1.ADG Configuration

1-1 Primary DB

Primary

   

SQL> select dest_name,status from v$archive_dest_status where dest_name in ('LOG_ARCHIVE_DEST_1','LOG_ARCHIVE_DEST_2');

   

DEST_NAME

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

STATUS

---------

LOG_ARCHIVE_DEST_1

VALID

   

LOG_ARCHIVE_DEST_2

VALID

  

   

1-2 Standby DB

Standby(mount)

   

SQL> select process,status from v$managed_standby;

   

PROCESS STATUS

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

ARCH CONNECTED

ARCH CONNECTED

ARCH CONNECTED

ARCH CLOSING

RFS IDLE

RFS IDLE

RFS IDLE

   

7 rows selected.

   

SQL> recover managed standby database using current logfile disconnect from session;

Media recovery complete.

   

SQL> select process,status from v$managed_standby;

   

PROCESS STATUS

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

ARCH CONNECTED

ARCH CONNECTED

ARCH CONNECTED

ARCH CLOSING

RFS IDLE

RFS IDLE

RFS IDLE

MRP0 APPLYING_LOG

   

8 rows selected.

  

   

1-3 Active Standby Database startup

Standby(mount)

   

SQL> alter database recover managed standby database cancel;

   

Database altered.

   

SQL> alter database open;

   

Database altered.

   

SQL> select process,status from v$managed_standby;

   

PROCESS STATUS

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

ARCH CONNECTED

ARCH CONNECTED

ARCH CONNECTED

ARCH CLOSING

RFS IDLE

RFS IDLE

RFS IDLE

   

7 rows selected.

   

SQL> alter database recover managed standby database using current logfile disconnect ;

   

Database altered.

   

SQL> select process,status from v$managed_standby;

   

PROCESS STATUS

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

ARCH CONNECTED

ARCH CONNECTED

ARCH CONNECTED

ARCH CLOSING

RFS IDLE

RFS IDLE

RFS IDLE

MRP0 APPLYING_LOG

   

  1. rows selected.

   

2.ADG 동작여부확인

Primary DB

SQL> select database_role, open_mode from v$database;

   

DATABASE_ROLE OPEN_MODE

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

PRIMARY READ WRITE

   

SQL> select i.instance_name, i.status instance_status, d.name dbname, d.database_role db_role,

2 d.switchover_status switchover_status , d.protection_mode

3 from v$database d, v$instance i;

   

INSTANCE_NAME INSTANCE_STA DBNAME DB_ROLE SWITCHOVER_STATUS

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

PROTECTION_MODE

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

orcl OPEN ORCL PRIMARY TO STANDBY

MAXIMUM PERFORMANCE

  

Standby DB

   

SQL> select database_role, open_mode from v$database;

   

DATABASE_ROLE OPEN_MODE

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

PHYSICAL STANDBY READ ONLY WITH APPLY

   

SQL> select i.instance_name, i.status instance_status, d.name dbname, d.database_role db_role,

2 d.switchover_status switchover_status , d.protection_mode

3 from v$database d, v$instance i;

   

INSTANCE_NAME INSTANCE_STA DBNAME DB_ROLE SWITCHOVER_STATUS

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

PROTECTION_MODE

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

stby OPEN ORCL PHYSICAL STANDBY NOT ALLOWED

MAXIMUM PERFORMANCE

   

  • Primary alert Log file /Standby alert Log file에서 sequence number 일치하는지 확인 한다.

       

3.ADG 동기화 확인

  • Primary 에서 유저 등록 및 테이블생성과 같은 DB작업을 할 경우, Standby에도 잘 반영이되는지 확인해야 합니다.

SQL > create user test identified by test

SQL > create table test (a char(10)

   

   

[참고문헌]

http://h391106.tistory.com/231

http://docs.oracle.com/cd/B19306_01/server.102/b14239/concepts.htm

http://h391106.tistory.com/238

http://download.oracle.com/docs/cd/E11882_01/server.112/e17023/dgmgrl.htm

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 

1.Oracle Active DataGuard

   

 

   

  • Primary Database 와 Standby Database 로 구성되며 하나의 Primary Database 에 최대 9개의 Standby Database 가 구성될 수 있다.

       

  • Primary 측의 변경사항은 Redo Logs 에 기록되는데 이는 백그라운드 프로세스 (LGWR 혹은 ARCn) 에 의해 Standby 측에 Oracle Net 을 통해 전파된다.

   

  • 전파된 변경 내역은 Standby Redo Log 에 쓰였다가 Database 에 적용된다.


[참고 사이트]   

http://h391106.tistory.com/231

   

2.ADG Installation

   

- Environment(vmware)

구분

Host IP

OS Version

Oracle SID

DB Version

Priamry

192.168.22.3

GNU / LINUX

orcl

Oracle 11.2.0.3

Standby

192.168.22.10

GNU / LINUX

Stby

Oracle 11.2.0.3

   

2-1 Listener / tns정보(Priamry/Standby)

Priamry

   

ORCL =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

   

SID_LIST_ORCL =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

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

(SID_NAME = orcl)

)

)

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.3)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

   

  

Standby

   

STBY =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

   

SID_LIST_STBY =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = stby)

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

(SID_NAME = stby)

)

)

   

   

stby =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.10)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = stby)

)

)

  

   

2-2 ORCL / STBY 각 서버별 DB 설치 Directory 일치(Priamry/Standby)

  • Source DB(ORCL)의 데이터를 그대로 옮겨와야 되기 때문에 거의 동일하게 구성하되 Oracle SID만 변경하여 생성할 것.
  • Vmware이기 때문에 ORCL 서버를 복사하여 DBCA로 DB만 제거한 뒤 해당 디렉토리의 SID 명만 변경하여 세팅해도 됨.

[Oracle 유저]

$Mkdir -p /home/oracle/arch

$Mkdir -p u01/app/oracle/admin/stby/adump

$Mkdir -p u01/app/oracle/admin/stby/dpdump

$Mkdir -p u01/app/oracle/admin/stby/pfile

$mkdir -p /u01/app/oracle/diag/rdbms/stby/stby/Trace

$Mkdir -p /u01/app/oracle/oradata/stby

   

   

2-3 Standby logfile 생성

  • 기존에 가지고있는 Redolog file의 크기와 같아야 되고 개수가 하나 더 많이 생성해 해야 된다.(Redolog file =3 /Standby logfile = 4)

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby01.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby02.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby03.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby04.log' size 50m;

   

2-4 DB Parameter / status 변경

   

SQL> alter system set log_archive_dest_1='location= /home/oracle/arch mandatory' scope=both;

   

SQL> alter system set fal_client=orcl scope=both;

   

SQL> alter system set fal_server=stby scope=both;

   

SQL> alter system set standby_file_management = auto scope=both;

   

SQL> alter system set log_archive_config='dg_config=(orcl,stby)' scope=both;

   

SQL> alter system set log_archive_dest_2='service=stby async valid_for=(online_logfile,primary_role) db_unique_name=stby' scope=both;

   

SQL> ALTER DATABASE FORCE LOGGING;

   

2-5 Archive mode 설정

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

   

2-6 Password file / Parameter file 복사(ORCL->STBY)

ORCL-> STBY

$ cp /u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl

   

$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/orapwstby

$ vi /u01/app/oracle/product/11.2.0/db_1/dbs/initstby.ora

db_name=orcl

db_unique_name=stby

   

2-7 Data 이관 및 DB startup(ORCL->STBY)

  • Orcl의 정보를 바탕으로 Oracle SID를 STBY로 변경하여 DB를 Startup 시켜준다.
  • 해당 방안에는 HOT Backup을 이용한 방법, Rman을 이용한 방법 외 다양한 방법으로 ORCL과 동일하게 DB를 구성하여 올려준다.(db_unique_name 만 STBY로 변경)

   

[pfile 참조]

localhost@stby : /u01/app/oracle/product/11.2.0/db_1/dbs> vi initstby.ora

   

orcl.__db_cache_size=121634816

stby.__db_cache_size=125829120

orcl.__java_pool_size=4194304

stby.__java_pool_size=4194304

orcl.__large_pool_size=4194304

stby.__large_pool_size=4194304

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

stby.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=79691776

stby.__pga_aggregate_target=79691776

orcl.__sga_target=234881024

stby.__sga_target=234881024

orcl.__shared_io_pool_size=0

stby.__shared_io_pool_size=0

orcl.__shared_pool_size=100663296

stby.__shared_pool_size=96468992

orcl.__streams_pool_size=0

stby.__streams_pool_size=0

*.archive_lag_target=0

*.audit_file_dest='/u01/app/oracle/admin/stby/adump'

*.audit_trail='db'

*.cluster_database=FALSE

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/stby/control01.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

*.db_name='orcl'

*.db_recovery_file_dest_size=10737418240

*.db_recovery_file_dest='/home/oracle/arch'

*.db_unique_name='stby'

*.dg_broker_start=TRUE

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=stbyXDB)'

*.fal_client='stby'

*.fal_server='orcl'

*.log_archive_config='dg_config=(orcl,stby)'

*.log_archive_dest_1='location=/home/oracle/arch'

*.log_archive_dest_2='service=stby lgwr async valid_for=(online_logfile,primary_role) db_unique_name=stby'

*.log_archive_dest_state_2='ENABLE'

   

[RMAN 스크립트 참조]

run {

duplicate target database for standby from active database

dorecover

spfile

parameter_value_convert 'orcl','stby'

set db_unique_name='stby'

set control_files='/u01/app/oracle/oradata/stby/control01.ctl'

set db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

set log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

set cluster_database='FALSE'

set fal_client='stby'

set fal_server='orcl'

set log_archive_dest_1='location=/home/oracle/arch'

set log_archive_dest_2='service=orcl LGWR ASYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=orcl'

set log_archive_config='dg_config=(orcl,stby)'

set service_names='stby';

sql "alter system archive log current";

CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;

}

   

[참고문헌]

http://h391106.tistory.com/231

http://docs.oracle.com/cd/B19306_01/server.102/b14239/concepts.htm

http://h391106.tistory.com/238

http://download.oracle.com/docs/cd/E11882_01/server.112/e17023/dgmgrl.htm

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 

1.OGG Configuration(단방향 DDL,DML)

1-1 Create and start Manager

  • OGG MGR 포트 및 Trail파일 설정(Source)

       

    GGSCI (ocp.mycorpdomain.com) 2> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    GGSCI (ocp.mycorpdomain.com) 3> edit params mgr

PORT 7809

   

userid oggmgr password oracle

   

PURGEOLDEXTRACTS ./dirdat/et*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEOLDEXTRACTS ./dirdat/rt*, USECHECKPOINTS, MINKEEPDAYS 3

GGSCI (ocp.mycorpdomain.com) 4>start mgr

   

GGSCI (ocp.mycorpdomain.com) 5> info mgr

   

Manager is running (IP port ocp.mycorpdomain.com.7809).

  

  • OGG MGR 포트 및 Trail파일 설정(Target)

    GGSCI (ocp.mycorpdomain.com) 2> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    GGSCI (ocp.mycorpdomain.com) 5> edit params mgr

       

PORT 7810

   

PURGEOLDEXTRACTS ./dirdat/et*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEOLDEXTRACTS ./dirdat/rt*, USECHECKPOINTS, MINKEEPDAYS 3

GGSCI (ocp.mycorpdomain.com) 7> start mgr

   

GGSCI (ocp.mycorpdomain.com) 7> info mgr

   

Manager is running (IP port ocp.mycorpdomain.com.7810).

   

1-2 Create extract/Data-pump group(Source)

  • EXTRACT

    GGSCI (ocp.mycorpdomain.com) 8> add extract extora, tranlog, begin now

       

    GGSCI (ocp.mycorpdomain.com) 9> edit params EXTORA

--

-- Extract Parameter File

--

EXTRACT EXTORA

USERID oggmgr, PASSWORD oracle

   

TRANLOGOPTIONS OPENARCHIVEIMMEDIATE

THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000

TRANLOGOPTIONS EXCLUDEUSER OGGMGR, EXCLUDEUSERID 54

   

EXTTRAIL ./dirdat/et

REPORTCOUNT EVERY 5 MINUTES, RATE

   

-- Use DDL parameter to configure support for all mapped DDL operations

DDL INCLUDE MAPPED

DDLOPTIONS ADDTRANDATA, REPORT

   

-- Table/Sequence List

TABLE SCOTT.*;

SEQUENCE SCOTT.*;

   

GGSCI (ocp.mycorpdomain.com) 10> add exttrail ./dirdat/et, extract extora

  

  • Data-PUMP

    GGSCI (ocp.mycorpdomain.com) 11>add extract pumpora, exttrailsource ./dirdat/et

       

    GGSCI (ocp.mycorpdomain.com) 12> edit params PUMPA

--

-- Data Pump Parameter File

--

EXTRACT PUMPA

PASSTHRU

RMTHOST 192.168.22.10, MGRPORT 7810

RMTTRAIL ./dirdat/rt

REPORTCOUNT EVERY 5 MINUTES, RATE

   

-- DDL Option

--DDL INCLUDE MAPPED

--DDLOPTIONS REPORT

--DDLERROR DEFAULT ABEND

   

-- Table/Sequence List

TABLE SCOTT.*;

SEQUENCE SCOTT.*;

   

GGSCI (ocp.mycorpdomain.com) 13> add rmttrail ./diradat/rt, extract pumpora

  

[주의사항]

- Trail File명이 혼돈하지 않고 적절하게 사용할 수 있도록 주의 해야 한다.

(EXTRACT(./diradat/et) 파일을 기반으로 Data-PUMP(./diardata/rt)를 생성해야 함으로 파일 명을 혼돈하지 말고 사용할 것.

   

1-3 Create Chekpoint Table(Target)

GGSCI (ocp.mycorpdomain.com) 14> add checkpointtable oggmgr.ogg_checkpoint

  • Oggmgr 유저에 해당 테이블 생성 확인

   

1-4 Create Replicat Group(Target)

GGSCI (ocp.mycorpdomain.com) 15>

add replicat repora, exttrail ./dirdat/rt, checkpointtable oggmgr.ogg_checkpoint

   

GGSCI (ocp.mycorpdomain.com) 16> edit params REPORA

replicat repora

   

userid oggmgr, password oracle

   

assumetargetdefs

   

DDL INCLUDE MAPPED

DDLOPTIONS REPORT

DDLERROR DEFAULT ABEND

   

checkpointsecs 1

   

map scott.*, target scott.*;

   

  

[주의사항]

-Replicat 설정시에도 Source DB의 Data-Pump를 이용해야 되기 때문에 추가시 파일 명을 일치시켜주어야 합니다.(./dirdat/rt)

   

1-5 OGG EXTRACT,PUMP,REPLICAT Start(Source / Target)

  • OGG EXTRACT,PUMP (Source)

       

    GGSCI (ocp.mycorpdomain.com) 1> Start EXTRACT EXTORA

    GGSCI (ocp.mycorpdomain.com) 2> Start EXTRACT PUMPORA

     

    GGSCI (ocp.mycorpdomain.com) 3> info all


    Program     Status      Group       Lag at Chkpt  Time Since Chkpt


    MANAGER     RUNNING                                           

    EXTRACT     RUNNING     EXTORA      00:00:00      00:00:07    

    EXTRACT     RUNNING     PUMPORA     00:00:00      00:00:03    


GGSCI (ocp.mycorpdomain.com) 2> info EXTRACT EXTORA

   

EXTRACT EXTORA Last Started 2013-04-07 22:22 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:02 ago)

Log Read Checkpoint Oracle Redo Logs

2013-04-08 22:41:56 Seqno 31, RBA 8829440

SCN 0.1297938 (1297938)

   

GGSCI (ocp.mycorpdomain.com) 3> info EXTRACT PUMPORA

   

EXTRACT PUMPORA Last Started 2013-04-07 23:11 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:01 ago)

Log Read Checkpoint File ./dirdat/et000002

2013-04-07 23:43:11.000000 RBA 21412

  • OGG REPLICAT (Target)

       

    GGSCI (ocp.mycorpdomain.com) 1> Start REPLICAT REPORA

    GGSCI (ocp.mycorpdomain.com) 2> info all


    Program     Status      Group       Lag at Chkpt  Time Since Chkpt


    MANAGER     RUNNING                                           

    REPLICAT    RUNNING     REPORA     00:00:00      00:00:00    


GGSCI (ocp.mycorpdomain.com) 4> info REPLICAT REPORA

   

REPLICAT REPORA Last Started 2013-04-07 22:36 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:01 ago)

Log Read Checkpoint File ./dirdat/rt000000

2013-04-07 23:43:10.988221 RBA 21512

   

1-6 OGG TEST Setting 확인


  • OGG-Checkpoint table(Target)

       

    REPORA        4120505024        0        21512        2013-04-07 23:43:10.988221        2013-04-07 오후 10:26:50        2013-04-07 오후 11:43:16        /ogg        1282955        7.33.914        1282955        7.33.914        1

  • 파일 생성 확인

    --Source DB

    ocp@orcl : /ogg/dirdat> ls

    et000000 et000001 et000002

    --Target DB

    ocp@orcl : /ogg/dirdat> ls

    rt000000

   

2.OGG TEST / 동작확인(DML / DDL)

   - 데이터를 동일하게 이관하여 TEST진행(SCOTT 유저의 기본 테이블을 이용하여 OGG TEST)

  • OGG TEST(DML/DDL)

       

    --Source DB

select * from scott.emp;

delete from scott.emp;

   

SET DEFINE OFF;

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7369, 'SMITH', 'CLERK', 7902, TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

800, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('02/20/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1600, 300, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7521, 'WARD', 'SALESMAN', 7698, TO_DATE('02/22/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1250, 500, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7566, 'JONES', 'MANAGER', 7839, TO_DATE('04/02/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2975, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('09/28/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1250, 1400, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7698, 'BLAKE', 'MANAGER', 7839, TO_DATE('05/01/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2850, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7782, 'CLARK', 'MANAGER', 7839, TO_DATE('06/09/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2450, 10);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7788, 'SCOTT', 'ANALYST', 7566, TO_DATE('04/19/1987 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

3000, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO)

Values

(7839, 'KING', 'PRESIDENT', TO_DATE('11/17/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

5000, 10);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7844, 'TURNER', 'SALESMAN', 7698, TO_DATE('09/08/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1500, 0, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7876, 'ADAMS', 'CLERK', 7788, TO_DATE('05/23/1987 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1100, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7900, 'JAMES', 'CLERK', 7698, TO_DATE('12/03/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

950, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7902, 'FORD', 'ANALYST', 7566, TO_DATE('12/03/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

3000, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7934, 'MILLER', 'CLERK', 7782, TO_DATE('01/23/1982 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1300, 10);

COMMIT;

   

Alter table scott.emp add new_test char(10)

Alter table scott.emp drop column

  • OGG 동작 확인

    --Source DB

GGSCI (ocp.mycorpdomain.com) 5> stats EXTRACT EXTORA

   

Sending STATS request to EXTRACT EXTORA ...

   

Start of Statistics at 2013-04-08 22:51:04.

   

DDL replication statistics (for all trails):

   

*** Total statistics since extract started ***

Operations 2.00

Mapped operations 2.00

Unmapped operations 0.00

Other operations 0.00

Excluded operations 0.00

   

Output to ./dirdat/et:

   

*** Total statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

Extracting from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 22:22:48 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

Extracting from OGGMGR.GGS_MARKER to OGGMGR.GGS_MARKER:

   

*** Total statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

End of Statistics.

   

GGSCI (ocp.mycorpdomain.com) 6>

   

GGSCI (ocp.mycorpdomain.com) 8> stats EXTRACT PUMPORA

   

Sending STATS request to EXTRACT PUMPORA ...

   

Start of Statistics at 2013-04-08 22:51:27.

   

DDL replication statistics (for all trails):

   

*** Total statistics since extract started ***

Operations 2.00

   

Output to ./dirdat/rt:

   

*** Total statistics since 2013-04-07 23:11:14 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:11:14 ***

   

No database operations have been performed.

   

Extracting from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 23:11:14 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:11:14 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

End of Statistics.

  

--Target DB

GGSCI (ocp.mycorpdomain.com) 2> stats REPLICAT REPORA

   

Sending STATS request to REPLICAT REPORA1 ...

   

Start of Statistics at 2013-04-08 22:51:55.

   

DDL replication statistics:

   

*** Total statistics since replicat started ***

Operations 2.00

Mapped operations 2.00

Unmapped operations 0.00

Other operations 0.00

Excluded operations 0.00

Errors 0.00

Retried errors 0.00

Discarded errors 0.00

Ignored errors 0.00

   

Replicating from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 23:24:16 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:24:16 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

End of Statistics.

   

[주의사항]

  • Vmware 환경이다 보니, Source DB -> Target DB로 작업 내용(DML/DDL)이 넘어가는데 시간이 걸리는 것을 확인할 수 있다.(1~3(s))

   

   

3.OGG Logfile List / 자주사용 되는 명령어

3-1 OGG Logfile

  • 구성시 OGG 로그를 Tail 로 열어 두고 작업하는 것이 에러를 찾는데 좋은 방법이 됩니다.

       

/OGG/ggserr.log

/$ORACLE_BASE/diag/…/Trace/ggs_ddl_trace.log

   

3-2 OGG 기타 명령어

  • EXTTRAIL / REPLICAT의 설정 시 좀더 명확하게 옵션을 줄수 있다.

    setenv (NLS_LANG = "KOREAN_KOREA.KO16KSC5601")

    setenv (ORACLE_SID = "orcl")

  • EXTTRAIL / REPLICAT 적용이 후, 사용되고 있는 파일 명 변경 한다.

    Alter REPLICAT REPORA, exttrail ./dirdat/sa

    Alter EXTTRAIL EXTORA, exttrail ./dirdat/si

  • OGG의 경우 Seqno 및 RBA,SCAN 이 틀어지는 경우가 종종 발생한다 / 해당 번호에 맞게 변경시 사용한다.

    ALTER REPLICAT REPORA, EXTSEQNO 0, EXTRBA 0

    ALTER EXTTRAIL EXTORA, EXTSEQNO 0, EXTRBA 0

   

  • 컬럼 mapping(COLMAP) / 세부 옵션의 경우 추가적으로 정리할 예정입니다.

       

[참고자료]

http://h391106.tistory.com/277

http://gssdba.wordpress.com/category/oracle-golden-gate/

http://mwguru.tistory.com/21

http://setijoagus.wordpress.com/2010/03/27/install-oracle-goldengate-2/

http://gavinsoorma.com/2010/02/oracle-goldengate-tutorial-6-configuring-data-pump-process/

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


1.Oracle Golden Gate

1-1 Architecture

  • Manager Process
  • OGG 전체의 Process들에 대한 제어 및 모니터링 지원

       

  • EXTRACT Process
  • 데이터에 대한 변경된 사항에 대하여(Redo/Archive Log로 부터 Commit된 Transaction) Read하여 Source Trail에 변경 정보 저장

       

  • REPLICAT Process
  • Target Trail을 Read하여 주어진 Mapping Rule 조건에 맞게 Target DB에 DML, DDL 수행(SQL문 생성), SQL 생성시 Parameter 파일의 Mapping 정보를 참조
  • 생성된 SQL과 Target Trail의 데이터를 결합하여 SQL문 완성

       

  • Source/Target Trail
  • Capture된 변경정보 데이터를 저장하는 File(et00000 등)

   

1-2 OGG Directory 구성

   

Directory 명

역할

설치 시

자동생성

/dirchk

OGG Process의 Checkpoint가 기록되는 File 저장

O

/dirdat

Extract가 Capture한 Data 변경분을 저장하는 Trail File 생성

O

/dirdef

OGG 적용대상 Table들의 Definition

O

/diroby

OGG 구성을 위한 작업 File 저장

  

/dirout

OGG Process 운영 시 발생하는 오류 원인 및 오류 record 내용이 기록되는 Discard File 저장

O

/dirpcs

OGG process의 PID 기록되는 File 저장

O

/dirprm

OGG Process 적용테이블의 Mapping 방식 및 추가 설정 Option들을 지정하는 File 생성

O

/dirrpt

OGG Process 처리내역 및 오류 시 원인 저장

O

   

1-3 OGG 구성 방안

   

  • 다양한 형태의 구축방안이 있지만 이번 OGG TEST에서는 단방향 형태(DML,DDL지원)로 구축

       

2.OGG Installation

- Environment(Vmwere)

구분

Host IP

OS Version

oracle SID

DB Version

DB Schema

기타

Source

192.168.22.3

GNU /LINUX

orcl

Oracle 11.2.0.3

OGGMGR

  SCOTT

유저 사용

Target

192.168.22.10

GNU /LINUX

orcl

Oracle 11.2.0.3

OGGMGR

SCOTT

유저 사용  

   

2-1 사전 준비사항 1 (Source / Target)

SQL> create tablespace ggs_data datafile '/oradata/orcl/ggs_data01.dbf' size 200m;

   

SQL> create user oggmgr identified by oracle

default tablespace ggs_data

temporary tablespace temp;

 

grant connect, resource to oggmgr;

grant select any dictionary, select any table to oggmgr;

grant create table to oggmgr;

grant flashback any table to oggmgr;

grant execute on dbms_flashback to oggmgr;

grant execute on utl_file to oggmgr;

grant create any table to oggmgr;

grant insert any table to oggmgr;

grant update any table to oggmgr;

grant delete any table to oggmgr;

grant drop any table to oggmgr;

   

2-2 OGG S/W Installation(Source / Target)

[다운로드]

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

  • Source(Oracle 유저)

    $ Mkdir /OGG

    $ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit

    $ tar xvf fbo_ggs_Linux_x86_ora11g_32bit.tar

  • Target(Oracle 유저

    $ Mkdir /OGG

    $ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit

    $ tar xvf fbo_ggs_Linux_x86_ora11g_32bit.tar

  • OGG Installation(Source / Target)

    $./ggsci

    GGSCI (ocp.mycorpdomain.com) 1> create subdirs

   

2-3 사전 준비사항 2(Source)

  • Archivelog mode

       

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;

       

    -- LOG_ARCHIVE_DEST 파라미터 변경

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/arch' SCOPE=SPFILE;

     

    -- LOG_ARCHIVE_FORMAT 파라미터 변경

    SQL> ALTER SYSTEM SET log_archive_format='ora_%s_%t_%r.arc' SCOPE=SPFILE;

       

    SQL> SHUTDOWN IMMEDIATE

       

    SQL> STARTUP MOUNT

       

    -- 아카이브 로그 확성화                

    SQL>ALTER DATABASE ARCHIVELOG;

       

    SQL> ALTER DATABASE OPEN;

      

  • Supplemental logging

       

    SQL> alter database add supplemental log data;

      

  • Support DDL

       

    SQL> alter system set recyclebin=off scope=spfile;

       

    -GoldenGate는 Oracle 9i 이후 버전에 대하여 DDL을 지원한다. 그 이전 버전에서는 DDL이 지원되지 않는다. 아래의 objects에 대해서 2 MB 이내의 모든 DDL operation을 지원한다.

       

    -DDL replication을 수행하기 위해서는 반드시 Oracle recycle bin이 'OFF'로 설정되어야 한다. Recycle bin이 활성화되어 있을 경우, GoldenGate의 DDL tigger session이 내포된 recycle bin에 의해 tigger 실패를 야기할 수 있는 DDL operation를 받을 수 있게 된다.

       

    -Oracle 기본 schema에 대해서는 DDL은 무시된다.

   

2-4 사전 준비사항 3 (Source / Target)

  • OGG Run Scripts

    $sqlplus "/as sysdba"
     

    SQL> @/OGG/marker_setup.sql 

       

    Enter GoldenGate schema name: OGGMGR

    ….

       

    SQL> @/OGG/ddl_setup.sql 

    Enter GoldenGate schema name: OGGMGR

    …..

       

    SQL> @/OGG/role_setup.sql 

    Enter GoldenGate schema name: OGGMGR

    …..

       

    SQL> grant ggs_ggsuser_role to OGGMGR

     Grant succeeded.

    SQL>@/OGG/ddl_enable

       

    Trigger altered.

       

    SQL>@/OGG/ddl_pin OGGMGR

  • Additional logging(Table Level / Schema Level)

       

    $./ggsci

    GGSCI (ocp.mycorpdomain.com) 1> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    -- Trandata 추가

    GGSCI (ocp.mycorpdomain.com) 2> add trandata scott.*

       

    (Add trandata scott.emp / add trandata scott.*)

       

    -- 추가된 Trandata 확인

    GGSCI (ocp.mycorpdomain.com) 3> info trandata scott.*

       

    Logging of supplemental redo log data is enabled for table SCOTT.BONUS.

       

    Columns supplementally logged for table SCOTT.BONUS: ENAME, JOB, SAL, COMM.

       

    Logging of supplemental redo log data is enabled for table SCOTT.DEPT.

       

    Columns supplementally logged for table SCOTT.DEPT: DEPTNO.

       

    Logging of supplemental redo log data is enabled for table SCOTT.EMP.

       

    Columns supplementally logged for table SCOTT.EMP: EMPNO.

       

    Logging of supplemental redo log data is enabled for table SCOTT.SALGRADE.

       

    Columns supplementally logged for table SCOTT.SALGRADE: GRADE, LOSAL, HISAL.

      

   

[참고자료]

http://h391106.tistory.com/277

http://gssdba.wordpress.com/category/oracle-golden-gate/

http://mwguru.tistory.com/21

http://setijoagus.wordpress.com/2010/03/27/install-oracle-goldengate-2/

http://gavinsoorma.com/2010/02/oracle-goldengate-tutorial-6-configuring-data-pump-process/

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


  • TDE(Transparent Data Encryption)
    • 응용 프로그램의 수정 없이 DB 내부에서 컬럼, 데이블스페이스 레벨의 암호화(어플리케이션 변경없음)
    • 데이터는 디스크에 저장되는 과정에서 투명하게 암호화되며, 정상적인 인증 및 권한 할당을 거친 애플리케이션 사용자가 읽기를 시도할 때 역시 투명하게 복호화

   

  • TDE에서 지원되는 암호화 알고리즘

  • TDE에서 지원되는 데이터 형식

    3-1 CHAR / NCHAR / VARCHAR2 / NVARCHAR2

    3-2 DATE / TIMESTAMP

    3-3 NUMBER / BINARY_FLOAT / BINARY_DOUBLE

    3-4 RAW

   

  • TDE 암호화 방식의 비교

   

Column Level Encryption(10g,11g)

-테이블의 특정 컬럼만 암호화

-블록의 특정 부분만 암호화

-SQA에도 암호화된 채로 존재

  

Tablespace Level Encryption(11g)

-테이블스페이스 전체가 암호화

-SGA에서는 Clear Text로 존재

-기존 SQL 및 DB 기능 사용 제약 없음

-테이블 사이즈의 증가가 없음

   

   

  • System, Sysaux, Undo, Temp의 경우 테이블 스페이스 레벨 암호화 방식을 사용할 수 없음
  • Exp에 / Impdp는 TDE를 지원(10gR2 , 11g)
  • Bitmap index, index range scan 지원
  • Lob 지원, Logminer, logical standby db, streams, HSM(Hardware Security Module)

       

   

  • TDE Setting / Management

       

    5-0 TDE 설치 여부 확인

SELECT parameter,value

from v$option where parameter='Transparent Data Encryption'

   

TRUE

  

   

5-1 Wallet File 지정

  • Sqlnet.ora file에 지정
  • $ORACLE_HOME/network/admin/sqlnet.ora 수정

       

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/oracle/app/oracle/product/10.2.0/wallet/$ORACLE_SID)))

  

   

5-2 Wallet Management

   

  • Wallet Creation
    • SQL> alter system set encryption key identified by "test";

       

  • Wallet Open / Close
    • SQL> alter system set encryption wallet open identified by "test";
    • SQL> alter system set wallet close;

       

  • Wallet 상태 확인
  • SQL> select * from v$encryption_wallet (10.2.0.4 version 이상 사용 가능)

       

       

5-3 Column Level Encryption(10g,11g)

   

  • Encrytion SQL

       

    ALTER TABLE scott.emp modify (encrypt  jumin using 'AES256');

    ALTER TABLE scott.emp modify ( encrypt jumin 'AES256' no salt);

       

       

  • 암호화 알고리즘 및 옵션선정 : AES 256, INDEX 컬럼인 경우 NO SALT, 아닌 경우 SALT

       

  • Decrytion SQL

    ALTER TABLE scott.emp modify (jumin decrypt);

       

       

5-4 Tablespace Level Encryption(11g)

   

CREATE TABLESPACE ts_encrypted
DATAFILE '/u01/app/oracle/oradata/orcl/encrypted_ts01.dbf' SIZE 128K
AUTOEXTEND ON NEXT 64K
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);

ALTER USER test QUOTA UNLIMITED ON ts_encrypted;

  

   

CREATE TABLE employee

( first_name VARCHAR2(128),

last_name VARCHAR2(128),

empno NUMBER ENCRYPT NO SALT,

salary NUMBER(6) ENCRYPT USING 'AES256' );

  

CREATE TABLE test (
id NUMBER(10),
data VARCHAR2(50)
)
TABLESPACE ts_encrypted;

  

   

CREATE INDEX test_idx ON test(data) TABLESPACE ts_encrypted;

  

   

  • Data PUMP 이관(Tablespace)

TDE Tablespace PUMP 사용 옵션

   

1. encryption - 덤프하기젂에 데이터의 암호화 여부를 표시합니다.

[all | data_only |encryped_colums_only | metadata_only |none

all - 모두 암호화

data_only - data만 암호화

encryped_colums_only - encryped_colums만 암호화

metadata_only - metadata만 암호화

none - 암호화 하지 않음

   

2. ENCRYPTION_ALGORITHM - 암호화를 사용하는데 사용하는 알고리즘입니다.

오라클 10g의 RMAN과 동일하게 작동합니다.

[ AES128 | AES192 | AES256]

   

3.ENCRYPTION_MODE - 암호화및 해독을 수행할 때 모드입니다.

[DUAL | PASSWORD | TRANSPARENT]

password - 덤프 파일 셋트를 만드는 암호를 지정합니다. expdp와 impdp 모두

encryption_password절을 지정해줘야 합니다. passwd가 틀리면 impdp가 되지 않습니다.

TRANSPARENT - expdp 와 impdp 모두 encryption_password 파라메터를 쓰지 않습니다.

DUAL - expdp 때 encryption_password를 지정해주나 impdp때 encryption_password 절을 쓰지 않아도 됩니다.

   

   

[참고자료]
Oracle 성공적인 데이터베이스 암호화 구축 및 운영 방안

http://www.oracle-base.com/articles/11g/tablespace-encryption-11gr1.php

http://www.oracle.com/technetwork/database/security/twp-transparent-data-encryption-bes-130696.pdf

https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CD4QFjAB&url=http%3A%2F%2Fsupport.dbworks.co.kr%2F%3Fmodule%3Dfile%26act%3DprocFileDownload%26file_srl%3D9148%26sid%3D729ecd65aa02a077068bc805d6ee0734&ei=FPtWUbWiConnkAXqqIBY&usg=AFQjCNG-BNIg5ts_3AciAjt6WUlNIxqRzQ&sig2=r88gJKXJORxPpJwnbbv1GQ&bvm=bv.44442042,d.dGI&cad=rjt

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,