【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sys密碼修改導致的RMAN-00571錯誤密碼
- ORACLE listener監聽設定密碼Oracle密碼
- 設定 Oracle 監聽器密碼(LISTENER)Oracle密碼
- listener監聽監控指令碼指令碼
- Oracle資料庫修改LISTENER的監聽埠Oracle資料庫
- 【LISTENER】修改 LISTENER的監聽埠為1526(動態註冊)
- 【LISTENER】修改 LISTENER的監聽埠為1526(靜態註冊)
- merge語句導致的ORA錯誤分析
- 新增監聽密碼密碼
- oracle listener 靜態監聽與動態監聽的一些小事Oracle
- /tmp檔案系統無許可權導致監聽listener啟動失敗
- LSNCTL NL-00051報錯分析
- git合併丟失程式碼問題分析與解決(錯誤操作導致)Git
- 【監聽】配置服務端靜態(動態)監聽/修改監聽埠及引數local_listener作用服務端
- 導致 Scan VIP 和 Scan Listener(監聽程式)出現故障的最常見的 5 個問題
- Web中的監聽器【Listener】Web
- MySQL修改密碼方法總結YRMySql密碼
- MySQL修改密碼方法總結 (轉)MySql密碼
- 監聽設定密碼密碼
- 修改記憶體導致Ora-27100錯誤記憶體
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- 【LISTENER】通過密碼驗證使非oracle使用者具有管理監聽的能力密碼Oracle
- 22、listener的幾個錯誤程式碼
- MySQL常見錯誤分析與解決方法總結MySql
- 指令碼錯誤量極致優化-監控上報與Script error指令碼優化Error
- 指令碼錯誤量極致優化 - 監控上報與 Script error指令碼優化Error
- Nginx常見錯誤程式碼總結和分析方法Nginx
- 為監聽設定密碼密碼
- ORA-04031錯誤導致當機案例分析
- Filter(過濾器)與Listener(監聽器)詳解Filter過濾器
- AIX maxperm引數導致監聽問題AI
- 動態建立 @ViewChild 導致執行時錯誤的原因分析View
- 錯誤的使用者名稱密碼登入導致的資料庫效能問題密碼資料庫
- CHAR型別函式索引導致結果錯誤型別函式索引
- 動態註冊監聽Listener
- Oracle監聽日誌過大導致的問題Oracle
- 批次錯誤使用者名稱與密碼導致業務使用者HANG住(library cache lock)密碼
- 批量錯誤使用者名稱與密碼導致業務使用者HANG住(library cache lock)密碼