如何解決動態註冊的問題?
為了測試,我一直嘗試借助快照在具有單個數據庫的測試系統上安裝 Oracle 11g 幾次。在最近的一次迭代中,我在讓數據庫向偵聽器註冊時遇到了問題。
我要了解,只要數據庫正在執行,PMON 就會嘗試定期向使用埠 1521 在同一台機器上本地執行的偵聽器註冊自己。我有這樣一個偵聽器正在執行,但服務未註冊它似乎。
lsnrctl status ..... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.13.134)(PORT=1521))) .... The listener supports no services
我可以使用
sqlplus / as sysdba
和執行select name from v$database;
顯示有問題的數據庫連接到數據庫。因此,在 tnsping 之間,netstat -an
我知道偵聽器至少正在執行。alter system register
似乎也沒有效果。這並不重要,因為我只需要等待一分鐘就可以讓它自己工作。然後我去尋找任何與 PMON 相關的日誌。它應該與其他 trc 文件一起位於跟踪文件夾 ($ORACLE_BASE/diag/rdbms/database_name/SID/trace/SID_pmon_PID.trc),但它不存在。然後我使用以下查詢來驗證它應該在哪裡
select pid, program, tracefile from v$process where program like '%PMON%'; d:\app\administrator\diag\rdbms\prod\prod\trace\prod_pmon_1464.trc
Windows 2008R2 禁用了防火牆進行測試(並不是說它改變了任何東西)。Listener.log 沒有表現出任何擔心。只是我多次重啟監聽器的證據。
我知道我可以配置一個靜態偵聽器,
SID_LIST
但我想了解為什麼這不起作用。這是我第四次這樣做,我還沒有遇到這個問題。我基本上被困住了,因為我不確定我應該去哪裡找。
可以通過以下方式跟踪數據庫中的偵聽器註冊:
alter system set events='immediate trace name listener_registration level 3';
不再需要時禁用跟踪:
alter system set events='immediate trace name listener_registration level 0';
PMON 註冊到在
local_listener
和remote_listener
參數中定義的地址。如果您在那裡定義了無效地址,那麼它將無法在偵聽器中註冊實例。如果您在那裡沒有定義任何內容,那麼它會嘗試使用預設的 1521 埠在本地電腦上註冊。
您也可以嘗試將您的設置
local_listener
為:alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.13.134)(PORT=1521))'; alter system register;