Oracle 12c後enable_ddl_logging的日誌位置變化

PiscesCanon發表於2024-08-19

Oracle 12c後enable_ddl_logging的日誌位置變化

先吐個槽,enable_ddl_logging功能是Oracle Change Management Pack 的一部分,需要作為單獨的許可證購買,要單獨花錢......

開啟enable_ddl_logging功能,

在11g中,ddl操作將以XML格式被記錄在ADR_HOME/trade/alert_<SID>.log檔案中。

在12c及以後,日誌位置變成了兩個,分別以文字格式和XML格式儲存。

具體為:

文字格式:ADR_HOME/log/ddl_<SID>.log

XML格式:ADR HOME/log/ddl/log.xml

其中,兩種格式的記錄有所區別,特別CDB模式下需要注意一個問題。

以19c為例子,獲取ADR_HOME的值,

09:28:11 SYS@reposmdb(770)> col value for a100
09:28:17 SYS@reposmdb(770)> select name,value from v$diag_info where name = 'ADR Home';

NAME                      VALUE
------------------------- ----------------------------------------------------------------------------------------------------
ADR Home                  /u01/app/oracle/diag/rdbms/reposmdb/reposmdb

Elapsed: 00:00:00.00

啟動enable_ddl_logging功能後,建立一張表(DDL操作)後檢視日誌,https://www.cnblogs.com/PiscesCanon/p/18366748

09:30:03 SYS@reposmdb(770)> show con_name

CON_NAME
------------------------------
CDB$ROOT
09:30:05 SYS@reposmdb(770)> show parameter enable_ddl_logging

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ----------------------------------------------------------------------------------------------------
enable_ddl_logging                   boolean                           TRUE
09:30:13 SYS@reposmdb(770)> create table zkm ( id int );

Table created.

Elapsed: 00:00:00.01

另外一個視窗檢視日誌:
[root@reposmdb log]# tail -200f ddl_reposmdb.log
...省略不相關部分...
2024-08-19T09:31:16.089350+08:00
diag_adl:create table zkm ( id int )

[root@reposmdb log]# tail -200f ddl/log.xml 
<msg time='2024-08-19T09:31:16.089+08:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:5154:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='reposmdb' host_addr='192.168.1.100'
 pid='10658' con_uid='1' con_id='1'
 con_name='CDB$ROOT'>
 <txt>create table zkm ( id int )
 </txt>
</msg>

這裡可以看出,文字格式的日誌只會記錄時間和ddl的語句,不能識別是哪個容器執行的,我試了切換其他容器資料庫執行同樣的ddl,無法看出區別。

而xml格式則比較詳細,可以透過con_name指標看到容器名,從而區別開來,不過我個人感覺內容略顯臃腫。

host_addr也並非client ip。

防。

參考:How to Enable and Monitor DDL Logging in 11g and 12c (文件 ID 2254010.1)

相關文章