oracle 異機(jī)恢復(fù)小記
試驗(yàn)環(huán)境:
操作系統(tǒng):redhat 7.5
數(shù)據(jù)庫(kù)版本:oracle 11.2.0.4
試驗(yàn)步驟:
1、 異機(jī)恢復(fù)前,首先需要安裝目標(biāo)數(shù)據(jù)庫(kù),在新的服務(wù)器,可以選擇只安裝oracle軟件。
2、 源數(shù)據(jù)庫(kù)開啟有歸檔模式,若開啟了歸檔模式,可以手動(dòng)切換一下日志,確保歸檔可以正常運(yùn)行。切換后,可以使用SQL:select name from v$archived_log;查看歸檔信息。
3、 oracle默認(rèn)是備份是備份在快速恢復(fù)區(qū),若不是以快速恢復(fù)區(qū)作為備份存放路徑,備份路徑可以在sqlplus 中,使用命令:show parameter db_recovery_file_dest 查看。
4、 使用rman,對(duì)源數(shù)據(jù)庫(kù)進(jìn)行備份,使用命令:rman target / 進(jìn)入到rman命令行中。
5、 因數(shù)據(jù)庫(kù)的快速恢復(fù)區(qū)有其他備份的文件,這里新建一個(gè)/home/oracle/backupset目錄,用來(lái)存放這次的備份,具體操作按實(shí)際情況來(lái),可參照下面語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份:
RMAN> run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
sql 'alter system archive log current';
backup database format ' /home/oracle/backupset /data_%U.bak';
backup archivelog all format ' /home/oracle/backupset /arch_%U.bak';
backup current controlfile format ' /home/oracle/backupset /ctl_%U.bak';
release channel ch1;
release channel ch2;
}
6、 接著從源數(shù)據(jù)庫(kù)中,備份一個(gè)pfile文件備用,進(jìn)入sqlplus命令行中,執(zhí)行下面的語(yǔ)句,創(chuàng)建pfile文件;create pfile='
/home/oracle/backupset/pfile.ora' from spfile;
7、 將備份的拷貝到目標(biāo)數(shù)據(jù)庫(kù)服務(wù)器中去??墒褂?scp 命令操作,參考命令:
scp -r /home/oracle/backupset [url=]oracle@192.168.xxx.xxx:/home/oracle/[/url]
這是從源數(shù)據(jù)庫(kù)操作的命令方式。
scp -r [url=]oracle@192.168.xxx.xxx: /home/oracle/backupset /home/oracle/[/url]
這是從目標(biāo)數(shù)據(jù)庫(kù)服務(wù)器操作的命令方式。
8、 使用scp命令將源數(shù)據(jù)庫(kù)的密碼文件拷貝到目標(biāo)數(shù)據(jù)庫(kù)中:scp $ORACLE_HOME/dbs/orapworcl [url=]oracle@192.168.xxx.xxx:$ORACLE_HOME/dbs/[/url]
9、 根據(jù)備份的參數(shù)文件,還原audit_file_dest、control_files與恢復(fù)區(qū)的目錄。
使用命令,查看參數(shù)文件pfile :
Cat/home/oracle/backupset/pfile.ora
范例內(nèi)容如下:注意的位置,這里標(biāo)紅
orcl.__db_cache_size=452984832
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base='/u01/app'#ORACLE_BASEset from environment
orcl.__pga_aggregate_target=432013312
orcl.__sga_target=641728512
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=163577856
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/admin/orcl/adump'
*.audit_trail='DB'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest_size=4070572032
*.db_recovery_file_dest='/u01/app/flash_recovery_area'
*.diagnostic_dest='/u01/app'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'
*.event=''
*.log_archive_format='%t_%s_%r.arc'
*.memory_target=1073741824
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
這里因?yàn)橛幸粋€(gè)控制文件在快速恢復(fù)區(qū)中,在創(chuàng)建那個(gè)目錄時(shí),快速恢復(fù)區(qū)也創(chuàng)建完成了,所以這里就不再創(chuàng)建快速恢復(fù)區(qū)
創(chuàng)建目錄命令如下:
Mkdir-p /u01/app/admin/orcl/adump
Mkdir -p /u01/app/oracle/oradata/orcl
Mkdir -p /u01/app/flash_recovery_area/orcl
10、 然后以參數(shù)文件pfile 將目標(biāo)數(shù)據(jù)庫(kù)啟動(dòng)到nomount狀態(tài)。
因本機(jī)的恢復(fù)目錄是快速恢復(fù)區(qū),故將這些備份的文件,移運(yùn)到快速恢復(fù)區(qū)
/u01/app/flash_recovery_area下。在目標(biāo)數(shù)據(jù)庫(kù)中,進(jìn)入sqlplus命令行。執(zhí)行SQL語(yǔ)句:startup nomount pfile=‘
/u01/app/flash_recovery_area/pfile.ora‘;
11、 啟動(dòng)到nomount狀態(tài)后,使用SQL語(yǔ)句:createspfile from pfile=‘
/u01/app/flash_recovery_area/pfile.ora‘;創(chuàng)建數(shù)據(jù)庫(kù)的spfile文件,然后showdown immediate 關(guān)閉數(shù)據(jù)庫(kù),以spfile將數(shù)據(jù)庫(kù)啟動(dòng)到nomount狀態(tài),驗(yàn)證spfile創(chuàng)建是否成功。
12、 還原控制文件,進(jìn)入rman命令行,使用restorecontrolfile 來(lái)還原控制文件,
參照:restorecontrolfile from '
/u01/app/flash_recovery_area/ctl_08uevvek_1_1.bak '
13、 控制文件還原后將數(shù)據(jù)庫(kù)啟動(dòng)到mount狀態(tài),使用命令:alter database mount 使數(shù)據(jù)庫(kù)轉(zhuǎn)到mount 狀態(tài)。
14、 還原和恢復(fù)數(shù)據(jù)庫(kù),接著上面,在rman命令行中,執(zhí)行命令:restore database; 還原數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)還原后,再執(zhí)行命令:recoverdatabase; 來(lái)恢復(fù)數(shù)據(jù)庫(kù)。在恢復(fù)的最后,會(huì)有類似下面標(biāo)紅處關(guān)于歸檔日志的提示:
RMAN>recover database;
Startingrecover at 22-OCT-19
using channelORA_DISK_1
startingmedia recovery
channelORA_DISK_1: starting archived log restore to default destination
channelORA_DISK_1: restoring archived log
archived logthread=1 sequence=62
channel ORA_DISK_1:reading from backup piece /home/oracle/backupset/arch_07uevvej_1_1.bak
channelORA_DISK_1: piece handle=/home/oracle/backupset/arch_07uevvej_1_1.baktag=TAG20191022T211042
channelORA_DISK_1: restored backup piece 1
channelORA_DISK_1: restore complete, elapsed time: 00:00:01
archived logfilename=/u01/app/flash_recovery_area/ORCL/archivelog/2019_10_22/o1_mf_1_62_gty1g3f8_.arcthread=1 sequence=62
channeldefault: deleting archived log(s)
archived logfile name=/u01/app/flash_recovery_area/ORCL/archivelog/2019_10_22/o1_mf_1_62_gty1g3f8_.arcRECID=10 STAMP=1022362563
unable tofind archived log
archived logthread=1 sequence=63
RMAN-00571:===========================================================
RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571:===========================================================
RMAN-03002:failure of recover command at 10/22/2019 21:36:04
RMAN-06054: media recovery requesting unknownarchived log for thread 1 with sequence 63 and starting SCN of 1829484
這里根據(jù)最后的SCN號(hào),執(zhí)行命令:recoverdatabase until scn 1829484; 通過(guò)歸檔日志進(jìn)行最后的數(shù)據(jù)庫(kù)恢復(fù)。
15、 恢復(fù)完成后,將數(shù)據(jù)庫(kù)以resetlogs 方式打開。
alter database open resetlogs;
16、 完成后,對(duì)數(shù)據(jù)庫(kù)恢復(fù)情況進(jìn)行驗(yàn)證
查看恢復(fù)的實(shí)例:
SQL>select instance_name, status from v$instance;
INSTANCE_NAME STATUS
----------------------------
orcl OPEN
查看數(shù)據(jù)庫(kù)的讀寫模式:
SQL>select dbid, open_mode from v$database;
DBID OPEN_MODE
------------------------------
1549427181READ WRITE
查看數(shù)據(jù)文件恢復(fù)情況:
SQL>select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/system01.dbf
查看重做日志恢復(fù)情況:
SQL>select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log
查看重做日志組恢復(fù)情況:
SQL>SELECT THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;
THREAD# SEQUENCE# ARC STATUS
-------------------- --- ----------------
1 1 NO CURRENT
1 0 YES UNUSED
1 0 YES UNUSED
17、創(chuàng)建監(jiān)聽,可以使用netca工具創(chuàng)建監(jiān)聽,或可根據(jù)原數(shù)據(jù)庫(kù)中的監(jiān)聽文件,在目標(biāo)庫(kù)中,創(chuàng)建監(jiān)聽
下一篇:Oracle 批量插入,truncate,去掉碎片,事務(wù)