--========================
-- Oracle 監聽器日誌配置與管理
--========================
Oracle 監聽器是一個伺服器端程式,用於監聽所有來自用戶端的請求,並為其提供資料庫服務。因此對監聽器的管理與維護相當重要。
本文主要描述對Oracle監聽器記錄檔的配置與管理。有關監聽器的描述請參考
配置 ORACLE 用戶端串連到資料庫
配置非預設連接埠的動態服務註冊
一、監聽器日誌特性
1. 監聽器日誌是一個純文字檔案,通常位於$ORACLE_HOME/network/log目錄下,與sqlnet.log記錄檔處於同一路徑
2. 其預設的檔案名稱為listener.log。對於非預設的監聽器,則產生的記錄檔通常為listenername.log
3. 該檔案預設由監聽器自動建立,當記錄檔丟失時或不存在時,會自動重新建立一個同名的檔案,與alert_<SID>.log檔案類似
4. 該檔案的尺寸會不斷自動成長,當尺寸過大時或不便於閱讀時,考慮將其備份
5. Oracle監聽器在運行時不允許對記錄檔做刪除,重新命名操作
6. 可以設定日誌狀態為ON或OFF來實現啟用或關閉日誌
二、設定記錄檔目錄及路徑
1. 設定記錄檔目錄的兩種方法
lsnrctl SET LOG_DIRECTORY directory</p><p>LSNRCTL> SET LOG_DIRECTORY /usr/oracle/admin/log
2. 設定記錄檔的兩種方法
lsnrctl SET LOG_FILE file_name</p><p> LSNRCTL> SET LOG_FILE file_name
3. 設定日誌的狀態
lsnrctl SET LOG_STATUS {on | off}</p><p> LSNRCTL> SET LOG_STATUS {on | off}<br />
4. 示範設定
a. 切換到日誌目錄查看記錄檔
[oracle@test ~]$ cd $ORACLE_HOME/network/log<br /> [oracle@test log]$ ls -hltr<br /> total 348K<br /> -rw-r--r-- 1 oracle oinstall 305K Apr 6 05:30 listener.log<br /> -rw-r--r-- 1 oracle oinstall 26K Jun 27 01:52 listener_demo92.log
b. 查看當前監聽器的狀態
[oracle@test log]$ lsnrctl status listener_demo92</p><p> LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 01:54:31</p><p> Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.</p><p> Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br /> STATUS of the LISTENER<br /> ------------------------<br /> Alias listener_demo92<br /> Version TNSLSNR for Linux: Version 9.2.0.8.0 - Production<br /> Start Date 27-JUN-2011 01:52:18<br /> Uptime 0 days 0 hr. 2 min. 13 sec<br /> Trace Level off<br /> Security ON<br /> SNMP OFF<br /> Listener Parameter File /oracle/92/network/admin/listener.ora<br /> Listener Log File /oracle/92/network/log/listener_demo92.log<br /> Listening Endpoints Summary...<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test)(PORT=1521)))<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))<br /> Services Summary...<br /> Service "demo92" has 1 instance(s).<br /> Instance "demo92", status READY, has 1 handler(s) for this service...<br /> The command completed successfully<br />
c. 設定監聽器目錄及記錄檔
LSNRCTL> set current_listener listener_demo92<br />Current Listener is listener_demo92<br />LSNRCTL> set password<br />Password:<br />The command completed successfully<br />LSNRCTL> set log_directory /home/oracle/log<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br />listener_demo92 parameter "log_directory" set to /home/oracle/log<br />The command completed successfully<br />LSNRCTL> set log_file listener_test.log<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br />listener_demo92 parameter "log_file" set to listener_test.log<br />The command completed successfully<br />LSNRCTL> set log_status on<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br />listener_demo92 parameter "log_status" set to ON<br />The command completed successfully<br />LSNRCTL> save_config<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br />Saved listener_demo92 configuration parameters.<br />Listener Parameter File /oracle/92/network/admin/listener.ora<br />Old Parameter File /oracle/92/network/admin/listener.bak<br />The command completed successfully<br />LSNRCTL> exit<br />
d. 查看新路徑下產生的記錄檔
[oracle@test admin]$ cd /home/oracle/log<br />[oracle@test log]$ ls -hltr<br />total 16K<br />-rw-r--r-- 1 oracle oinstall 41 Jun 27 02:11 listener_demo92.log -->設定目錄之後產生的<br />-rw-r--r-- 1 oracle oinstall 113 Jun 27 02:12 listener_test.log -->設定記錄檔名之後的新記錄檔 </p><p>[oracle@test log]$ ls -hltr -->隔段時間查看,原來的記錄檔不再增長,使用設定的記錄檔名記錄日誌<br />total 16K<br />-rw-r--r-- 1 oracle oinstall 41 Jun 27 02:11 listener_demo92.log<br />-rw-r--r-- 1 oracle oinstall 1.3K Jun 27 02:17 listener_test.log<br />
e. 查看listener.ora設定檔的變化
[oracle@test admin]$ more listener.ora<br />#----ADDED BY TNSLSNR 27-JUN-2011 02:12:37---<br />LOG_DIRECTORY_listener_demo92 = /home/oracle/log<br />LOG_FILE_listener_demo92 = listener_test.log<br />LOGGING_listener_demo92 = ON<br />#--------------------------------------------<br />
三、記錄檔的備份與重新命名
通常情況下,需要停止監聽器來對記錄檔進行備份,下面使用不停止監聽的情況下對記錄檔重新命名以實現備份
1. Windows平台的處理
C:\>cd \oracle\ora92\network\log -->切換到監聽器記錄檔所在目錄<br />C:\oracle\ora92\network\log> lsnrctl set log_status off -->暫停或離線記錄記錄檔<br />C:\oracle\ora92\network\log> rename listener.log listener.old -->重新命名記錄檔,一般加上日期<br />C:\oracle\ora92\network\log> lsnrctl set log_status on -->聯機監聽器記錄檔,會自動重新建立一個新的記錄檔<br />
2. Unix/Linux平台的處理
$ lsnrctl set log_status off<br />$ mv listener.log listener.old -->另一種方法,cp listener.log /log/bak/. 然後 cp /dev/null >listener.log<br />$ lsnrctl set log_status on<br />
3. 示範Linux平台下重新命名記錄檔
[oracle@test ~]$ cd /home/oracle/log<br />[oracle@test log]$ lsnrctl set log_status off -->如果存在密碼,應使用LSNRCTL介面來完成 </p><p>LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 02:41:09 </p><p>Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. </p><p>Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))<br />LISTENER parameter "log_status" set to OFF<br />The command completed successfully<br />[oracle@test log]$ mv listener_test.log listener_test.old<br />[oracle@test log]$ lsnrctl set log_status on </p><p>LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 02:41:31 </p><p>Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. </p><p>Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))<br />LISTENER parameter "log_status" set to ON<br />The command completed successfully<br />
四、 快捷參考
有關效能最佳化請參考
Oracle硬解析與軟解析
共用池的調整與最佳化(Sharedpool Tuning)
Buffercache 的調整與最佳化(一)
Oracle表緩衝(cachingtable)的使用
有關ORACLE體繫結構請參考
Oracle資料表空間與資料檔案
Oracle密碼檔案
Oracle參數檔案
Oracle聯機重做記錄檔(ONLINE LOG FILE)
Oracle控制檔案(CONTROLFILE)
Oracle歸檔日誌
Oracle復原(ROLLBACK)和撤銷(UNDO)
Oracle資料庫執行個體啟動關閉過程
Oracle10g SGA 的自動化管理
Oracle執行個體和Oracle資料庫(Oracle體繫結構)
有關閃回特性請參考
Oracle閃回特性(FLASHBACK DATABASE)
Oracle閃回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle閃回特性(Flashback Query、FlashbackTable)
Oracle閃回特性(Flashback Version、Flashback Transaction)
有關基於使用者管理的備份和備份恢複的概念請參考
Oracle冷備份
Oracle熱備份
Oracle備份恢複概念
Oracle執行個體恢複
Oracle基於使用者管理恢複的處理(詳細描述了介質恢複及其處理)
SYSTEM資料表空間管理及備份恢複
SYSAUX資料表空間管理及恢複
有關RMAN的備份恢複與管理請參考
RMAN 概述及其體繫結構
RMAN 配置、監控與管理
RMAN 備份詳解
RMAN 還原與恢複
RMANcatalog 的建立和使用
基於catalog 建立RMAN儲存指令碼
基於catalog 的RMAN 備份與恢複
使用RMAN遷移檔案系統資料庫到ASM
RMAN 備份路徑困惑(使用plus archivelog時)
有關ORACLE故障請參考
ORA-32004的錯誤處理
ORA-01658錯誤
CRS-0215錯誤處理
ORA-00119,ORA-00132 錯誤處理
又一例SPFILE設定錯誤導致資料庫無法啟動
對參數FAST_START_MTTR_TARGET= 0 的誤解及設定
SPFILE錯誤導致資料庫無法啟動(ORA-01565)
有關ASM請參考
建立ASM執行個體及ASM資料庫
ASM 磁碟、目錄的管理
使用 ASMCMD 工具管理ASM目錄及檔案
有關SQL/PLSQL請參考
SQLPlus常用命令
替代變數與SQL*Plus環境設定
使用Uniread實現SQLplus翻頁功能
SQL 基礎-->SELECT 查詢
SQL 基礎--> NEW_VALUE的使用
SQL 基礎--> 集合運算(UNION與UNION ALL)
SQL 基礎--> 常用函數
SQL 基礎--> 視圖(CREATEVIEW)
SQL 基礎--> 建立和管理表
SQL 基礎--> 多表查詢
SQL 基礎--> 過濾和排序
SQL 基礎--> 子查詢
SQL 基礎--> 分組與分組函數
SQL 基礎--> 層次化查詢(STARTBY ... CONNECT BY PRIOR)
SQL 基礎--> ROLLUP與CUBE運算子實現資料匯總
PL/SQL--> 遊標
PL/SQL--> 異常處理(Exception)
PL/SQL--> 語言基礎
PL/SQL--> 流程式控制制
PL/SQL--> PL/SQL記錄
PL/SQL--> 包的建立與管理
PL/SQL--> 隱式遊標(SQL%FOUND)
PL/SQL--> 包重載、初始化
PL/SQL--> DBMS_DDL包的使用
PL/SQL--> DML 觸發程序
PL/SQL--> INSTEAD OF 觸發器
PL/SQL--> 預存程序
PL/SQL--> 函數
PL/SQL--> 動態SQL
PL/SQL--> 動態SQL的常見錯誤
有關ORACLE其它特性
Oracle常用目錄結構(10g)
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle執行個體
日誌記錄模式(LOGGING、FORCE LOGGING 、NOLOGGING)
表段、索引段上的LOGGING與NOLOGGING
OralceOMF 功能詳解
Oracle使用者、對象許可權、系統許可權
Oracle角色、設定檔
Oracle分區表
Oracle外部表格
使用外部表格管理Oracle 警示日誌(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
資料泵 EXPDP 匯出工具的使用
資料泵 IMPDP 匯入工具的使用
匯入匯出 Oracle 分區表資料
SQL*Loader使用方法
啟用使用者進程跟蹤
配置非預設連接埠的動態服務註冊
配置ORACLE 用戶端串連到資料庫
systemsys,sysoper sysdba 的區別
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle補丁全集 (Oracle 9i 10g 11g Path)
Oracle10.2.0.1 升級到10.2.0.4
Oracle徹底 kill session