情景描述:
有朋友問,MS SQL SERVER將數據庫備份還原到其它機器很方便,基本就是傻瓜式操作,Oracle有控制文件、參數文件一堆東西,覺得還原很複雜;其實不然,我抽出了點時間,簡單演示下案例,朋友們,參考下!爲了簡單快速,我採用RMAN備份和還原。
--說明:
(1).RMAN備份到異機恢復的時候,db_name需要相同。
如果說要想改成其他的實例名,可以在恢復成功後,用nid 命令修改。 實例名的信息會記錄到控制文件裏,所以如果在恢復的時候,如果實例名不一致,恢復的時候會報錯。
(2).恢復的路徑和源庫不一致時,就需要在restore命令中使用set 命令指定新位置,並且使用switch datafile all將變更信息更新的到控制文件中。
測試環境:
源數據庫服務器A,安裝在E,備份目錄已在E盤; 源數據庫服務器B,安裝在F盤.
------------------------------------
一、源數據庫準備工作
------------------------------------
--1. 查詢DBID
SQL> select name,dbid from v$database;
NAME DBID
--------- ----------
ORCL 1320546556
--2. 備份源數據DB
run {
configure retention policy to recovery window of 14 days;
configure controlfile autobackup on; --自動開啓控制文件備份
configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F';
allocate channel c1 device type disk format 'E:\backup\data\bak_%u';
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
sql 'alter system archive log current';
backup incremental level=0 database skip inaccessible
plus archivelog filesperset 20
delete all input;
release channel c1;
release channel c2;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt obsolete;
--或
run {
configure retention policy to recovery window of 14 days;
allocate channel c1 device type disk format 'E:\backup\data\bak_%u';
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
sql 'alter system archive log current';
backup incremental level=0 database skip inaccessible
plus archivelog filesperset 20
delete all input;
--手動直接指明備份文件名和路徑
backup current controlfile tag='bak_ctrollfile' format='E:\backup\controlfile\bak_ctl_file_%U_%T';
backup spfile tag='bak_spfile' format='E:\backup\controlfile\bak_spfile_%U_%T';
release channel c1;
release channel c2;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt obsolete;
--3.手動備份spfile
create pfile='E:\backup\inittest.ora' from spfile;
------------------------------------
二、目標庫準備工作:
------------------------------------
---步驟1. 創建口令文件
--如果有就不需要新建.
orapwd file=F:\app\Administrator\product\11.2.0\dbhome_1\database\PWDorcl.ora password=password
--步驟2.恢復參數文件
--方法1.源數據庫spfile並拷貝到B數據庫服務器
\\192.168.2.25\e$\backup\inittest.ORA
複製到
E:\bk\inittest.ORA
--步驟3.編輯參數文件中的文件路徑
如路徑和原來一樣,則不需修改
eg:
- *_DUMP_DEST
- LOG_ARCHIVE_DEST*
- CONTROL_FILES
---實例:
orcl.__db_cache_size=939524096
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='F:\app\Administrator'#修改路徑
orcl.__pga_aggregate_target=855638016
orcl.__sga_target=2550136832
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=1526726656
orcl.__streams_pool_size=16777216
*.audit_file_dest='F:\app\Administrator\admin\orcl\adump' #修改路徑
*.audit_trail='db'
*.compatible='11.2.0.0.0'
#修改路徑
*.control_files='F:\app\Administrator\oradata\orcl\control01.ctl','F:\app\Administrator\oradata\orcl\control02.ctl','F:\app\Administrator\oradata\orcl\control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='F:\arch' #修改路徑
*.db_recovery_file_dest_size=6442450944
*.diagnostic_dest='F:\app\Administrator' #修改路徑
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_dest_1='location=f:\arch' #修改路徑
*.nls_date_format='yyyy-mm-dd hh:mi:ss'
*.open_cursors=300
*.optimizer_capture_sql_plan_baselines=TRUE
*.pga_aggregate_target=845152256
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2536505344
*.skip_unusable_indexes=TRUE
*.undo_tablespace='UNDOTBS1'
--步驟4.重啓實例,使用已編輯好的參數文件
將用pfile將B數據庫服務器啓動到nomout 狀態
rman target /
startup nomount pfile='e:\bk\inittest.ora'