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와 함께 살아가는 삶

,


  • ORACLE VPD란?

     

    • Virtual Private Database(이하 VPD) 란 하나의 DATABASE내의 수 많은 data 에서 보안상 혹은 특정 서비스를 목적으로 필요한 유저에 해당하는 data만을 다룰 수 있게 하는 기술을 말한다.
    • 일반적으로 보안레벨, 부서별 혹은 사이트별 등 특정 목적에 맞게 구분되지만, 사용자는 이러한 구분을 받고 있다는 것을 전혀 알지 못하며, 마치 자신만의 DATABASE 를 다루는 것처럼 보이게 되어 Virtual Private Database 라고 부른다.

   

  1. 스키마 단위 TEST Script 및 확인
  • User, table 생성

SYS> GRANT CREATE SESSION, CREATE ANY CONTEXT, CREATE PROCEDURE, CREATE TRIGGER, ADMINISTER DATABASE TRIGGER TO sysadmin_vpd IDENTIFIED BY test;

   

Grant succeeded.

   

SYS>

SYS>

SYS> GRANT EXECUTE ON DBMS_SESSION TO sysadmin_vpd;

   

Grant succeeded.

   

SYS>

SYS>

SYS> GRANT EXECUTE ON DBMS_RLS TO sysadmin_vpd;

   

Grant succeeded.

   

SYS>

SYS> GRANT CREATE SESSION TO tbrooke IDENTIFIED BY test;

   

Grant succeeded.

   

SYS>

SYS>

SYS> GRANT CREATE SESSION TO owoods IDENTIFIED BY test;

   

Grant succeeded.

   

SYS>

SYS>

SYS> ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY tiger

2 ;

   

User altered.

   

SYS>

SYS>

SYS> conn scott/tiger

Connected.

SCOTT>

SCOTT> create table customers (

cust_no number(4),

cust_email varchar2(20),

4 cust_name varchar2(20));

   

Table created.

   

SCOTT>

SCOTT>

SCOTT> CREATE TABLE orders_tab (

2 cust_no NUMBER(4),

3 order_no NUMBER(4));

   

Table created.

   

SCOTT>

SCOTT> INSERT INTO customers VALUES (1234, 'TBROOKE', 'Thadeus Brooke');

   

1 row created.

   

SCOTT>

SCOTT>

SCOTT> INSERT INTO customers VALUES (5678, 'OWOODS', 'Oberon Woods');

   

1 row created.

   

SCOTT>

SCOTT>

SCOTT> GRANT SELECT ON customers TO sysadmin_vpd;

   

Grant succeeded.

   

SCOTT>

SCOTT> select * from orders_tab;

   

no rows selected

   

SCOTT>

SCOTT>

SCOTT> INSERT INTO orders_tab VALUES (1234, 9876);

   

1 row created.

   

SCOTT>

SCOTT>

SCOTT> INSERT INTO orders_tab VALUES (5678, 5432);

   

1 row created.

   

SCOTT>

SCOTT>

SCOTT> INSERT INTO orders_tab VALUES (5678, 4592);

   

1 row created.

   

SCOTT>

SCOTT> GRANT SELECT ON orders_tab TO tbrooke;

   

Grant succeeded.

   

SCOTT>

SCOTT>

SCOTT> GRANT SELECT ON orders_tab TO owoods;

   

Grant succeeded.

   

SCOTT>

   

  • application context 생성

SCOTT> conn sysadmin_vpd/test

Connected.

SYSADMIN_VPD>

SYSADMIN_VPD>

SYSADMIN_VPD>

SYSADMIN_VPD>

SYSADMIN_VPD>

SYSADMIN_VPD> CREATE OR REPLACE CONTEXT orders_ctx USING orders_ctx_pkg;

   

Context created.

   

SYSADMIN_VPD>

SYSADMIN_VPD>

CREATE OR REPLACE PACKAGE orders_ctx_pkg

END; IS

IS

PROCEDURE set_custnum;

END;

5 /

   

Package created.

   

SYSADMIN_VPD>

SYSADMIN_VPD>

CREATE OR REPLACE PACKAGE BODY orders_ctx_pkg

IS

PROCEDURE set_custnum

AS

custnum NUMBER;

BEGIN

SELECT cust_no INTO custnum FROM scott.customers

WHERE cust_email = SYS_CONTEXT('USERENV', 'SESSION_USER');

DBMS_SESSION.SET_CONTEXT('orders_ctx', 'cust_no', custnum);

10 EXCEPTION

WHEN NO_DATA_FOUND THEN NULL;

END set_custnum;

13 END;

14 /

   

Package body created.

   

  • Logon trigger 생성

SYSADMIN_VPD>

CREATE TRIGGER set_custno_ctx_trig AFTER LOGON ON DATABASE

BEGIN

sysadmin_vpd.orders_ctx_pkg.set_custnum;

END;

5 /

   

Trigger created.

   

SYSADMIN_VPD>

SYS> conn tbrooke/test

Connected.

TBROOKE>

TBROOKE>

TBROOKE> SELECT SYS_CONTEXT('orders_ctx', 'cust_no') custnum FROM DUAL;

   

CUSTNUM

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

1234

   

TBROOKE>

  

   

   

  • DBMS_RLS 에 사용할 policy function 생성

SYSADMIN_VPD>

CREATE OR REPLACE FUNCTION get_user_orders(

orders_pred VARCHAR2 (400);

schema_p IN VARCHAR2,

table_p IN VARCHAR2)

RETURN VARCHAR2

AS

orders_pred VARCHAR2 (400);

BEGIN

orders_pred := 'cust_no = SYS_CONTEXT(''orders_ctx'', ''cust_no'')';

RETURN orders_pred;

END;

/

   

Function created.

   

SYSADMIN_VPD>

   

  • DBMS_RLS.ADD_POLICY 설정

SYSADMIN_VPD> BEGIN

DBMS_RLS.ADD_POLICY (

object_schema => 'scott',

object_name => 'orders_tab',

function_schema => 'sysadmin_vpd',

policy_name => 'orders_policy',

function_schema => 'sysadmin_vpd',

policy_function => 'get_user_orders',

statement_types => 'select');

END;

/

   

PL/SQL procedure successfully completed.

   

SYSADMIN_VPD>

   

  • TEST

       

   

SYS> select * from scott.orders_tab;

   

CUST_NO ORDER_NO

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

1234 9876

5678 5432

5678 4592

   

SYS>

   

TBROOKE>

TBROOKE> select * from scott.orders_tab;

   

CUST_NO ORDER_NO

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

1234 9876

   

TBROOKE>

   

SYS> conn owoods/test

Connected.

OWOODS>

OWOODS>

OWOODS>

OWOODS> select * from scott.orders_tab;

   

CUST_NO ORDER_NO

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

5678 5432

5678 4592

   

OWOODS>

   

  • 확인

OWOODS> select * from scott.orders_tab where ORDER_NO=5432 and cust_no=5678;

   

CUST_NO ORDER_NO

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

5678 5432

   

   

Execution Plan

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

Plan hash value: 3940001695

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 1 | 26 | 3 (0)| 00:00:01 |

|* 1 | FILTER | | | | | |

|* 2 | TABLE ACCESS FULL| ORDERS_TAB | 1 | 26 | 3 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

1 - filter(5678=TO_NUMBER(SYS_CONTEXT('orders_ctx','cust_no')))

2 - filter("ORDER_NO"=5432 AND "CUST_NO"=5678)

   

==========================================

OWOODS> select * from scott.orders_tab;

   

CUST_NO ORDER_NO

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

5678 5432

5678 4592

   

   

Execution Plan

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

Plan hash value: 1302839296

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 2 | 52 | 3 (0)| 00:00:01 |

|* 1 | TABLE ACCESS FULL| ORDERS_TAB | 2 | 52 | 3 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

1 - filter("CUST_NO"=TO_NUMBER(SYS_CONTEXT('orders_ctx','cust_no')))

   

Note

-----

- dynamic sampling used for this statement

   

   

Statistics

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

2 recursive calls

0 db block gets

8 consistent gets

0 physical reads

0 redo size

513 bytes sent via SQL*Net to client

385 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

2 rows processed

   

========================================================

   

OWOODS> select * from scott.orders_tab where order_no=5432;

   

CUST_NO ORDER_NO

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

5678 5432

   

   

Execution Plan

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

Plan hash value: 1302839296

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 1 | 26 | 3 (0)| 00:00:01 |

|* 1 | TABLE ACCESS FULL| ORDERS_TAB | 1 | 26 | 3 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

1 - filter("ORDER_NO"=5432 AND "CUST_NO"=TO_NUMBER(SYS_CONTEXT('order

s_ctx','cust_no')))

   

Note

-----

- dynamic sampling used for this statement

   

   

Statistics

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

2 recursive calls

0 db block gets

8 consistent gets

0 physical reads

0 redo size

473 bytes sent via SQL*Net to client

385 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

1 rows processed

  

   

  1. 컬럼단위 Script 및 확인
  • 권한 부여

       

GRANT CREATE SESSION, CREATE ANY CONTEXT, CREATE PROCEDURE, CREATE TRIGGER, ADMINISTER DATABASE TRIGGER TO SCOTT;

권한이 부여되었습니다.

SQL> GRANT EXECUTE ON DBMS_SESSION TO scott;

권한이 부여되었습니다.

SQL> GRANT EXECUTE ON DBMS_RLS TO scott;

권한이 부여되었습니다.

   

  • Funtion 및 policy 추가

CREATE OR REPLACE FUNCTION hide_sal_comm (

v_schema IN VARCHAR2,

v_objname IN VARCHAR2)

   

RETURN VARCHAR2 AS

con VARCHAR2 (200);

begin

con := 'deptno=30';

RETURN (con);

END hide_sal_comm;

/

 

 

BEGIN

DBMS_RLS.ADD_POLICY (

object_schema => 'scott',

object_name => 'emp',a

policy_name => 'hide_sal_policy',

policy_function => 'hide_sal_comm',

sec_relevant_cols => 'sal,comm');

END;

/

 

 

SELECT d.deptno, ENAME, d.dname, JOB , SAL

FROM emp e, dept d

WHERE d.deptno = e.deptno;

 

SELECT d.deptno, ENAME, d.dname, JOB , SAL

FROM emp e, dept d

3 WHERE d.deptno = e.deptno;

   

DEPTNO ENAME DNAME JOB SAL

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

30 ALLEN SALES SALESMAN 1600

30 WARD SALES SALESMAN 1250

30 MARTIN SALES SALESMAN 1250

30 BLAKE SALES MANAGER 2850

30 TURNER SALES SALESMAN 1500

30 JAMES SALES CLERK 950

   

6 rows selected.

   

   

Execution Plan

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

Plan hash value: 568005898

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 5 | 170 | 4 (0)| 00:00:01 |

| 1 | NESTED LOOPS | | 5 | 170 | 4 (0)| 00:00:01 |

| 2 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 13 | 1 (0)| 00:00:01 |

|* 3 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |

|* 4 | TABLE ACCESS FULL | EMP | 5 | 105 | 3 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

3 - access("D"."DEPTNO"=30)

4 - filter("DEPTNO"=30)

   

   

Statistics

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

5 recursive calls

0 db block gets

10 consistent gets

0 physical reads

0 redo size

789 bytes sent via SQL*Net to client

385 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

6 rows processed

 

 

 

SELECT d.deptno, ENAME, d.dname, JOB

FROM emp e, dept d

WHERE d.deptno = e.deptno;

 

SELECT d.deptno, ENAME, d.dname, JOB

FROM emp e, dept d

WHERE d.deptno = e.deptno;

   

DEPTNO ENAME DNAME JOB

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

20 SMITH RESEARCH CLERK

30 ALLEN SALES SALESMAN

30 WARD SALES SALESMAN

20 JONES RESEARCH MANAGER

30 MARTIN SALES SALESMAN

30 BLAKE SALES MANAGER

10 CLARK ACCOUNTING MANAGER

20 SCOTT RESEARCH ANALYST

10 KING ACCOUNTING PRESIDENT

30 TURNER SALES SALESMAN

20 ADAMS RESEARCH CLERK

30 JAMES SALES CLERK

20 FORD RESEARCH ANALYST

10 MILLER ACCOUNTING CLERK

   

14 rows selected.

   

   

Execution Plan

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

Plan hash value: 351108634

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 14 | 420 | 4 (0)| 00:00:01 |

| 1 | NESTED LOOPS | | 14 | 420 | 4 (0)| 00:00:01 |

| 2 | TABLE ACCESS FULL | EMP | 14 | 238 | 3 (0)| 00:00:01 |

| 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 13 | 1 (0)| 00:00:01 |

|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

4 - access("D"."DEPTNO"="DEPTNO")

   

   

Statistics

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

4 recursive calls

0 db block gets

24 consistent gets

0 physical reads

0 redo size

980 bytes sent via SQL*Net to client

385 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

14 rows processed

 

   

exec DBMS_RLS.DROP_POLICY('scott','emp','hide_sal_policy');

 

BEGIN

DBMS_RLS.ADD_POLICY(

object_schema => 'scott',

object_name => 'emp',

policy_name => 'hide_sal_policy',

policy_function => 'hide_sal_comm',

sec_relevant_cols =>' sal,comm',

sec_relevant_cols_opt => dbms_rls.ALL_ROWS);

END;

/

 

SELECT ENAME, d.dname, job, sal, comm

FROM emp e, dept d

WHERE d.deptno = e.deptno;

 

 

SCOTT>

SCOTT> select ENAME, d.dname, job, sal, comm, d.deptno

2 from emp e, dept d

3 where d.deptno = e.deptno;

   

ENAME DNAME JOB SAL COMM DEPTNO

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

SMITH RESEARCH CLERK 20

ALLEN SALES SALESMAN 1600 300 30

WARD SALES SALESMAN 1250 500 30

JONES RESEARCH MANAGER 20

MARTIN SALES SALESMAN 1250 1400 30

BLAKE SALES MANAGER 2850 30

CLARK ACCOUNTING MANAGER 10

SCOTT RESEARCH ANALYST 20

KING ACCOUNTING PRESIDENT 10

TURNER SALES SALESMAN 1500 0 30

ADAMS RESEARCH CLERK 20

JAMES SALES CLERK 950 30

FORD RESEARCH ANALYST 20

MILLER ACCOUNTING CLERK 10

   

14 rows selected.

   

   

Execution Plan

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

Plan hash value: 351108634

   

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

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

| 0 | SELECT STATEMENT | | 14 | 504 | 4 (0)| 00:00:01 |

| 1 | NESTED LOOPS | | 14 | 504 | 4 (0)| 00:00:01 |

| 2 | TABLE ACCESS FULL | EMP | 14 | 322 | 3 (0)| 00:00:01 |

| 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 13 | 1 (0)| 00:00:01 |

|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |

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

   

Predicate Information (identified by operation id):

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

   

4 - access("D"."DEPTNO"="DEPTNO")

   

   

Statistics

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

3 recursive calls

0 db block gets

24 consistent gets

0 physical reads

0 redo size

1129 bytes sent via SQL*Net to client

385 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

14 rows processed

   

   

   

   

  

   

   

   

   

   

   

'1. IT Story > DB' 카테고리의 다른 글

Oracle Golden Gate 개념 및 Installaton  (2) 2013.04.08
Oracle 11gR2 TDE(Transparent Data Encryption)  (0) 2013.03.31
Oracle 10g CRS 제거  (0) 2013.03.31
Oracle 11g RAC with ASM TEST  (2) 2013.03.31
Splunk install-Linux  (0) 2013.02.09
Big-Data Hive 환경구성(MySql)  (0) 2013.02.09
Big-Data Hadoop 환경구성  (0) 2013.02.09
Big-Data Hadoop기초  (0) 2013.02.09
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Big Data Vs RDBMS

   

  • 정형화된 비즈니스적인 중요 데이터의 경우 RDBMS 사용
  • RDBMS: seletct -> 처리 -> 보내기 / Big-Data : 작동방식(funtion)-> 처리 -> 처리완료
  • 개발 방식의 변화 OOP(object-oriented Programming) -> FP(Funtion Programming)
  • 비즈니스적으로는 중요하지만, 분석을 통하여 새로운 정보를 추출하는 경우 Big-Data 사용
  • 결론적으로, RDBMS와 Big-Data는 적절한 업무 및 환경 파악을 통하여 효율적인 구축이 필요합니다. ( 각 업무와 환경에 맞는 DB를 선택적으로 선별하여 사이트구축, 정형화되고 표준화된 Database -> 비정형화되고 다양한 형태의 Database 형태로 변화하고 있습니다)

       

데이터 분석 순서

  • 데이터 수집 ( Flune,Scribe, Chukwa)
  • 데이터 저장 ( HDFS)
  • 트렌젝션 데이터저장 (NO-SQL)
  • 실시간 분석 (S4, Strom, OEP)
  • 배치 분석 (Map/Reduce)
  • 데이터 마이닝/통계 ( Mahout R)
  • 클러스터 관리 (zookeeper, HIVE)
  • 데이터직렬화 (Arvo 등)

   

HaDoop Distributed File System

   

  • HDFS 의 장단점
    • 장점 : X86 장비내보 로컬디스크, 수천개의 대규모 클러스터, 고가용성(1-5000), 장애시 자동감시 및 복구, 서버 추가 및 재설치 불필요, 분석용 데이터 저장가능
    • 단점 : 저장가능한 파일수의 한계, Namenode의 SPOF, 범용스토리지를 사용할 경우의 제약
      • 단일 고장점(single point of failure, SPOF)는 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다.

           

  • 데이터 저장 방식
    • NameNode에서 해당 데이터의 위치정보를 따라 Client를 통해 DataNode에 내려가게 되면, 해당 데이터는 복제(default: 3) 되어 DataNode에 저장됩니다.
    • DataNode가 사용할 수 없게 될 경우, NameNode에서는 해당데이터와 같은 내용이 복제되어 저장된 DataNode의 메타정보를 통하여 Read & Write를 진행하고 다시 한번 더 복제가 발생하여 보관됩니다.

   

   

Name Node

   

  • NameNode: 실데이터 DataNode 분산저장, 각 데이터 위치에 대한 메타정보 및 변경된 내역에 대한 Log정보를 가지고 있습니다.(기본 64MB, 복제: 3), 메모리 상에 올려놓고 각 데이터의 위치정보를 주는 역할과 변경된 내용을 저장하는 역할을 담당합니다.
  • Fsimage : 각 데이터의 위치정보, 메타정보를 가지고 있어서 쓰기 및 읽을 경우, 반드시 Name Node를 통하여 데이터를 이용할 수 있습니다.(메타정보관리)
  • Edit logs: DataNode에서 수정 및 반영된 모든 내용을 Edit log에 기록하는 역할을 담당합니다.(RDBMS의 Redolog와 비슷한 역할)
  • Namenode의 경우, 그 역활이 중요하기 때문에 SecondaryNameNode를 통하여 실시간(5분)으로 병합 및 동기화를 통하여 혹시나 발생할 수 있는 장애에 대비해야 합니다.
  • 1개의 NameNode에 대략 5000개의 DataNode 클러스터를 구성할 수 있습니다.

   

SecondaryNameNode

   

  • SecondaryNamenode의 경우, NameNode의 Fsimage(메타정보) 백업 및 edit log 정보를 병합 및 동기화하는 역할을 수행합니다.
  • NameNode에 장애가 발생할 경우, 백업된 메타정보와, 병합 및 동기화된 edit log 정보를 통하여 IP및 DNS정보를 변경하여 SecondaryNamenode-> NameNode로 변경하여 장애처리가 가능합니다.
  • Edit log가 많이 쌓이고 SecondaryNamenode가 없을 경우, 해당 로그정보들이 모두 처리되기 전까지 구동되지 않는 경우가 발생할 수 있습니다. 또한 수행 속도의 저하 및 메모리 낭비현상도 발생할 수 있습니다.

       

HDFS Client

   

  • HDFS Client의 경우 NameNode와 DataNode 사이에서 데이터의 Read와 Write를 조율해주는 역할을 해줍니다.
  • Client에서 데이터를 요청했을 경우, NameNode에서 먼저 해당 데이터에 대한 메타정보를 HDFS Client에게 보내주게 되고, 해당 정보를 바탕으로 각 DataNode에 분산되어 복제되어 있는 데이터를 가져오는 형태로 진행됩니다.

       

Data Node

   

   

  • Data Node의경우 실 데이터가 보관되어 있는 node로 데이터가 저장될 경우, 복제(default :3)가 발생하여 위 그림과 같이 각기 다른 노드에 복제되어 저장되어 있게 됩니다. 복제된 위치정보의 경우 NameNode에 의하여 관리되게 됩니다.
  • DataNode는 HeartBeat를 NameNode에게 날리면서 자신이 살아있음을 지속적으로 표현하고 혹시나 DataNode가 사용할 수 없게 될 경우 복제된 다른 노드에서 데이터를 가지고 올 수 있도록 합니다.
  • 결론적으로 NameNode의 메타정보가 분실될 경우, 데이터를 사용할 수 없게 됩니다.

       

MapReduce

  • 평균 계산 및 분산처리 결과 추출(병렬)시 뛰어난 성능을 발휘 합니다. 단, Sorting시 어려운 점이 있습니다.
  • Key-Value 형태로 데이터를 정리하고(Mapping) 각 데이터별로 Sorting을 통하여 (Shuffling) 핵심 데이터로 줄여서 (Reducing) 그 결과를 사용자에게 제공합니다.
  • Map/Reduce Job 을 구성한 클래스
    • Reducer
      • Mapper의 출력을 읽어 처리
      • 입력 Mapper의 Key와 Value 목록, 출력 Key-Value
    • Mapper
      • InputSplit에서 파일을 읽어서 처리
    • Driver
      • 각종 파일, 파라미터 처리
      • Hadoop Map/Reduce Job 실행
    • Combiner
      • Mapper에서 동작하는 Minireducer(성능 개선 시 추가되는 Class)
    • Patitiner
      • Mapper의 Key를 어느 Reducer에 보낼지 처리(확장 개선 시 추가되는 Class)
    • InputFormat / RecordReal : 입력파일을 읽어드리는 역할

       

   

Data Read 및 Write 과정

   

  • Client Data Read -> Namenode에서 해당 Data의 메타정보를 -> HDFS Client에게 전송 -> Map/Reduce -> Job Client에 Job을 제출(XML파일) -> JobTracker -> TaskerTracker -> DataNode(파이프라인) -> 데이터 찾기 완료 -> Client에게 ACK 전송(완료)
  • Client Data Write -> 반대로 -> Name Node 메모리와 Log에 변경내용 저장
  • Hadoop(Big-data)의 경우, Update 및 데이터 변경이 어렵습니다.

   

   

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle RAC DBCA

  • Oracle 유저로 실행

   

   

   

   

   

  • Global SID 설정

   

   

   

   

  • ASM DISK GROUP 설정한 내역으로 저장위치 선택

   

   

   

   

   

   

설치완료후, 확인사항

[root@rac1 test]# crsctl stat res -t

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

NAME TARGET STATE SERVER STATE_DETAILS

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

Local Resources

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

ora.DATA.dg

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.LISTENER.lsnr

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.ORADATA.dg

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.asm

ONLINE ONLINE rac1 Started

ONLINE ONLINE rac2 Started

ora.gsd

OFFLINE OFFLINE rac1

OFFLINE OFFLINE rac2

ora.net1.network

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.ons

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.registry.acfs

ONLINE ONLINE rac1

ONLINE ONLINE rac2

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

Cluster Resources

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

ora.LISTENER_SCAN1.lsnr

1 ONLINE ONLINE rac1

ora.cvu

1 ONLINE ONLINE rac1

ora.oc4j

1 ONLINE ONLINE rac1

ora.rac.db

1 ONLINE ONLINE rac1 Open

2 ONLINE ONLINE rac2 Open

ora.rac1.vip

1 ONLINE ONLINE rac1

ora.rac2.vip

1 ONLINE ONLINE rac2

ora.scan1.vip

1 ONLINE ONLINE rac1

[root@rac1 test]#

   

t@rac1 test]# crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

   

[root@rac1 test]# olsnodes -n

rac1 1

rac2 2

[root@rac1 test]#

   

[root@rac1 test]# ocrcheck

Status of Oracle Cluster Registry is as follows :

Version : 3

Total space (kbytes) : 262120

Used space (kbytes) : 3008

Available space (kbytes) : 259112

ID : 1715847047

Device/File Name : +DATA

Device/File integrity check succeeded

   

Device/File not configured

   

Device/File not configured

   

Device/File not configured

   

Device/File not configured

   

Cluster registry integrity check succeeded

   

Logical corruption check succeeded

   

[root@rac1 test]#

   

[root@rac1 test]# crsctl query css votedisk

## STATE File Universal Id File Name Disk group

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

1. ONLINE 6d2c92cdd51f4fabbfe439c297f14698 (ORCL:OCR_VOTE01) [DATA]

2. ONLINE 12637439cc644fdcbf573004cbe18474 (ORCL:OCR_VOTE02) [DATA]

3. ONLINE 382c20ff00364f04bffcf688406e6e31 (ORCL:OCR_VOTE03) [DATA]

Located 3 voting disk(s).

[root@rac1 test]#

   

   

[참고문헌]

   

http://www.allsoft.co.kr/bbs/board.php?bo_table=study91_2&wr_id=30

http://hook.tistory.com/275

http://blog.naver.com/jjuneye?Redirect=Log&logNo=110152112359

http://estenpark.tistory.com/284

http://www.oracle.com/pls/db112/homepage

http://pangsun.tistory.com/

http://www.oracleclub.com/

https://support.oracle.com

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,