日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2...

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

8.11 9d_當(dāng)前控制文件損壞_只讀user表空間完全恢復(fù)_用控制文件腳本_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 9d

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 9d 9d_當(dāng)前控制文件損壞_只讀user表空間完全恢復(fù)_用控制文件腳本_不需備份

sub_detecting

sub_creating

echo "***BEFORE TABLESPACE READONLY***"

sub_scripting_controlfile_nocatalog

sub_readingonly_users_nocatalog LABS-9D-USERS-AFTER-READ-ONLY

echo "***AFTER TABLESPACE READONLY***"

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

1)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #1 noresetlogs部分,去掉set #2。在users表空間只讀前后各有一個(gè)trace文件,用之前的那個(gè),不然會(huì)出現(xiàn)missing00004

2)啟動(dòng)到nomountsqlplus中恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為truerecover database; alter database openalter tablespace users online; alter ?tablespace users read write;

3srvctl啟動(dòng)其他實(shí)例。


8.12 10a_當(dāng)前控制文件損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 10a

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 10a 10a_當(dāng)前控制文件損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE ?OFFLINE***"

echo "***BEFORE TABLESPACE ONLINE***"

echo "***BACKUP***"

sub_offlining_users_nocatalog LABS-10A-USERS-BEFORE-ONLINE

sub_backingup_controlfile_nocatalog LABS-10A-CONTR-BEFORE-ONLINE

echo "***FROM THEN ON: ONLINE***"

sub_onlining_users_nocatalog LABS-10A-USERS-AFTER-ONLINE

sub_backingup_controlfile_nocatalog LABS-10A-CONTR-AFTER-ONLINE

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

1)啟動(dòng)到nomountrman中恢復(fù):restore controlfilemount數(shù)據(jù)庫;用tag“LABS-10A-CONTR-AFTER-ONLINE的控制文件備份來恢復(fù)。這是因?yàn)榭刂莆募荒芎芎玫亟?jīng)歷表空間從下線到上線的變化。如果用了tagLABS-10A-CONTR-BEFORE-ONLINE”的控制文件備份來恢復(fù),resetlogs之后需要跟上后續(xù)恢復(fù)。我們對比發(fā)現(xiàn)在不連接catalog的情況下進(jìn)行恢復(fù),10gR2的數(shù)據(jù)庫如果用錯(cuò)了以上的tag,問題更嚴(yán)重,根本無法打開數(shù)據(jù)庫。

2)在rman中恢復(fù):recover databasealter database open resetlogs;(二進(jìn)制控制文件restore后指導(dǎo)的恢復(fù),都要resetlogs);

4srvctl啟動(dòng)其他實(shí)例。


8.13 10b_當(dāng)前控制文件損壞_備份時(shí)下線user表空間完全恢復(fù)_用控制文件腳本_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 10b

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 10b 10b_當(dāng)前控制文件損壞_備份時(shí)下線user表空間完全恢復(fù)_用控制文件腳本_不需備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE ?OFFLINE***"

echo "***BEFORE TABLESPACE ONLINE***"

echo "***BACKUP***"

sub_offlining_users_nocatalog LABS-10B-USERS-BEFORE-ONLINE

sub_scripting_controlfile_nocatalog

echo "***FROM THEN ON: ONLINE***"

sub_onlining_users_nocatalog LABS-10B-USERS-AFTER-ONLINE

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

1)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #1 noresetlogs部分,去掉set #2。在users表空間下線前后各有一個(gè)trace文件,用之后的那個(gè),不然會(huì)出現(xiàn)missing00004

2)啟動(dòng)到nomountsqlplus中恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為truerecover database;alter database open

3srvctl啟動(dòng)其他實(shí)例。


8.14 10c_當(dāng)前控制文件損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 10c

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 10c 10c_當(dāng)前控制文件損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE READ ONLY***"

echo "***BEFORE TABLESPACE WRITE***"

echo "***BACKUP***"

sub_readingonly_users_nocatalog LABS-10C-USERS-BEFORE-RW

sub_backingup_controlfile_nocatalog LABS-10C-CONTR-BEFORE-RW

echo "***FROM THEN ON: READ WARITE***"

sub_readingwrite_users_nocatalog LABS-10C-USERS-AFTER-RW

sub_backingup_controlfile_nocatalog LABS-10C-CONTR-AFTER-RW

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

1)啟動(dòng)到nomountrman中恢復(fù):restore controlfilemount數(shù)據(jù)庫;用tag“LABS-10C-CONTR-AFTER-RW的控制文件備份來恢復(fù)。這是因?yàn)榭刂莆募荒芎芎玫亟?jīng)歷表空間從下線到上線的變化。如果用了tagLABS-10C-CONTR-BEFORE-RW”來恢復(fù),resetlogs之后需要跟上后續(xù)恢復(fù)。我們對比發(fā)現(xiàn)在不連接catalog的情況下進(jìn)行恢復(fù),10gR2的數(shù)據(jù)庫如果用錯(cuò)了以上的tag,問題更嚴(yán)重,根本無法打開數(shù)據(jù)庫。

2)在rman中恢復(fù):recover databasealter database open resetlogs;(二進(jìn)制控制文件restore后指導(dǎo)的恢復(fù),都要resetlogs);

4srvctl啟動(dòng)其他實(shí)例。


8.15 10d_當(dāng)前控制文件損壞_備份時(shí)只讀user表空間完全恢復(fù)_用控制文件腳本_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 10d

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 10d 10d_當(dāng)前控制文件損壞_備份時(shí)只讀user表空間完全恢復(fù)_用控制文件腳本_不需備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE READ ?ONLY***"

echo "***BEFORE TABLESPACE READ WRITE***"

echo "***BACKUP***"

sub_readingonly_users_nocatalog LABS-10D-USERS-BEFORE-RW

sub_scripting_controlfile_nocatalog

echo "***FROM THEN ON: READ WRITE***"

sub_readingwrite_users_nocatalog LABS-10D-USERS-AFTER-RW

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

1)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #1 noresetlogs部分,去掉set #2。在users表空間下線前后各有一個(gè)trace文件,用之后的那個(gè),不然會(huì)出現(xiàn)missing00004

2)啟動(dòng)到nomountsqlplus中恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為truerecover database;alter database open

3srvctl啟動(dòng)其他實(shí)例。


9. Oracle11gR2 RAC備份恢復(fù)案例三:進(jìn)階不完全恢復(fù)類場景批量模擬以及恢復(fù)要點(diǎn)


9.1 11a_當(dāng)前控制文件和日志文件全部損壞_不完全恢復(fù)_用控制文件二進(jìn)制備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 11a

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 11a 11a_當(dāng)前控制文件和日志文件全部損壞_不完全恢復(fù)_用控制文件二進(jìn)制備份

sub_detecting

sub_creating

sub_backingup_controlfile_nocatalog LABS-11A-CONTROLFILE

sub_resync_catalog

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)10d,本場景之前,rever環(huán)境

1)在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

2)啟動(dòng)到nomountrman中恢復(fù):restore ?controlfilemount數(shù)據(jù)庫。

3)在rmanrun{}中恢復(fù):set ?until sequence 在線日志currentsequence號(hào)thread xrestore databaserecover ?database;alter database open ?resetlogs;

4)srvctl啟動(dòng)其他實(shí)例。


9.2 11b_當(dāng)前控制文件和日志文件全部損壞_不完全恢復(fù)_用控制文件腳本


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 11b

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 11b 11b_當(dāng)前控制文件和日志文件全部損壞_不完全恢復(fù)_用控制文件腳本

sub_detecting

sub_creating

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)11a,本場景之前,rever環(huán)境

1)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #2 resetlogs部分,去掉set #1

2)啟動(dòng)到nomountsqlplus恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為true;自動(dòng)到mount

3)在rman中做一些預(yù)備工作:restore那些delete input archivelogrestore ?database;

4)在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

5)在sqlplus中恢復(fù):recover ?database until cancel using backup controlfile; 注意set ?#2腳本中本身給的提示recover database using backup ?controlfile”是不正確的,會(huì)直接導(dǎo)致打不開數(shù)據(jù)庫。

6)在sqlplus中恢復(fù):遇到在線日志currentsequence號(hào)時(shí),敲cancelalter ?database open resetlogs;

7)添加臨時(shí)文件,塊跟蹤文件等。

8srvctl啟動(dòng)其他實(shí)例。


9.3 12a_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 12a

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 12a 12a_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE ?OFFLINE***"

echo "***BEFORE TABLESPACE ONLINE***"

echo "***BACKUP***"

sub_offlining_users_nocatalog LABS-12A-USERS-BEFORE-ONLINE

sub_backingup_controlfile_nocatalog LABS-12A-CONTR-BEFORE-ONLINE

echo "***FROM THEN ON: ONLINE***"

sub_onlining_users_nocatalog LABS-12A-USERS-AFTER-ONLINE

sub_backingup_controlfile_nocatalog LABS-12A-CONTR-AFTER-ONLINE

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)11b,本場景之前,rever環(huán)境

1)先按10a做,會(huì)失敗。在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

2)與10a不同的是必需在rmanrun{}塊中恢復(fù):set until sequence 在線日志currentsequence號(hào)thread xrestore databaserecover ?database;alter database open ?resetlogs;

3srvctl啟動(dòng)其他實(shí)例。


9.4 12b_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件腳本


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 12b

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 12b 12b_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)下線user表空間不完全恢復(fù)_用控制文件腳本

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE ?OFFLINE***"

echo "***BEFORE TABLESPACE ONLINE***"

echo "***BACKUP***"

sub_offlining_users_nocatalog LABS-12B-USERS-BEFORE-ONLINE

sub_scripting_controlfile_nocatalog

echo "***FROM THEN ON: ONLINE***"

sub_onlining_users_nocatalog LABS-12B-USERS-AFTER-ONLINE

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)12a,本場景之前,rever環(huán)境

1)先按10b做,會(huì)失敗。在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

2)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #2 resetlogs部分,去掉set #1。在users表空間下線前后各有一個(gè)trace文件,用之后的那個(gè),不然會(huì)出現(xiàn)missing00004

3)啟動(dòng)到nomountsqlplus恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為true;自動(dòng)到mount

4)在rman中做一些預(yù)備工作:restore那些delete input archivelogrestore ?database;

5)在sqlplus中恢復(fù):recover ?database until cancel using backup controlfile; 注意set ?#2腳本中本身給的提示recover database using backup ?controlfile”是不正確的,會(huì)直接導(dǎo)致打不開數(shù)據(jù)庫。

6)在sqlplus中恢復(fù):遇到在線日志currentsequence號(hào)時(shí),敲cancelalter ?database open resetlogs;

7)添加臨時(shí)文件,塊跟蹤文件等。

8srvctl啟動(dòng)其他實(shí)例。


9.5 12c_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 12c

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 12c 12c_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件二進(jìn)制備份

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE READ ?ONLY***"

echo "***BEFORE TABLESPACE WRITE***"

echo "***BACKUP***"

sub_readingonly_users_nocatalog LABS-12C-USERS-BEFORE-RW

sub_backingup_controlfile_nocatalog LABS-12C-CONTR-BEFORE-RW

echo "***FROM THEN ON: READ WARITE***"

sub_readingwrite_users_nocatalog LABS-12C-USERS-AFTER-RW

sub_backingup_controlfile_nocatalog LABS-12C-CONTR-AFTER-RW

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)12b,本場景之前,rever環(huán)境

1)先按10c做,會(huì)失敗。在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

2)與10c不同的是必需在rmanrun{}塊中恢復(fù):set until sequence 在線日志currentsequence號(hào)thread xrestore databaserecover ?database;alter database open ?resetlogs;

3srvctl啟動(dòng)其他實(shí)例。


9.6 12d_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件腳本


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 12d

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 12d 12d_當(dāng)前控制文件和日志文件全部損壞_備份時(shí)只讀user表空間不完全恢復(fù)_用控制文件腳本

sub_detecting

sub_deleting_early_online_backup_users

echo "***LABS TOTALLY DIFFERENT BEGINS: TABLESPACE READ ?ONLY***"

echo "***BEFORE TABLESPACE READ WRITE***"

echo "***BACKUP***"

sub_readingonly_users_nocatalog LABS-12D-USERS-BEFORE-RW

sub_scripting_controlfile_nocatalog

echo "***FROM THEN ON: READ WRITE***"

sub_readingwrite_users_nocatalog LABS-12D-USERS-AFTER-RW

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_resync_catalog

sub_creating

sub_shutdowning_abort

sub_destroying "current*"

sub_destroying "group*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)12c,本場景之前,rever環(huán)境

1)先按10d做,會(huì)失敗。在線日志被刪除,日志序列號(hào)請用asmcmd確認(rèn)。

2)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #2 resetlogs部分,去掉set #1。在users表空間下線前后各有一個(gè)trace文件,用之后的那個(gè),不然會(huì)出現(xiàn)missing00004

3)啟動(dòng)到nomountsqlplus恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為true;自動(dòng)到mount

4)在rman中做一些預(yù)備工作:restore那些delete input archivelogrestore ?database;

5)在sqlplus中恢復(fù):recover ?database until cancel using backup controlfile; 注意set ?#2腳本中本身給的提示recover database using backup ?controlfile”是不正確的,會(huì)直接導(dǎo)致打不開數(shù)據(jù)庫。

6)在sqlplus中恢復(fù):遇到在線日志currentsequence號(hào)時(shí),敲cancelalter ?database open resetlogs;

7)添加臨時(shí)文件,塊跟蹤文件等。

8srvctl啟動(dòng)其他實(shí)例。


9.7 13a_當(dāng)前控制文件損壞_新建tbsocp05_test2表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 13a

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 13a 13a_當(dāng)前控制文件損壞_新建tbsocp05_test2表空間不完全恢復(fù)_用控制文件二進(jìn)制備份_數(shù)據(jù)不丟_不需備份

sub_detecting

echo "BEFORE TABLESPACE CREATION"

echo "***BACKUP***"

sub_backingup_controlfile_nocatalog LABS-13A-CONTR-BEFORE-CREA

sub_resync_catalog

echo "***TABLESPACE CREATED***"

sub_creating

echo "AFTER TABLESPACE CREATION"

echo "***BACKUP AGAIN***"

sub_backingup_controlfile_nocatalog LABS-13A-CONTR-AFTER-CREA

sub_resync_catalog

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

--drop table hr.edu234;

--

set echo off

set feedback off

select* from sys.tname;

create tablespace tbsocp05_test2 datafile size 5M;

create tablehr.edu234 ( ?a number ) tablespace tbsocp05_test2;

alter system switch logfile;

insert into hr.edu234 values(1);

alter system switch logfile;

commit;

alter system switch logfile;

insert into hr.edu234 values(2);

alter system switch logfile;

commit;

insert into hr.edu234 values(3);

alter system switch logfile;

commit;

insert into hr.edu234 values(4);

alter system switch logfile;

commit;

insert into hr.edu234 values(5);

commit;

--

set serveroutput on

exec dbms_output.put_line(' ');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line('Table successfully created.');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line(' ');

恢復(fù)要點(diǎn):

1)啟動(dòng)到nomountrman中恢復(fù):restore controlfilemount數(shù)據(jù)庫;用tag“LABS-13A-CONTR-BEFORE-CREAtag“LABS-13A-CONTR-AFTER-CREA的控制文件備份來恢復(fù)都可以。控制文件能經(jīng)歷新建表空間的變化。我們對比發(fā)現(xiàn)在不連接catalog的情況下進(jìn)行恢復(fù),10gR2的數(shù)據(jù)庫如果用tag“LABS-13A-CONTR-BEFORE-CREA來恢復(fù),該新建表空間對應(yīng)的數(shù)據(jù)文件會(huì)出現(xiàn)uname00007問題,需要跟上后續(xù)恢復(fù)。

2)在rman中恢復(fù):recover databasealter database open resetlogs;(二進(jìn)制控制文件restore后指導(dǎo)的恢復(fù),都要resetlogs

4srvctl啟動(dòng)其他實(shí)例。


9.8 13b_當(dāng)前控制文件損壞_新建tbsocp05_test3表空間完全恢復(fù)_用控制文件腳本_不需備份


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 13b

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 13b 13b_當(dāng)前控制文件損壞_新建tbsocp05_test3表空間完全恢復(fù)_用控制文件腳本_不需備份

sub_detecting

echo "BEFORE TABLESPACE CREATION"

sub_scripting_controlfile_nocatalog

echo "***TABLESPACE CREATED***"

sub_creating

echo "AFTER TABLESPACE CREATION"

sub_scripting_controlfile_nocatalog

sub_deleting_backup_controlfile_nocatalog

sub_shutdowning_abort

sub_destroying "current*"

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

--drop table hr.edu234;

--

set echo off

set feedback off

select* from sys.tname;

create tablespace tbsocp05_test3 datafile size 5M;

create tablehr.edu234 ( ?a number) tablespace tbsocp05_test3;

alter system switch logfile;

insert into hr.edu234 values(1);

alter system switch logfile;

commit;

alter system switch logfile;

insert into hr.edu234 values(2);

alter system switch logfile;

commit;

insert into hr.edu234 values(3);

alter system switch logfile;

commit;

insert into hr.edu234 values(4);

alter system switch logfile;

commit;

insert into hr.edu234 values(5);

commit;

--

set serveroutput on

exec dbms_output.put_line(' ');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line('Table successfully created.');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line(' ');

恢復(fù)要點(diǎn):

1)找到sub_scripting_controlfile_nocatalog給出的trace文件名,編輯成sql腳本:留下set #1 noresetlogs部分,去掉set #2。在新建表空間前后各有一個(gè)trace文件,用之后的那個(gè),不然會(huì)出現(xiàn)missing00004

2)啟動(dòng)到nomountsqlplus中恢復(fù):改cluster_database初始化參數(shù)為false;執(zhí)行以上腳本;cluster_database初始化參數(shù)為truerecover database;alter database open

3srvctl啟動(dòng)其他實(shí)例。


9.9 14_刪除表空間不完全恢復(fù)


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 14

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 14 14_刪除表空間不完全恢復(fù)

sub_detecting

sub_altering_default_tablespace

echo "***BEFORE TABLESPACE DROP***"

echo "***BACKUP***"

sub_backingup_controlfile_nocatalog LABS-14-CONTR-BEFORE-DROP

sub_creating

sub_dropping_users

echo "***AFTER TABLESPACE DROP***"

echo "***BACKUP AGAIN***"

sub_backingup_controlfile_nocatalog LABS-14-CONTR-AFTER-DROP

sub_resync_catalog

echo " "

sub_revealing

echo " "

sub_clearing

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

同“1a_users表空間在線損壞”

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)13b,本場景之前,rever環(huán)境

1)啟動(dòng)到nomountrman中恢復(fù):restore ?controlfilemount數(shù)據(jù)庫;用tag“LABS-14-CONTR-BEFORE-DROP的控制文件備份來恢復(fù)。不然恢復(fù)后數(shù)據(jù)文件出missing00004

2)找所有實(shí)例上的alert日志,發(fā)現(xiàn)開始刪除表空間的時(shí)間。將這個(gè)時(shí)間減去1秒。

3)啟動(dòng)到mountrmanrun{}塊中恢復(fù):根據(jù)減去1秒的時(shí)間set until timerestore databaserecover databasealter database open resetlogs;

2srvctl啟動(dòng)其他實(shí)例。


9.10 15_穿越incarnation不完全恢復(fù)


在PXE推送端主機(jī)上運(yùn)行:

[root@server1 ~]# bcl --RACGRID11g13 15

“bcl --RACGRID11g13 15”之后會(huì)自動(dòng)運(yùn)行的 “real-post”腳本內(nèi)容(其他場景無本項(xiàng)):

#!/bin/sh

rm -f /root/tmp/bclcustom.sh

for i in `ls /root/tmp/bclresult*`

do

v_botang_thread=$( ?grep -A 2 INSTANCE_NUMBER $i | tail -n 1 | tr -d '[:blank:]')

v_botang_currlog=$( ?grep'Current log sequence' ?$i| tail -n 1 | cut -c 29- )

v_botang_currlogplus1=$[ ?$v_botang_currlog + 1 ]

v_botang_oldestlog=$( ?grep'Oldest online log ?sequence' $i | tail -n 1 | cut -c29- )

v_botang_oldestlogbefore=$( ?grep'Oldest online log ?sequence' $i | head -n 1 | cut -c29- )

v_botang_nextlog=$( ?grep'Next log sequence to ?archive' $i | tail -n 1 | cut -c 29- )

v_botang_nextlogbefore=$( ?grep'Next log sequence to ?archive' $i | head -n 1 | cut -c 29- )

v_botang_currlogdest=$( ?grep 'Archive destination' $i| ?tail -n 1 | cut -c 29- )

v_botang_ip=$(echo ?$i| cut -f 2 -d - )

perl -i ?-pe "s,Oldest online log sequence$v_botang_oldestlog,Oldest online log sequenceXXX," $i

perl -i ?-pe "s,Oldest online log sequence$v_botang_oldestlogbefore,Oldest online log sequenceAAA," $i

perl -i ?-pe "s,Next log sequence to archive$v_botang_nextlog,Next log sequence ?to archiveYYY," $i

perl -i ?-pe "s,Next log sequence to archive$v_botang_nextlogbefore,Next log ?sequence to archiveBBB," $i

grep -v ?'Current log sequence' $i > $i.tmp

rm -f$i

mv ?$i.tmp$i

cat > ?/root/tmp/rac.sh <<EOL

v_dbname=\$(cat ?/home/oracle/dbname | tr -d [:blank:])

v_ip=\$(ifconfig ?| grep'192\.168\.0' | head -n ?1| cut -d . -f 4| cut -d ' ' -f 1)

grep -q ?'LABS ADD' /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

if [ \$? ?== '1' ]

then

echo ?" " >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"rcat =" >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"(DESCRIPTION =" ?>> /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"(ADDRESS = ?(PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))" >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"(CONNECT_DATA ?=" >> /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"(SERVER = DEDICATED)" >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?"(SERVICE_NAME = rcat.example.com)" >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?")" ?>> /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?")" >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?" " >> /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

echo ?'#LABS ADD' >> ?/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

fi

if [ -f ?/u01/app/11.2.0/grid/dbs/hc_+ASM1.dat ]

then

echo ?"***Connecting Catalog***"

su - ?oracle -c "rman target sys/oracle_4U@\$v_dbname catalog ?u90/oracle_4U@rcat" <<!

resync ?catalog;

!

fi

echo ?" "

if [ -f ?/u01/app/11.2.0/grid/dbs/hc_+ASM1.dat ]

then

su - grid ?-c "export ORACLE_SID=+ASM1;export ?ORACLE_HOME=/u01/app/11.2.0/grid;asmcmd"<<EOF > ?/home/oracle/asm

find / ?thread_${v_botang_thread}_seq_$v_botang_currlogplus1*

exit

EOF

sleep 1

v_path1=\$(cut ?-f 2 -d '+' /home/oracle/asm| ?head -n 1 | tr -d [:blank:])

v_path2="+"\$v_path1

su - grid ?-c "export ORACLE_SID=+ASM1;export ORACLE_HOME=/u01/app/11.2.0/grid;asmcmd"<<EOF

rm -rf ?\$v_path2

exit

EOF

fi

EOL

scp-q -o ConnectTimeout=1-o StrictHostKeyChecking=no -o ?NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 /root/tmp/rac.sh$v_botang_ip:/usr/bin

ssh -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?$v_botang_ip "chmod +x /usr/bin/rac.sh"

ssh -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?$v_botang_ip /usr/bin/rac.sh >>$i 2>&1

ssh -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?$v_botang_ip "rm -rf /usr/bin/rac.sh"

rm ?-rf/root/tmp/bclshell-$v_botang_ip

echo ?"v_dbname=\$(cat /home/oracle/dbname | tr -d [:blank:])" >> ?/root/tmp/bclshell-$v_botang_ip

echo 'su - ?oracle -c "srvctl start instance -i ${v_dbname}1 -d $v_dbname -o mount ?&>/dev/null"' >> /root/tmp/bclshell-$v_botang_ip

echo 'su - ?oracle -c "srvctl start instance -i ${v_dbname}2 -d $v_dbname -o mount ?&>/dev/null"' >> /root/tmp/bclshell-$v_botang_ip

echo ?"if [ -f /u01/app/11.2.0/grid/dbs/hc_+ASM1.dat ]" >> ?/root/tmp/bclshell-$v_botang_ip

echo ?"then" >> /root/tmp/bclshell-$v_botang_ip

echo ?"su - oracle -c \"rman target sys/oracle_4U@\${v_dbname} \" ?<<EOF " >> /root/tmp/bclshell-$v_botang_ip

echo ?"run { ">> /root/tmp/bclshell-$v_botang_ip

echo ?"set until sequence $v_botang_currlogplus1 thread ?$v_botang_thread;" >>/root/tmp/bclshell-$v_botang_ip

echo ?"restore database;">>/root/tmp/bclshell-$v_botang_ip

echo ?"recover database;">>/root/tmp/bclshell-$v_botang_ip

echo ?"}" >>/root/tmp/bclshell-$v_botang_ip

echo ?"EOF" >> /root/tmp/bclshell-$v_botang_ip

echo ?"su - oracle -c \"sqlplus /nolog \" <<EOF " ?>> /root/tmp/bclshell-$v_botang_ip

echo ?"connsys/oracle_4U@\${v_dbname}1 ?as sysdba">> ?/root/tmp/bclshell-$v_botang_ip

echo ?"alter database flashback off;">>/root/tmp/bclshell-$v_botang_ip

echo ?"alter database open resetlogs;">>/root/tmp/bclshell-$v_botang_ip

echo ?"set echo off" >> /root/tmp/bclshell-$v_botang_ip

echo ?"set feedback off" >> /root/tmp/bclshell-$v_botang_ip

echo ?"@/home/oracle/rtable.sql;" >> ?/root/tmp/bclshell-$v_botang_ip

echo ?"quit">> ?/root/tmp/bclshell-$v_botang_ip

echo ?"EOF" >> /root/tmp/bclshell-$v_botang_ip

echo ?"su - oracle -c \"sqlplus /nolog \" <<EOF " ?>> /root/tmp/bclshell-$v_botang_ip

echo ?"connsys/oracle_4U@\${v_dbname}2 as sysdba">> /root/tmp/bclshell-$v_botang_ip

echo ?"alter database open;">>/root/tmp/bclshell-$v_botang_ip

echo ?"quit">> ?/root/tmp/bclshell-$v_botang_ip

echo ?"EOF" >> /root/tmp/bclshell-$v_botang_ip

echo"fi" >> ?/root/tmp/bclshell-$v_botang_ip

echo ?"rm -f /home/oracle/rtable.sql" >> ?/root/tmp/bclshell-$v_botang_ip

echo ?" echo \"DELETE ARCHIVELOGS HAVE ALREADY BEEN RECOVERED FOR LAB15 ?SUCCESSFULLY,THE END AGAIN\"" >> ?/root/tmp/bclshell-$v_botang_ip

scp -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?/root/tmp/bclshell-$v_botang_ip$v_botang_ip:/usr/bin/ >/dev/null ?2>&1

scp -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?/root/tmp/bclsend-$v_botang_ip/rtable.sql$v_botang_ip:/home/oracle/ >/dev/null ?2>&1

ssh -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?$v_botang_ipchmod +x ?/usr/bin/bclshell-$v_botang_ip

(ssh -q -o ?ConnectTimeout=1-o ?StrictHostKeyChecking=no -o NumberOfPasswordPrompts=1 -o ConnectionAttempts=1 ?$v_botang_ip /usr/bin/bclshell-$v_botang_ip>>$i 2>&1)&

done

場景模擬腳本內(nèi)容:

. /home/oracle/bclcustom-subprogram

sub_getting 15 15_穿越incarnation不完全恢復(fù)

sub_detecting

sub_creating

sub_shutdowning_normal

sub_destroying "system*"

sub_destroying "undotbs1*"

sub_destroying "undotbs2*"

sub_destroying "sysaux*"

sub_destroying "example*"

sub_destroying "users*"

sub_revealing

echo " "

sub_startuping_node1mount

sub_clearing_excludertable

echo "THE END"

“sub_creating”

調(diào)用的“ctable.sql”內(nèi)容:

--drop table hr.edu234;

--

set echo off

set feedback off

select* from sys.tname;

selectinstance_number ?from v$instance;

create tablehr.edu234 ( ?a number ) tablespace users;

create tablehr.specialedu234( a varchar2(100)) tablespace users;

insert into hr.specialedu234 values('11g SUCCESS');

commit;

host sleep 5

alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';

selectsysdate from dual;

host sleep 3

truncate table hr.specialedu234;

alter system switch logfile;

insert into hr.edu234 values(1);

alter system switch logfile;

commit;

--

set serveroutput on

exec dbms_output.put_line(' ');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line('Table successfully created.');

exec dbms_output.put_line('************************** ');

exec dbms_output.put_line(' ');

--

select * fromhr.edu234;

exec ?dbms_output.put_line('*********************************************************************************************************** ?');

exec dbms_output.put_line('After the displayed moment, the table will ?continuously be inserted with more rows, but finnally be droped..');

exec ?dbms_output.put_line('*********************************************************************************************************** ?');

exec dbms_output.put_line(' ');

host sleep 5

archive log list

host sleep 3

alter system switch logfile;

insert into hr.edu234 values(2);

alter system switch logfile;

commit;

insert into hr.edu234 values(3);

alter system switch logfile;

commit;

insert into hr.edu234 values(4);

alter system switch logfile;

commit;

insert into hr.edu234 values(5);

commit;

select * fromhr.edu234;

drop table hr.edu234 purge;

恢復(fù)要點(diǎn):

注意:如果剛做完實(shí)驗(yàn)14,本場景之前,rever環(huán)境

1)啟動(dòng)到mountrman中:reset database to incarnation 2;

2)在rmanrun{}塊中恢復(fù):根據(jù)ctable.sql輸出的時(shí)間set until timerestore databaserecover databasealter database open resetlogs;

2srvctl啟動(dòng)其他實(shí)例。


總結(jié)

推送+場景模擬”是本文的設(shè)計(jì)思想,希望對DBA演練備份恢復(fù)技術(shù)會(huì)有幫助。本文中所提及的所有原創(chuàng)程序均提供下載和md5sum文件。 讀者使用這些程序不應(yīng)出于商業(yè)目的,作者對使用這些程序可能帶來的一切后果不承擔(dān)任何法律責(zé)任。bcpbcl”的其他選項(xiàng)也能推送10g單機(jī)版環(huán)境、11g單機(jī)版環(huán)境和10gRAC環(huán)境,同時(shí)也能模擬10g單機(jī)版環(huán)境、11g單機(jī)版環(huán)境和10gRAC環(huán)境的備份恢復(fù)場景。請讀者自行摸索這些功能。


轉(zhuǎn)載于:https://blog.51cto.com/botang/1323070

總結(jié)

以上是生活随笔為你收集整理的用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。