ogg基於RMAN初始化

 
RMAN初始化方案
本方案在初始化過程中,不需要源數據庫停機。
步驟如下:
生產端===============================================
1)        源端和目標端安裝OGG軟件,並啓動manager
2)        源端配置OGG的Extract及DataPump
3)      源端啓動Extract進程,並且人工記錄抽取進程啓動的時間點,例如:“2011-05-03 11:20:55” ,將此時間點作爲在下一步中查找長事務的一個判斷條件;可以在數據庫中查詢該時間點:”select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual”
4)        長事務處理:在V$TRANSACTION中查找當前正在運行的事務(RAC環境下,查看gv$transaction),並找出相應的長事務。在執行rman備份之前,確保這些長事務已經完成,或者被kill掉(需要得到dba或者相關管理人員的確認)。
Select  start_time  from gv$transaction where to_date(start_time, ‘yyyy-mm-dd hh24:mi:ss’)<to_date(’2011-05-03 11:20:55′, ‘yyyy-mm-dd hh24:mi:ss’);
注:通過上面的SQL語句查找到比第3歩中記錄下的時間點早的事務,需要等到該事務結束,然後執行rman的備份;
 
 
5)        使用oracle用戶登錄,執行rman備份
–備份數據庫:
$rman target /
run {
allocate channel ch00 type disk maxpiecesize 20g;
allocate channel ch01 type disk maxpiecesize 20g;
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 ‘/u01/backup/bk_%s_%p_%t’;
release channel ch00;
release channel ch01;
}
–備份歸檔和控制文件:(如果有三個日誌文件組,可以按照以下方式進行切換,如果更多,則對應增加切換的次數即可);
run {
ALLOCATE CHANNEL ch00 TYPE DISK MAXPIECESIZE 20G;
ALLOCATE CHANNEL ch01 TYPE DISK MAXPIECESIZE 20G;
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 ‘/u01/backup/ARCH_%U’;
BACKUP CURRENT CONTROLFILE FORMAT ‘/u01/backup/bk_controlfile’;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}
在源機執行
SQL>set linesize 200
SQL>select * from Gv$log;
GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
———- ———- ———- ———- ———- — —————- ————- ———
         1          1         23  104857600          1 NO  CURRENT                 218512 01-DEC-10
         2          1         22  104857600          1 YES ACTIVE                  218422 01-DEC-10
         3          2         17  104857600          1 NO  CURRENT                 218503 01-DEC-10
         4          2         16  104857600          1 YES INACTIVE                218412 01-DEC-10 (*)
 
獲取不活動的已歸檔日誌的最後一個SCN號,如果有多個已歸檔的INACTIVE的組,取最大的FIRST_CHANGE#,這裏取218412
記錄該SCN號(在“第10歩”目標端恢復數據庫時使用),將備份文件,FTP到目標機
========================================
hpux2:/u01/oracle$ ftp 192.168.1.27
Connected to 192.168.1.27.
220 hpux_dr FTP server (Revision 4.0 Version wuftpd-2.6.1 Wed Jun 18 07:11:14 GMT 2008) ready.
Name (192.168.1.27:oracle): oracle
331 Password required for oracle.
Password:
230 User oracle logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /u01/oracle/rmanbk
250 CWD command successful.
ftp> lcd /u01/oracle/rmanbk
Local directory now /u01/oracle/rmanbk
ftp> bin
200 Type set to I.
ftp> prompt
Interactive mode off.
ftp> mput hp*
 
容災端===============================================
6)        使用oracle用戶登錄目標機執行恢復
ü  在目標機建立相同的目錄結構,並正確設置:ORACLE_BASE,ORACLE_HOME,ORACLE_SID環境變量。
ü  拷貝源機init{ORACLE_SID}.ora文件到目標機
ü  cp $ORACLE_HOME/dbs/initorcl.ora  目標機對應目錄
ü  生成口令文件或者copy $ORACLE_HOME/dbs/PWD{ORACLE_SID}
 
7)        啓動數據庫到nomount狀態
sqlplus ‘/ as sysdba’
SQL>startup nomount
 
8)        啓動RMAN恢復控制文件
rman target /
RMAN>restore controlfile from ‘/u01/oracle/rmanbk/hpdb_ctlfile_757366280381.dbf’;
 
9)        將數據庫更改爲mount狀態
sqlplus ‘/ as sysdba’
SQL>alter database mount;
 
10)     啓動RMAN恢復數據庫
rman target /
RMAN>restore database;
 
RMAN>
run
{
   set archivelog destination to ‘/u01/arch’;
   SET UNTIL SCN 218412;     –在第5歩源端記錄下的scn號
   RECOVER DATABASE;
}
 
11)     使用以下SQL語句查找目標端數據庫的SCN號:(得到該SCN號之後,在2.5.8章節中啓動複製進程時,使用該SCN號。)
SQL> SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER;
 
CHECKPOINT_CHANGE# CHECKPOIN
—————— ———
            218412 28-MAY-11
            218412 28-MAY-11
            218412 28-MAY-11
            218412 28-MAY-11
            218412 28-MAY-11
注:
a)  如果目標端數據庫在“第10歩”操作之後,又額外追加了源數據庫rman備份後的歸檔日誌,導致目標端數據庫的SCN號大於“第10歩”中SCN號。所以必須以目標端數據庫當前的SCN爲主,從而避免數據重複。
b)  如果目標端數據庫在“第10歩”操作之後,沒有額外追加源數據庫rman備份後的歸檔日誌,則“第11歩”中得到的SCN號應該與“第10歩”中的SCN號相等;
12)     (備選)如果源端爲RAC,目標端爲單機,需將目標機改爲單機模式
刪除多餘的redolog group
SQL> select THREAD#, STATUS, ENABLED from v$thread;
 THREAD# STATUS ENABLED
———- —— ——–
1 OPEN   PUBLIC
2 CLOSED PRIVATE
 
SQL> select group# from v$log where THREAD#=2;
GROUP#
———-
4
5
6
 
SQL> alter database disable thread 2;
Database altered.
SQL> alter database drop logfile group 4;
alter database drop logfile group 4
ERROR at line 1:
ORA-00350: log 4 of instance racdb2 (thread 2) needs to be archived
ORA-00312: online log 4 thread 2: ‘/u01/oracle/oradata/ractest/log/redo04.log’
SQL> alter database clear unarchived logfile group 4;
Database altered.
SQL> alter database drop logfile group 4;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
 
SQL> alter database drop logfile group 6;
 
Database altered.
SQL> select THREAD#, STATUS, ENABLED from v$thread;
 
THREAD# STATUS ENABLED
———- —— ——–
1 OPEN   PUBLIC
 
 
刪除多餘UNDO表空間
SQL> show parameter undo;
NAME                                 TYPE        VALUE
———————————— ———– ——————————
undo_management                   string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1
 
SQL> select tablespace_name from dba_tablespaces where contents=’UNDO’;
TABLESPACE_NAME
——————————
UNDOTBS1
UNDOTBS2
SQL> drop tablespace UNDOTBS2 including contents and datafiles;
Tablespace dropped.
 
如果源數據庫爲Oracle9i,因爲RMAN時不備份TEMP表空間,需重新創建TEMP表空間
SQL> create temporary tablespace TEMP  tempfile ‘/u01/temp.dbf’ size 500M;
Tablespace created.
SQL> alter database default temporary tablespace TEMP;
Database altered.
13)     目標端打開數據庫
alter database open resetlogs;
注意:由於此時源端和目標端一樣,所以要先刪除DDL那幾個腳本,刪除replicat進程再 重新添加,最後才能 start replicat repea,aftercsn <>
發佈了60 篇原創文章 · 獲贊 2 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章