--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