วันอังคารที่ 2 ตุลาคม พ.ศ. 2555

การ Setup Oracle 11g R2 Replicate Data & Structure โดยใช้ Features Oracle Stream

FOR SOURCE DATABASE : gcoop : 
โดยในที่นี้จะทำการ Sync ที่ SCHEMA IFSCT 

Step 1 : เพิ่มเติมในส่วนของ File C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\TNSNAMES.ORA 
เพื่อให้สามารถเข้าถึง Services ของ Oracle ได้ ดังนี้

gcoop =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =gcoop )
    )
  )

gcoopdr =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = gcoopdr)
    )
  )

Step 2 : เปิด CMD  แล้วพิมพ์คำสั่ง เพื่อกำหนดให้ Database เก็บ archivelog ก่อน ดังนี้ 
  
set oracle_sid=gcoop
sqlplus sys/admin as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog ;
SQL> alter database open;




Step 3 : สร้าง User STREAM เพื่อทำหน้าที่ Sync Data ระหว่าง 2 Database ดังนี้
SQL> conn sys/admin@gcoop as sysdba
SQL> create tablespace STREAM
 datafile 'C:\app\Administrator\oradata\gcoop\stream01.dbf' size 25m
 autoextend on;
SQL> create user STRMADMIN
 identified by strmadmin;
SQL> grant DBA to strmadmin;
SQL> begin
 dbms_streams_auth.grant_admin_privilege (
 grantee =>'strmadmin',
 grant_privileges => TRUE);
 end;
/






Step 4 : สร้าง Database Link ที่ชี้ไปยัง Database ที่ต้องการ Sync ดังนี้
SQL> conn strmadmin/strmadmin@gcoop
SQL> create database link gcoopdr
  connect to strmadmin
  identified by strmadmin
  using 'gcoopdr';
 



Step 5 : กำหนดค่าฐานข้อมูลให้ทำการเก็บ Log การเปลี่ยนแปลงด้วย   
SQL> alter system set global_names=true scope=both;

กรณีที่ 1 ต้องการทำทั้ง Database 
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;

กรณีที่ 2 ต้องการทำบาง Table เท่านั้น 
ให้ Drop กรณีที่ 1 ออกก่อน
SQL>ALTER DATABASE DROP SUPPLEMENTAL LOG DATA ;

แล้ว Add TABLE ที่ ต้องการทำ ตามลำดับ ในที่นี้ เช่น Schema = ifsct และ Table = mbmembmaster
SQL>alter table ifsct.mbmembmaster add supplemental log data (all) columns;




Step 6 : สร้าง Directory สำหรับเก็บ Sync Transaction Data

mkdir C:\app\Administrator\oradata\gcoop\gcoop
sqlplus sys/admin as sysdba
SQL> conn strmadmin/strmadmin@gcoop
SQL> create directory dir_gcoop as 'C:\app\Administrator\oradata\gcoop\gcoop';



เสร็จแล้วให้ทำ Step 1 - 6 อีกครั้ง แต่ที่ เครื่อง gcoopdr ดังนี้

Step 7 : เพิ่มเติมในส่วนของ File C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\TNSNAMES.ORA 
เพื่อให้สามารถเข้าถึง Services ของ Oracle ได้ ดังนี้

gcoop =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =gcoop )
    )
  )

gcoopdr =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = gcoopdr)
    )
  )

Step 8 : เปิด CMD  แล้วพิมพ์คำสั่ง เพื่อกำหนดให้ Database เก็บ archivelog ก่อน ดังนี้ 
  
set oracle_sid=gcoopdr
sqlplus sys/admin as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog ;
SQL> alter database open;





Step 9 : สร้าง User STREAM เพื่อทำหน้าที่ Sync Data ระหว่าง 2 Database ดังนี้
SQL> conn sys/admin@gcoopdr as sysdba
SQL> create tablespace STREAM
 datafile 'C:\app\Administrator\oradata\gcoopdr\stream01.dbf' size 25m
 autoextend on;
SQL> create user STRMADMIN
 identified by strmadmin;
SQL> grant DBA to strmadmin;
SQL> begin
 dbms_streams_auth.grant_admin_privilege (
 grantee =>'strmadmin',
 grant_privileges => TRUE);
 end;
/




Step 10 : สร้าง Database Link ที่ชี้ไปยัง Database ที่ต้องการ Sync ดังนี้
SQL> conn strmadmin/strmadmin@gcoopdr
SQL> create database link gcoop
  connect to strmadmin
  identified by strmadmin
  using 'gcoop';
 
Step 11 : กำหนดค่าฐานข้อมูลให้ทำการเก็บ Log การเปลี่ยนแปลงด้วย  
SQL> alter system set global_names=true scope=both;

กรณีที่ 1 ต้องการทำทั้ง Database
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;

กรณีที่ 2 ต้องการทำบาง Table เท่านั้น
ให้ Drop กรณีที่ 1 ออกก่อน
SQL>ALTER DATABASE DROP SUPPLEMENTAL LOG DATA ;

แล้ว Add TABLE ที่ ต้องการทำ ตามลำดับ ในที่นี้ เช่น Schema = ifsct และ Table = mbmembmaster
SQL>alter table ifsct.mbmembmaster add supplemental log data (all) columns;



Step 12 : สร้าง Directory สำหรับเก็บ Sync Transaction Data  

mkdir C:\app\Administrator\oradata\gcoopdr\gcoopdr
sqlplus sys/admin as sysdba
SQL> conn strmadmin/strmadmin@gcoopdr
SQL> create directory dir_gcoopdr as 'C:\app\Administrator\oradata\gcoopdr\gcoopdr';





Step 13 : ทำที่เครื่อง gcoop สร้าง Stream script โดยการ RUN PL/SQL

สำหรับตัวแปร
include_ddl  =TRUE แสดงว่าให้แก้ไข Structure ด้วย
perform_actions =TRUE  ให้ทำการ Sync ตรงเข้า ฐานข้อมูลทันที , FALSE = จะสร้างเป็น Script เก็บไว้ที่ Directory ที่สร้างไว้ใน Steps 6 และ 12
bi_directional  = TRUE  เป็นแบบ two-way sync , FALSE = one-way sync จาก source ไปยัง destination.




จะเห็นว่า หลังจาก Run สำเร็จจะมี File เกิดขึ้นที่ Directory ที่ สร้างใน Step 6 ที่ Server gcoop


จะเห็นว่า หลังจาก Run สำเร็จจะมี File เกิดขึ้นที่ Directory ที่ สร้างใน Step 12 ที่ Server gcoopdr


กรณีต้องการยกเลิกการ Sync ให้ Run คำสั่ง 
sqlplus sys/admin@gcoop as sysdba
SQL>exec dbms_streams_adm.remove_streams_configuration;

หรือ กรณีต้องการแก้ไข สามารถ Run Step 13 ได้



ไม่มีความคิดเห็น:

แสดงความคิดเห็น