Oracle 10g、Solaris 10 中的錯誤 NID-00135 的解決方案
我們正在嘗試通過使用 RMAN 恢復生產備份並將數據庫重命名為
test
.我們已經成功地將數據庫恢復並打開為生產環境(使用與真實生產伺服器不同的 IP)。
使用該
NID
實用程序將數據庫重命名為 時test
,我們遇到此錯誤:NID-00135: There are 1 active threads.
我們一直難以使用該
SHUTDOWN IMMEDIATE
命令正常關閉數據庫。在等待該死的東西死掉一個小時左右之後,我們不得不求助於 grepping 所有ora_*
程序並殺死它們。我們讓監聽器處於執行狀態,SQLPlus 執行緒正在執行,Oracle 使用者擁有的 bash 執行緒正在執行,但對於所有 Oracle 擁有的程序來說就是這樣。
我們甚至重新啟動了伺服器。
我們在這裡遺漏了什麼嗎?
“該死的東西”試圖阻止你破壞你的數據庫。該錯誤在手冊中進行了描述。您沒有等待數據庫立即關閉,而是終止了 oracle 程序。因此,並非所有會話都可以回滾。再次啟動數據庫並立即關閉並等待數據庫完全關閉。
停止listner 使用dbnewid 實用程序建立本地連接。dbnewid實用程序也在手冊中進行了描述。如果您以錯誤的方式處理 dbnewid 實用程序,您總是很有可能破壞您的數據庫。dbnewid 是更改 rmancatalog 中 rman 使用的數據庫 ID 所必需的。如果您不使用 rmancatalog,則不需要更改 dbid。重命名可以通過重新創建控製文件來完成。通常只需更改實例名稱即可。這可以在參數文件(init.ora、spfile.ora)中完成
創建用於測試的生產數據庫副本的最簡單也是最好的方法是使用 rman duplicate database命令。
關閉數據庫需要這麼長時間的原因是有一個長時間執行的事務必須回滾。如果您將數據庫恢復到數據庫上沒有執行如此長的事務的時間點,則可以避免這種情況。
有打開的活動執行緒(重做),在執行 NID 之前數據庫可能未關閉乾淨。您需要確保數據庫是一致的並且所有重做都是非活動的。
- 打開數據庫乾淨。
- 關閉數據庫。
- 掛載數據庫。
- 再次執行nid。