Oracle修改主機名問題解決案例一則

regonly1發表於2012-10-17
今天啟動資料庫監聽的時候提示報錯:
TNS-12545: 因目標主機或物件不存在, 連線失敗
 TNS-12560: TNS: 協議介面卡錯誤
  TNS-00515: 因目標主機或物件不存在, 連線失敗
   32-bit Windows Error: 1004: Unknown error
監聽程式未能啟動。請參閱上面的錯誤訊息...
 
才想起來昨天把主機名改了。行吧,那就修改listener.ora中的主機名。
再次啟動ok。
然後啟動資料庫,發現啟動報錯,提示local_listener引數中設定的值不對。
但是此時資料庫都啟動不了,引數無法修改,所以只能從pfile下手了:
在pfile中,增加local_listener引數,設定為新的主機名對應的字串。需要注意的是,這個引數要加到最後面,如果是前面幾行,還會報主機名無法找到的錯誤。
時間不夠,沒有具體實驗到底是哪個引數引起的。
修改後,從pfile啟動成功。
 
然後根據pfile建立spfile:
create spfile from pfile;
再重啟資料庫,從spfile啟動。卻提示非法的例項名或資料庫名。奇怪!
後來找了幾個方面的資料,發現一個現象。就是所有從pfile建立spfile的命令,都是帶了具體檔名稱的。所以我也這麼試了一下,驗證我對這個問題的原因定位:
create spfile from pfile='d:\oracle\....\pfile.ora'
然後再從spfile啟動,成功。
 
由此問題可以知道,第一個根據pfile建立spfile的命令,沒有指定具體的檔名,所以命令不知道根據哪個檔案去建立spfile,所以只建了一個空的spfile檔案(這個可以從spfile的二進位制檔案中看到,都是null值)。只有指定了具體的pfile檔案後,建立才能成功。
 
補充說明:windows下的spfile預設位置是db1\database\spfileorcl.ora,裡面其實是一個連結,連結到db1\dbs\spfileorcl.ora檔案,這個檔案裡面是具體的引數配置資訊。
 
參考連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-746599/,如需轉載,請註明出處,否則將追究法律責任。

相關文章