在進行資料庫恢復的過程中,很多時候我們需要知道oracle資料庫的dbid,通常有以下幾種方法可以獲得資料庫的dbid.
1.查詢v$database獲得
由於dbid在控制檔案和資料檔案中都存在記錄,所以如果能夠mount資料庫就可以查詢v$database檢視獲得.
sql> alter database mount;database altered.
sql> select dbid from v$database;
dbid
----------
3152029224
2.在nomount狀態時
如果資料庫配置了自動控制檔案備份(oracle9i),並且名稱是預設的,那麼我們可以從自動備份檔案獲得dbid.
[oracle@jumper dbs]$ cd $oracle_home/dbs[oracle@jumper dbs]$ ll c-*
-rw-r----- 1 oracle dba 3375104 dec 21 11:13 c-3152029224-20051221-00
-rw-r----- 1 oracle dba 3358720 jan 21 14:03 c-3152029224-20060121-00
-rw-r----- 1 oracle dba 3358720 jan 21 14:08 c-3152029224-20060121-01
這裡的3152029224就是dbid。在10g中,使用flash recovery area,則沒有這個命名規則。
3.從自動備份中恢復
需要或缺dbid進行恢復通常是因為丟失了所有的控制檔案.在恢復時會遇到錯誤.
如果存在自動備份,我們通常可以直接恢復控制檔案,mount資料庫之後就好辦了:
rman> restore controlfile from '/opt/oracle/product/9.2.0/dbs/c-3152029224-20051221-00';starting restore at 05-feb-06
using channel ora_disk_1
channel ora_disk_1: restoring controlfile
channel ora_disk_1: restore complete
replicating controlfile
input filename=/opt/oracle/oradata/conner/control01.ctl
output filename=/opt/oracle/oradata/conner/control02.ctl
output filename=/opt/oracle/oradata/conner/control03.ctl
finished restore at 05-feb-06
4.直接從倖存的檔案中讀取
由於dbid存在於資料檔案及控制檔案中,所以我們可以通過pl/sql程式直接從檔案中讀取:
sql> select eygle.get_dbid('/opt/oracle/oradata/conner','user02.dbf') from dual;其實更簡單的,用bbed就好了。eygle.get_dbid('/opt/oracle/or
------------------------------
3152029224
sql> select dbid from v$database;
dbid
----------
3152029224
這種方法僅為測試興趣所致,不被推薦.
使用oracle9i的自動控制檔案備份功能
使用rman的備份及恢復一例-丟失所有控制檔案
如何獲得積分
據說寫部落格就可以獲得10積分,我來看看是不是這麼簡單就可以了。你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣...
如何獲得積分
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
如何獲得積分
如何獲得積分 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展...