數據庫goldgate重新同步

 

--szfsweb re-init


1、target db , 將szfsweb的所有進程停下來

oracle@linux:~$ export ORACLE_SID=szfsweb
oracle@linux:~$ cd /szfswebgg/ggate111112
oracle@linux:ggate111112$ pwd
/szfswebgg/ggate111112
oracle@linux:ggate111112$ ./ggsci

GGSCI (linux) 2> stop *

Sending STOP request to REPLICAT R_BANK ...
Request processed.

Sending STOP request to REPLICAT R_SZFSCP ...
Request processed.

GGSCI (linux) 3> info all

Program     Status      Group       Lag           Time Since Chkpt
MANAGER     RUNNING                                          
REPLICAT    STOPPED     R_BANK      00:00:00      00:00:08   
REPLICAT    STOPPED     R_SZFSCP    00:00:00      00:00:06   


2、source db , 先把抽取進程拉起來

$ cd /gg/ggate111112
$ ./ggsci

--在GGSCI中操作,參考命令如下:
alter extract E_SZWEB,begin now
start extract E_SZWEB

--啓動數分鐘後,檢查是否正常
info all
Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     RUNNING     D_BANK      00:00:00      00:00:07   
EXTRACT     RUNNING     D_SZFSCP    00:00:00      00:00:05   
EXTRACT     RUNNING     E_SZWEB     00:00:16      00:00:04   

view report E_SZWEB

3、在災備端數據庫刪除被複制的用戶下所有對象 (168.11.205.121)

$export ORACLE_SID=szfsweb
$sqlplus / as sysdba
SQL> drop user BANK cascade;
User dropped.

SQL> drop user SZFSCP cascade;
User dropped.


4、source db 確認沒有長事務,或存在的長事務不涉及要同步的數據

在使用DATAPUMP工具導出前,需要在生產庫確保GoldenGate抽取進程啓動的時間點前的事務已經結束。確認長事務情況,可通過下述命令實現:

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
col event for a30
col OSUSER for a10
col USERNAME for a10
col PROGRAM for a35
SELECT s.sid,s.serial#,s.status,s.username,t.start_time,s.WAIT_TIME, s.osuser, s.sql_id, s.program,START_DATE
FROM gv$session s,gv$transaction t
WHERE s.INST_ID=t.INST_ID and s.saddr=t.ses_addr
order by  t.start_time desc;


5、source db 將數據按用戶導出:

--先獲取SCN,記住導出的SCN
SQL> col CURRENT_SCN for 9999999999999999
SQL> select CURRENT_SCN from v$database ;

      CURRENT_SCN
-----------------
         286171743

--sourcd db 導出數據

$ mkdir -p /gg/ggate111112/expdp
$ cd /gg/ggate111112/expdp
$ cp /backup/expdp_daily_bak/szfscp.par /gg/ggate111112/expdp/szfsweb.par

--確定一個導出 directories
SQL> create or replace directory SZFSWEB_DUMP as '/gg/ggate111112/expdp';
Directory created.

SQL> select DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='SZFSWEB_DUMP';
DIRECTORY_PATH
--------------------------------------------------------------------------------
/gg/ggate111112/expdp

--Modify parfile as follows:
USERID="/ as sysdba"
DUMPFILE=szfsweb1.dmp,szfsweb2.dmp,szfsweb3.dmp,szfsweb4.dmp
LOGFILE=gg_szfsweb.log
FILESIZE=10G
DIRECTORY=szfsweb_dump
JOB_NAME=szfsweb_expdp
PARALLEL=4
SCHEMAS=BANK,SZFSCP
EXCLUDE=SEQUENCE
FLASHBACK_SCN=286171743
COMPRESSION=all

$ expdp parfile=szfsweb.par


6、從主機FTP傳送expdp 的dump文件到災備機器上,並導入數據

--create dir for dump file
$ mkdir -p /szfswebgg/ggate111112/expdp
$ cd /szfswebgg/ggate111112/expdp

--使用FTP將DMP文件傳送到災備端
oracle@linux:expdp$ ftp 168.11.205.203
ftp> cd /gg/ggate111112/expdp
250 Directory successfully changed.
ftp> ls
ftp> bin
200 Switching to Binary mode.
ftp> prompt
Interactive mode off.
ftp> mget szfsweb*.dmp

--create direcitory on target database szfsweb
$sqlplus / as sysdba
SQL> create or replace directory SZFSWEB_DUMP as '/szfswebgg/ggate111112/expdp';
Directory created.

SQL> select DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='SZFSWEB_DUMP';
DIRECTORY_PATH
-------------------------------
/szfswebgg/ggate111112/expdp


--導入數據,使用以下parfile  imp_szfsweb.par:
USERID="/ as sysdba"
DUMPFILE=szfsweb1.dmp,szfsweb2.dmp,szfsweb3.dmp,szfsweb4.dmp
LOGFILE=imp_szfsweb.log
DIRECTORY=szfsweb_dump
JOB_NAME=szfsweb_impdp
PARALLEL=4
full=y

$ impdp parfile=imp_szfsweb.par
確保導出導入沒有報錯

impdp parfile=imp_szfsweb.par

--job log report:
ORA-39082: Object type ALTER_PROCEDURE:"SZFSCP"."CREATEDATA_CP_BILLINFO" created with compilation warnings

 

7、創建序列

--在生產庫獲取當前序列定義,通過下述命令實現:
SQL> select owner,object_type,object_name from dba_objects where object_type='SEQUENCE' and owner in ('BANK','SZFSCP');
OWNER                          OBJECT_TYPE         OBJECT_NAME
------------------------------ ------------------- ------------------------------
SZFSFE                         SEQUENCE            SEQ_FE_PAY_TRN
SZFSFE                         SEQUENCE            SEQ_FE_MANAG_INFO
SZFSFE                         SEQUENCE            SEQ_FE_LOG
SZFSG                          SEQUENCE            SEQ_GSFRONT_TRNNO
SZFSH                          SEQUENCE            SEQ_SGFRONT_TRNNO


set lin 200 pagesize 500
set long 99999
set longc 99999
begin
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',TRUE);
end;
/
spool szfsweb_seq.sql
select dbms_metadata.get_ddl(upper('SEQUENCE'),SEQUENCE_NAME,sequence_OWNER) from dba_sequences where sequence_OWNER in ('BANK','SZFSCP');
spool off;

CREATE SEQUENCE  "BANK"."SEQ_WEB_INFO"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 657360 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "BANK"."SEQ_WEB_MSG"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 3003 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "BANK"."SEQ_WEB_OTHER"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 7436 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "BANK"."SEQ_WEB_SYS"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 462204 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "BANK"."SEQ_WEB_TRN"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 221736 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "SZFSCP"."SEQ_CP_BILLPERIOD"  MINVALUE 1 MAXVALUE 999999 INCREMENT BY 1 START WITH 2002 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "SZFSCP"."SEQ_CP_MANAG_INFO"  MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 984849 CACHE 1000 ORDER  CYCLE ;
CREATE SEQUENCE  "SZFSCP"."SEQ_CP_PAY_TRN"  MINVALUE 10000000 MAXVALUE 39999999 INCREMENT BY 1 START WITH 10026726 CACHE 1000 ORDER  CYCLE ;


--執行szfsweb_seq.sql
獲取定義後,在災備庫執行創建 szfsweb_seq.sql

--最後比較兩邊的對象個數:

--source db
SQL> select owner,status,count(*) from dba_objects where owner in ('BANK','SZFSCP') group by owner,status;
OWNER                          STATUS    COUNT(*)
------------------------------ ------- ----------
BANK                           VALID          206
BANK                           INVALID          1
SZFSCP                         VALID          423
SZFSCP                         INVALID          5
--source db
SQL> select owner,object_type,object_name from dba_objects where owner in ('BANK','SZFSCP') and status='INVALID';
OWNER                          OBJECT_TYPE         OBJECT_NAME
------------------------------ ------------------- ------------------------------
SZFSCP                         PROCEDURE           CREATEDATA_CP_BILLINFO
SZFSCP                         PROCEDURE           CREATEDATA_CP_BTOSTRNDETAIL
SZFSCP                         PROCEDURE           CREATEDATA_CP_TRNRECEIPT
SZFSCP                         PROCEDURE           CREATEDATA_CP_BATCHTRNDETAIL
SZFSCP                         PROCEDURE           CREATEDATA_CP_TRNDETAIL
BANK                           PROCEDURE           CREATEDATA_WEBDEBTRANDETAIL

--target db
SQL>  select owner,status,count(*) from dba_objects where owner in ('BANK','SZFSCP') group by owner,status;
OWNER                          STATUS    COUNT(*)
------------------------------ ------- ----------
BANK                           VALID          207
SZFSCP                         VALID          427
SZFSCP                         INVALID          1

SQL> select owner,object_type,object_name from dba_objects where owner in ('BANK','SZFSCP') and status='INVALID';
OWNER                          OBJECT_TYPE         OBJECT_NAME
------------------------------ ------------------- ------------------------------
SZFSCP                         PROCEDURE           CREATEDATA_CP_BILLINFO

8、target database site  啓動複製進程


--使用如下命令
GGSCI (linux) 3> start replicat R_BANK,aftercsn 286171743
GGSCI (linux) 4> start replicat R_SZFSCP,aftercsn 286171743


--幾分鐘後,檢查是否啓動正常
info all

view report R_SZFSCP
view report R_BANK

--檢查丟棄文件,確保沒有丟棄
cd /szfsdbgg/ggate111112/dirrpt
ls -ltr *dsc


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章