Oracle 9i RAC向單例項遷移手記
本文簡要介紹瞭如何使用rman的duplicate命令實現Oracle9i RAC向單例項的遷移
本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告
author:husthxd
msn:husthxd@hotmail.com
1. 簡介
本文簡要介紹瞭如何使用rman的duplicate命令實現Oracle9i RAC向單例項的遷移,遷移的目的是建立目標資料庫的一個複製用於測試。
Rman的duplicate命令會restore主資料庫檔案的備份和複製並在測試機器上建立新的資料庫。
環境:
主資料庫:
Oracle 9.2.0.6 RAC
HP-UX 11.11
複製資料庫:
Oracle 9.2.0.6
HP-UX 11.11
2. 步驟
1) 在測試機器上安裝Oracle 9201,並打補丁到9206。
2) 在測試機器上準備初始化引數檔案。
可以從其他機器上複製一份init.ora檔案到測試機上,並修改必要的引數,如db_block_size、instance_name、db_name、control_files、*_dump_dest等。
下面是本例中使用的init.ora檔案。
###########################################
# Optimizer
###########################################
hash_join_enabled=TRUE
query_rewrite_enabled=FALSE
star_transformation_enabled=FALSE
###########################################
# Job Queues
###########################################
job_queue_processes=10
###########################################
# Instance Identification
###########################################
instance_name=test
###########################################
# Miscellaneous
###########################################
aq_tm_processes=1
compatible=9.2.0.0.0
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=EXCLUSIVE
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=500m
sort_area_size=524288
###########################################
# Database Identification
###########################################
db_domain=""
db_name=test
###########################################
# File Configuration
###########################################
control_files=("/u01/app/oracle/oradata/CONTROL01.CTL", "/u01/app/oracle/oradata/CONTROL02.CTL", "/u01/app/oracle/oradata/CONTROL03.CTL")
###########################################
# Pools
###########################################
java_pool_size=10485760
large_pool_size=20971520
shared_pool_size=150m
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_retention=10800
undo_tablespace=UNDOTBS1
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/u01/app/oracle/admin/test/bdump
core_dump_dest=/u01/app/oracle/admin/test/cdump
timed_statistics=TRUE
user_dump_dest=/u01/app/oracle/admin/test/udump
###########################################
# Processes and Sessions
###########################################
processes=200
###########################################
# Redo Log and Recovery
###########################################
fast_start_mttr_target=300
###########################################
# Cache and I/O
###########################################
db_block_size=16384
db_cache_size=400m
db_file_multiblock_read_count=16
sga_max_size=700m
3) 在測試機上建立密碼檔案並啟動資料庫到nomount狀態
$orapwd file=/$ORACLE_HOME/dbs/orapw password=sys entries=5
$sqlplus "/ as sysdba"
SQL>startup nomount
4) 複製主資料庫中最近一次的rman全備份檔案到測試機上對應的目錄下。
本例中把主資料庫中儲存在/backup下的備份集檔案複製到測試機器/backup目錄下。
本例中耗時開啟1.5小時
5) 在複製備份集檔案到測試機的同時,在主伺服器上執行1級累積增量備份;在增量備份完畢後備份歸檔日誌,並把B節點的歸檔日誌備份集檔案複製到A機上;
最後把新生成的1級累積增量備份和當天的歸檔日誌備份集檔案複製到測試機的相應目錄下。
在A機上獲取已歸檔的日誌編號(在測試機上執行不完全恢復的時候需要):
SQL>archivelog log list;
本例中,這些操作耗時1個小時。
6) 啟動rman,連線到目標資料庫和輔助資料庫。本例是在測試機上執行rman,命令列如下:
rman target nocatalog AUXILIARY /
7) 構造run指令碼。
由於資料檔案較多,如果手工寫set newname指令碼會不切實際,有兩種方法獲取set newname指令碼:
A. 從資料字典檢視中獲得
set heading off
set linesize 200
set pagesize 0
spool newname.log
SELECT 'set new name for datafile '||FILE#||' to '||'"'||trim(name)||'"' FROM v$datafile;
Spool off
修改newname.log即可。
B. 用duplicate命令自動生成的指令碼
rman> duplicate target database to "test"
logfile '/u01/app/oracle/oradata/test/redo01.log' size 100m,
'/u01/app/oracle/oradata/test/redo02.log' size 100m,
'/u01/app/oracle/oradata/test/redo03.log' size 100m
nofilenamecheck;
該命令會出錯,無需理會,需要的是其中的指令碼:
正在列印儲存的指令碼: Memory Script
{
…
}
修改其中的指令碼即可。
本例中run指令碼如下:
run
{
set until sequece 2608 thread 1;
set newname for datafile 1 to
"/u01/app/oracle/oradata/system01";
set newname for datafile 2 to
"/u01/app/oracle/oradata/undotbs1_01";
……
duplicate target database to "test"
logfile '/u01/app/oracle/oradata/test/redo01.log' size 100m,
'/u01/app/oracle/oradata/test/redo02.log' size 100m,
'/u01/app/oracle/oradata/test/redo03.log' size 100m
nofilenamecheck;
}
8) 執行該指令碼,rman會自動把資料檔案restore到測試機上,並執行不完全恢復,最後以RESETLOGS方式開啟資料庫。
如果執行期間出現諸如:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/18/2004 18:59:31
ORA-19505: failed to identify file "/archivelog/backup/"
ORA-27037: unable to obtain file status
HP-UX Error: 2: No such file or directory
Additional information: 3
的錯誤,把檔案從主伺服器上複製到測試機上執行以下指令碼:
run
{
ALLOCATE AUXILIARY CHANNEL aux_1 device type disk;
ALLOCATE AUXILIARY CHANNEL aux_2 device type disk;
ALLOCATE AUXILIARY CHANNEL aux_3 device type disk;
set until sequence 2608 thread 1;
recover clone database;
RELEASE CHANNEL aux_1;
RELEASE CHANNEL aux_2;
RELEASE CHANNEL aux_3;
}
如果執行成功會顯示:
allocated channel: aux_1
channel aux_1: sid=17 devtype=DISK
allocated channel: aux_2
channel aux_2: sid=18 devtype=DISK
allocated channel: aux_3
channel aux_3: sid=19 devtype=DISK
executing command: SET until clause
Starting recover at 18-DEC-04
starting media recovery
media recovery complete
Finished recover at 18-DEC-04
released channel: aux_1
released channel: aux_2
released channel: aux_3
RMAN>
最後需要執行:
RMAN>Alter clone database open resetlogs;
至此複製資料庫已經完成了95%。
9) 配置複製資料庫
A.RMAN不會備份臨時資料檔案當然也不會還原臨時資料檔案了,不過rman會在測試機上建立與主資料庫名稱一致的臨時表空間。
需要手工建立臨時表空間檔案:
ALTER TABLESPACE TEMP_SBJ ADD TEMPFILE '/u01/app/oracle/oradata/temp_sbj'
SIZE 10000M REUSE AUTOEXTEND OFF;
B.預設的,測試機資料庫為歸檔模式,需要的話變為非歸檔模式
C.如果例項名稱與主資料庫不一致,修改初始化引數SERVICE_NAMES,把主資料庫服務名加入到測試機SERVICE_NAMES中。
如:
alter system set service_names='test,' scope=both
/
alter system register
/
10) 確認客戶端sqlplus和應用程式均可以正常連線到測試資料庫
3. 經驗與教訓
1) 由於主資料庫的歸檔日誌備份集檔案的儲存位置為/archivelog/backup下,而規劃測試機的時候沒有考慮到歸檔日誌備份集檔案的儲存,
最後在測試機上勉強加了一個大小為8g的/archivelog。
這樣做的直接後果是為避免測試機上的/archivelog/backup的空間不足只能每次在複製資料庫前先執行累積增量備份來減少需要應用的歸檔日誌的數目。
2) 由於主資料庫比較大,資料檔案總大小為250G+,而且第一次restore的時候沒有配置好large_pool_size引數,致使restore異常緩慢(1.5個小時)。
在restore後建立控制檔案時出現找不到密碼檔案的錯誤,當時我真是ft。當時如果使用skip tablespace子句把非系統、
undo表空間剔除在外首先進行一次測試就可以節省不少時間了。
3) 在測試機上restore後建立控制檔案時出現找不到密碼檔案的錯誤時,差點出現一次重大錯誤。當時想直接在RMAN中執行以下語句:
RMAN>startup force nomout
RMAN>sql "create controlfile ………"
殊不知startup force nomout操作的是主資料庫,直到前臺業務人員報告不能連線主資料庫時我才意識到操作錯誤,幸好這條命令出錯,不然又要搞半天了。
4) 在測試機碰到一個奇怪的問題,sqlnet.ora中設定SQLNET.AUTHENTICATION_SERVICES= (NTS),本地conn / as sysdba時出現許可權不足的錯誤,
在刪除SQLNET.AUTHENTICATION_SERVICES= (NTS)後才可以。而且在遠端均不能以sysdba登陸到測試機資料庫上,出錯資訊是許可權不足。
5) 使用catalog模式的時候,在recover clone database;時出現ora-600錯誤,不知道是不是9206的bug,最後使用nocatalog模式解決該問題。
4. 小結
在實施前估算時間是4-5個小時,最後總共花了10個小時才完成,走了不少彎路,對風險估計不足,也沒想到測試機的效能這麼差,
restore需要差不多2個小時才完成。最後,不管怎樣,保持冷靜的頭腦是關鍵。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21676/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle DataBase單例項遷移到Oracle RACOracleDatabase單例
- 加班一天終於完成RAC向單例項的遷移單例
- oracle單例項通過dataguard遷移到RAC 轉Oracle單例
- 資料從Oracle向Mysql資料遷移例項OracleMySql
- RAC 例項 遷移到 單例項 -- 使用RMAN Duplicate單例
- oracle單例項轉RACOracle單例
- Oracle11g使用rman從單例項遷移到racOracle單例
- oracle10g單例項遷移至3節點RACOracle單例
- Oracle 10g 安裝及單例項遷移到RACOracle 10g單例
- 單例項資料遷移到RAC補充單例
- 單例項資料庫expdp遷移到RAC庫單例資料庫
- oracle rac及單例項開啟歸檔Oracle單例
- Oracle 11g RAC 配置單例項 DataGuardOracle單例
- 單例項和RAC打造的ORACLE STREAM(完)單例Oracle
- 單例項和RAC打造的ORACLE STREAM(四)單例Oracle
- 單例項和RAC打造的ORACLE STREAM(三)單例Oracle
- 單例項和RAC打造的ORACLE STREAM(二)單例Oracle
- 單例項和RAC打造的ORACLE STREAM(一)單例Oracle
- 9i RAC轉換為SINGLE例項
- RAC起單例項make單例
- 【ASM學習】普通資料庫向ASM例項的遷移(二)ASM資料庫
- 【ASM學習】普通資料庫向ASM例項的遷移(一)ASM資料庫
- 使用RMAN遷移單庫到RAC
- Oracle RAC 遷移替換 OCR 盤Oracle
- Oracle向PostgresQL移植例項OracleSQL
- oracle 10g rac 單例項恢復至ORACLE10G RAC RMANOracle 10g單例
- RAC+DG(asm單例項)ASM單例
- rac恢復到單例項單例
- 搭建RAC到單例項DG單例
- 單例項恢復至RAC單例
- Oracle 11g RAC到單例項OGG同步Oracle單例
- 單機遷移資料到RAC完整案例
- 記錄一次Oracle 11.2.0.4 RAC異地恢復到單例項Oracle單例
- 遷移學習系列---基於例項方法的遷移學習遷移學習
- 記錄一次9i單節點轉rac,以及一套rac儲存遷移之後的整體容災方案
- 透過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- 通過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- 資料庫遷移手記資料庫