【LISTENER】修改監聽密碼導致NL-00051錯誤的分析與總結
今天遇到了一個Case,在修改監聽密碼儲存配置時丟擲“NL-00051: internal error code, arguments: [302], [1], [], [], [], [], []”錯誤。
簡單模擬再現一下這個問題,並對可能導致NL-00051錯誤的場景進行總結和分析。
1.問題現象
ora10g@secdb /home/oracle$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-MAR-2011 21:19:56
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set current_listener listener
Current Listener is listener
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Password changed for listener
The command completed successfully
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
NL-00051: internal error code, arguments: [302], [1], [], [], [], [], []
LSNRCTL>
2.問題原因
原因是在建立完資料庫後沒有使用netca建立監聽,導致在$ORACLE_HOME/network/admin/目錄下不存在listener.ora檔案,因此變化後的監聽配置無法寫入到listener.ora檔案,因此丟擲了NL-00051錯誤。
ora10g@secdb /home/oracle$ ls -l $ORACLE_HOME/network/admin/listener.ora
ls: /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora: No such file or directory
3.問題處理
使用netca工具建立監聽即可,亦可透過手工建立listener.ora檔案的方法來解決這個問題。
4.NL-00051報錯的另外一種表現形式
除由於listener.ora檔案不存在導致NL-00051報錯外,更常見的一種場景是listener.ora檔案中包含亂碼,導致監聽變化資訊無法寫入。
針對這種問題現象,同樣可以透過重建監聽的方法來解決。
這裡給出一種驗證是否是由於listener.ora檔案中包含亂碼導致NL-00051報錯的檢驗方法。
1)關閉監聽
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
2)將原有的listener.ora檔案進行備份
ora10g@secdb /home/oracle$ mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora_backup
3)建立一個不包含任何資訊的listener.ora空檔案
ora10g@secdb /home/oracle$ touch $ORACLE_HOME/network/admin/listener.ora
4)啟動監聽程式
LSNRCTL> start
Starting /oracle/ora10gR2/product/10.2.0/db_2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Log messages written to /oracle/ora10gR2/product/10.2.0/db_2/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 24-MAR-2011 17:59:04
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Listener Log File /oracle/ora10gR2/product/10.2.0/db_2/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
即使listener.ora檔案為空,監聽程式是依然可以順利啟動的。
5)為監聽設定密碼
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Password changed for LISTENER
The command completed successfully
6)將變化後的配置進行儲存
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Saved LISTENER configuration parameters.
Listener Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Old Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.bak
The command completed successfully
配置資訊儲存成功。
此時便會在listener.ora檔案中增加有關密碼設定的資訊。
7)檢視listener.ora檔案中寫入的資訊
ora10g@secdb /home/oracle$ cat $ORACLE_HOME/network/admin/listener.ora
#----ADDED BY TNSLSNR 24-MAR-2011 21:30:05---
PASSWORDS_LISTENER = 1DF5C2FD0FE9CFA2
#--------------------------------------------
可見,監聽密碼的設定資訊可以正確寫入到listener.ora檔案中。
透過以上的驗證步驟說明在空listener.ora檔案中可以完成監聽密碼的調整和儲存操作,進而證明在listener.ora檔案存在的前提下NL-00051錯誤是由於亂碼導致的。
5.小結
導致NL-00051錯誤的根本原因是:監聽配置的修改無法成功寫入到listener.ora檔案。
檢查方法:確認listener.ora檔案可以正常使用
處理方法:若暫時無法找到原因,可考慮使用netca工具重建監聽來解決問題。
Good luck.
secooler
11.03.24
-- The End --
簡單模擬再現一下這個問題,並對可能導致NL-00051錯誤的場景進行總結和分析。
1.問題現象
ora10g@secdb /home/oracle$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-MAR-2011 21:19:56
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set current_listener listener
Current Listener is listener
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Password changed for listener
The command completed successfully
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
NL-00051: internal error code, arguments: [302], [1], [], [], [], [], []
LSNRCTL>
2.問題原因
原因是在建立完資料庫後沒有使用netca建立監聽,導致在$ORACLE_HOME/network/admin/目錄下不存在listener.ora檔案,因此變化後的監聽配置無法寫入到listener.ora檔案,因此丟擲了NL-00051錯誤。
ora10g@secdb /home/oracle$ ls -l $ORACLE_HOME/network/admin/listener.ora
ls: /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora: No such file or directory
3.問題處理
使用netca工具建立監聽即可,亦可透過手工建立listener.ora檔案的方法來解決這個問題。
4.NL-00051報錯的另外一種表現形式
除由於listener.ora檔案不存在導致NL-00051報錯外,更常見的一種場景是listener.ora檔案中包含亂碼,導致監聽變化資訊無法寫入。
針對這種問題現象,同樣可以透過重建監聽的方法來解決。
這裡給出一種驗證是否是由於listener.ora檔案中包含亂碼導致NL-00051報錯的檢驗方法。
1)關閉監聽
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
2)將原有的listener.ora檔案進行備份
ora10g@secdb /home/oracle$ mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/listener.ora_backup
3)建立一個不包含任何資訊的listener.ora空檔案
ora10g@secdb /home/oracle$ touch $ORACLE_HOME/network/admin/listener.ora
4)啟動監聽程式
LSNRCTL> start
Starting /oracle/ora10gR2/product/10.2.0/db_2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Log messages written to /oracle/ora10gR2/product/10.2.0/db_2/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 24-MAR-2011 17:59:04
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Listener Log File /oracle/ora10gR2/product/10.2.0/db_2/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
即使listener.ora檔案為空,監聽程式是依然可以順利啟動的。
5)為監聽設定密碼
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Password changed for LISTENER
The command completed successfully
6)將變化後的配置進行儲存
LSNRCTL> save_config
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Saved LISTENER configuration parameters.
Listener Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.ora
Old Parameter File /oracle/ora10gR2/product/10.2.0/db_2/network/admin/listener.bak
The command completed successfully
配置資訊儲存成功。
此時便會在listener.ora檔案中增加有關密碼設定的資訊。
7)檢視listener.ora檔案中寫入的資訊
ora10g@secdb /home/oracle$ cat $ORACLE_HOME/network/admin/listener.ora
#----ADDED BY TNSLSNR 24-MAR-2011 21:30:05---
PASSWORDS_LISTENER = 1DF5C2FD0FE9CFA2
#--------------------------------------------
可見,監聽密碼的設定資訊可以正確寫入到listener.ora檔案中。
透過以上的驗證步驟說明在空listener.ora檔案中可以完成監聽密碼的調整和儲存操作,進而證明在listener.ora檔案存在的前提下NL-00051錯誤是由於亂碼導致的。
5.小結
導致NL-00051錯誤的根本原因是:監聽配置的修改無法成功寫入到listener.ora檔案。
檢查方法:確認listener.ora檔案可以正常使用
處理方法:若暫時無法找到原因,可考慮使用netca工具重建監聽來解決問題。
Good luck.
secooler
11.03.24
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-690388/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 7、listener監聽
- git合併丟失程式碼問題分析與解決(錯誤操作導致)Git
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- MySQL修改密碼方法總結YRMySql密碼
- ORA-04031錯誤導致當機案例分析
- Filter(過濾器)與Listener(監聽器)詳解Filter過濾器
- day25-Listener監聽器
- 比較罕見的一個問題,磁碟檔案數目太多導致的LISTENER監聽起不來
- 動態建立 @ViewChild 導致執行時錯誤的原因分析View
- 批次錯誤使用者名稱與密碼導致業務使用者HANG住(library cache lock)密碼
- 前端錯誤監控 -【Vue】與【Sentry】的結合前端Vue
- listener_scan1.log、listener.log監聽日誌清理
- html的開始與結束標籤巢狀錯誤會導致哪些問題?HTML巢狀
- 在duplicate時,出現監聽BLOCKED的情況,導致監聽自動關閉BloC
- Oracle 修改預設監聽埠故障分析Oracle
- 多次密碼錯誤導致登入介面鎖定,可以刪除網站的 runtime 資料夾密碼網站
- Lombok 的@ToString導致的Maven編譯錯誤LombokMaven編譯
- 對於Unity回撥、監聽與廣播的使用總結Unity
- ORACLE之手動註冊監聽listener。alter system set local_listener="XXX"Oracle
- 2.5.2. 監聽程式(listener)配置——2.5.2.1. netca
- 2.5.2. 監聽程式(listener)配置——2.5.2.2. netmgr
- Win10系統登入密碼錯誤次數如何修改Win10密碼
- 升級Xcode10導致的編譯錯誤XCode編譯
- 2.5.2. 監聽程式(listener)配置——2.5.2.3. 手工編輯監聽器配置檔案
- Polar mask錯誤總結
- Python部分錯誤總結Python
- 對MediaPlayer的錯誤使用總結
- WPF 已知問題 監聽 WMI 事件導致觸控失效事件
- 【LISTENER】Oracle分析連線監聽情況,判斷客戶端IP分佈Oracle客戶端
- SpringBoot事件監聽器原始碼分析Spring Boot事件原始碼
- 過濾器和監聽器總結過濾器
- 因為修改windows管理員密碼導致sql server 2005不能啟動處理Windows密碼SQLServer
- php輸出json資料,導致前端js判斷錯誤的分析及解決PHPJSON前端
- 12.2.0.1bug導致的Failed to register in OCRLOCAL group.錯誤AI
- ASM有自己的引數、密碼、alert、監聽檔案ASM密碼
- JAVA單元測試框架-13-TestNG中的Listener監聽Java框架
- 錯誤更新導致荷蘭數百名嫌犯佩戴的監控踝帶短暫失聯
- Hadoop安裝錯誤總結Hadoop
- 2024.11.12-2024.11.13錯誤總結