Goldengate for oracle 數據一致性初始化方案

運維的過程是不斷產生新的問題,需要不斷研究和前進的過程。十一假期剛過客戶就電話告知之前的oracle 同步數據不一致需要處理,然而又不能停業務。


這裏研究使用RMAN初始化方案

--不需要源數據庫停機。


1.環境介紹:

客戶三臺數據庫,三臺之間相互同步DDL、DML


2.前言:

每個高可用的場景不一樣,處理各有千秋,但是大致步驟雷同。我的故障不能直接就去處理這樣的故障,需要先分析每個庫的差異,哪個庫的數據是正常的在初始化到其它數據庫上,在啓動同步。由於是生產環境,數據庫的數據實時在變化,所以源端的抽取進程需要開啓(傳輸進程可開),目標端的恢復停止,待初始化完成後再開啓。


3.步驟如下:

生產端===============================================

1)使用oracle用戶登錄,執行rman備份

–備份數據庫:

mkdir -p /data/backup /data/dbback/gpofullbak
chown -R oracle.oinstall /data/backup /data/dbback/gpofullbak
rman target /
run {
allocate channel ch00 type disk maxpiecesize 30g;
allocate channel ch01 type disk maxpiecesize 30g;
crosscheck backupset;
delete noprompt expired backupset;
sql 'alter system archive log current';
backup as backupset skip inaccessible tag hot_db_bk_level0
full database
format '/data/backup/bk_%s_%p_%t';
release channel ch00;
release channel ch01;
}

–備份歸檔和控制文件:

run {
ALLOCATE CHANNEL ch00 TYPE DISK MAXPIECESIZE 30g;
ALLOCATE CHANNEL ch01 TYPE DISK MAXPIECESIZE 30g;
sql 'alter system switch logfile';
sql 'alter system switch logfile';
sql 'alter system switch logfile';
sql 'alter system archive log current';
BACKUP ARCHIVELOG ALL FORMAT '/data/backup/ARCH_%U';
BACKUP CURRENT CONTROLFILE FORMAT '/data/backup/bk_controlfile';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}

--在源機執行

SQL>select * from Gv$log;
   INST_ID    GROUP#        THREAD#  SEQUENCE#        BYTES        BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1            1              1        795  52428800              512          1 YES INACTIVE              17689009 09-OCT-15    17689018 09-OCT-15
         1            2              1        796  52428800              512          1 YES INACTIVE              17689018 09-OCT-15    17689026 09-OCT-15
         1            3              1        797  52428800              512          1 NO  CURRENT              17689026 09-OCT-15  2.8147E+14

記錄該SCN號 17689018

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

SQL>create pfile='/tmp/initora11g.ora' from spfile ;
scp -rp /tmp/initora11g.ora [email protected]:/u01/app/oracle/product/11.2.0/db_1/dbs/
scp -rp /data/backup/ /data/dbback/ [email protected]:/data

目標端===============================================

2)啓動數據庫到nomount狀態

SQL>startup nomount


3)啓動RMAN恢復控制文件

rman target /
RMAN>restore controlfile from '/data/backup/bk_controlfile';

4)將數據庫更改爲mount狀態

sqlplus / as sysdba
SQL>alter database mount;


5)啓動RMAN恢復數據庫

rman target /
RMAN>restore database;
RMAN>
run
{
   set archivelog destination to '/u01/app/oracle/flash_recovery_area';
   SET UNTIL SCN 17689018; #注意使用前面記錄下的scn號
   RECOVER DATABASE;
}



6)查看

SQL> SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER;
CHECKPOINT_CHANGE# CHECKPOIN
------------------ ---------
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
          17689018 09-OCT-15
8 rows selected.
SQL>alter database open resetlogs;


到這裏備份恢復已經完成。

7)啓動恢復

start rini_1, aftercsn 17689018

8)開啓目標端所以進程


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