DM8設定SQL日誌

2021-10-24 02:12:02 字數 4922 閱讀 9695

sql日誌

sql日誌為資料庫接收到的所有 sql 語句等資訊,達夢中可把sql日誌設定為同步與非同步兩種。

跟蹤日誌主要用於分析錯誤和分析效能問題,基於跟蹤日誌可以對系統執行狀態有乙個分析,比如,可以挑出系統現在執行速度較慢的 sql 語句,進而對其進行優化。

使用sql日誌注意

1、設定sql過濾規則,只記錄必要的sql,生產環境不要設成1;

設定sqllog.ini中sql_trace_mask引數,具體掩碼含義參考達夢系統管理員手冊。

2、同步日誌會影響系統效率,生產環境如需開啟必須設定為非同步日誌;

開啟跟蹤日誌會對系統的效能會有較大影響,一般用於查錯和調優的時候才會開啟,預設情況下系統是關閉跟蹤日誌的。 若需要跟蹤日誌但對日誌的實時性沒有嚴格的要求,又希望系統有較高的效率,可以設定引數sql_trace_mask和svr_log_min_exec_time 只記錄關注的相關記錄,減少日誌總量;設定引數 svr_log_async_flush 開啟 sql 日誌非同步刷盤提高系統效能。

設定sqllog.ini

sqllog.ini使用者sql日誌的配置。當把dm.ini引數svr_log設定為1,才會開啟sql日誌。

如果在伺服器啟動過程中,修改了sqllog.ini檔案。修改之後的檔案,只要呼叫過程sp_refresh_svr_log_config()就會生效。

sqllog.ini引數配置:

引數名預設值

屬性說明

sql_trace_mask

動態,系統級

log記錄的語句型別掩碼,是乙個格式化的字串,表示乙個32位整數上哪一位將被置為1,置為1的位則表示該型別的語句要記錄,格式為:位號:位號:位號。列如:3:5:7表示第3,第5,第7位上的值被置為1。每一位的含義見下面說明(2~17前提是:sql標記位24也要置):

1   全部記錄(全部記錄並不包含原始語句)

2   全部dml型別語句

3   全部ddl型別語句

4   update型別語句(更新)

5   delete型別語句(刪除)

6   insert型別語句(插入)

7   select型別語句(查詢)

8   commit型別語句(提交)

9   rollback型別語句(回滾)

10  call型別語句(過程呼叫)

11  backup型別語句(備分)

12  restore型別語句(恢復)

13  建立物件操作(create ddl)

14  修改物件操作(alter ddl)

15  刪除物件操作(drop ddl)

17  **操作(revoke ddl)

22  繫結引數

23  存在錯誤的語句(語法錯誤,語義分析錯誤等)

24  是否需要記錄執行語句

25  是否需要列印計畫和語句執行的時間

26  是否需要記錄執行語句的時間

27  原始語句(伺服器從客戶端收到的未加分析的語句)

28  是否記錄引數資訊,包括引數的序號、資料型別和值

29  是否記錄事務相關事件

file_num

動態,系統級

總共記錄多少個日誌檔案,當日誌檔案達到這個設定值以後,再生成新的檔案時,會刪除最早的那個日誌檔案,日誌檔案的命令格式為dmsql_例項名_日期時間.log。

當這個引數配置成0時,只會生成兩個日誌相互切換著記錄。有效值範圍(0~1024)。例如,當file_num=0,例項名為pdm時,根據當時的日期時間,生成的日誌名稱為:

dmsql_pdm_20180719_163701.log,dmsql_pdm_20180719_163702.log

switch_mode

手動表示sql日誌檔案切換的模式:

0:不切換

1:按檔案中記錄數量切換

2:按檔案大小切換

3:按時間間隔切換

switch_limit

動態,系統級

不同切換模式switch_mode下,意義不同:

u 按數量切換時,乙個日誌檔案中的sql記錄條數達到多少條之後系統會自動將日誌切換到另乙個檔案中。乙個日誌檔案中的sql記錄條數達到多少條之後系統會自動將日誌切換到另乙個檔案中。有效值範圍(1000~ 10000000)

u 按檔案大小切換時,乙個日誌檔案達到該大小後,系統自動將日誌切換到另乙個檔案中,單位為m。有效值範圍(1~ 2000)

u 按時間間隔切換時,每個指定的時間間隔,按檔案新建時間進行檔案切換,單位為分鐘。有效值範圍(1~ 30000)

async_flush

動態,系統級

是否開啟非同步sql日誌功能。0:表示關閉;1:表示開啟

min_exec_time

動態,系統級

詳細模式下,記錄的最小語句執行時間,單位為毫秒。執行時間小於該值的語句不記錄在日誌檔案中。有效值範圍(0~4294967294)

file_path

..\log

動態,系統級

日誌檔案所在的資料夾路徑

buf_total_size

動態,系統級

sql日誌buffer占用空間的上限,單位為kb,取值範圍(1024~1024000)

buf_size

動態,系統級

一塊sql日誌buffer的空間大小,單位為kb,取值範圍(50~409600)

buf_keep_cnt

動態,系統級

系統保留的sql日誌快取的個數,有效值範圍(1~ 100)

part_stor

手動sql日誌分割槽儲存,表示sql日誌進行分割槽儲存的劃分條件。

0表示不劃分;1表示user:根據不同使用者分布儲存

items

手動配置sql日誌記錄中的那些列要被記錄。

該引數是乙個格式化的字串,表示乙個記錄中的那些專案要被記錄,格式為:列號:列號:列號。列如:3:5:7表示第3,第5,第7列要被記錄。0表示記錄所有的列

1 time執行的時間

2 seqno伺服器的站點號

3 sess操作的sess位址

4 user執行的使用者

5 trxid事務id

6 stmt語句位址

8 ip客戶端ip

9 stmt_type語句型別

10 info記錄內容

11 result執行結果,包括執行用時和影響行數(可能沒有)

user_mode

手動sql日誌按使用者過濾時的過濾模式,取值

0:關閉使用者過濾

1:白名單模式,只記錄列出的使用者操作的sql日誌

2:黑名單模式,列出的使用者不記錄sql日誌

users

空串手動

開啟svr_log_user_mode時指定的使用者列表。格式為:使用者名稱:使用者名稱:使用者名稱

注意注意:只有把ini引數svr_log置為1,且svr_log_name為slog_all時,sqllog.ini中名稱為slog_all的配置塊才會生效。

若svr_log為1,但不存在sqllog.ini或sqllog.ini配置錯誤,則仍舊使用dm.ini中的「使用者請求跟蹤相關引數」。

例如:下面是乙個svr_log_name為slog_all的sqllog.ini的例子:

buf_total_size          = 10240        # sql 日誌 buffer 占用空間的上限

buf_size                = 1024         #一塊 sql 日誌 buffer 的空間大小

buf_keep_cnt            = 6            #系統保留的 sql 日誌快取的個數

[slog_all]

file_path    = ..\log

part_stor    = 0

switch_mode  = 0

switch_limit = 0

async_flush   = 0

file_num = 0

items    = 0

sql_trace_mask  = 0   #log 記錄的語句型別掩碼

min_exec_time = 0     #記錄的最小語句執行時間

user_mode   = 0

users =

dm8操作流程

開啟sql日誌:

sp_set_para_value(1, 'svr_log', 1);

資料庫會自動生成sqllog.ini

[root@mydb dameng]# more sqllog.ini

buf_total_size          = 10240         #sqls log buffer total size(k)(1024~1024000)

buf_size                = 1024          #sqls log buffer size(k)(50~409600)

buf_keep_cnt            = 6             #sqls log buffer keeped count(1~100)

[slog_all]

file_path    = ../log

part_stor    = 0

switch_mode  = 0

switch_limit   = 0

async_flush   = 0

file_num = 0

items    = 0

sql_trace_mask  = 0

min_exec_time = 0

user_mode   = 0

users =

日誌記錄格式如下:

—關閉sql日誌:

sp_set_para_value(1, 'svr_log', 0);

備註:sql日誌以「dmsql-例項名.log」 命名, 預設生成在 dm安裝目錄log 子目錄下面

DM8歸檔日誌挖掘

檢視是否開啟歸檔 select arch mode from v database 檢視所有的歸檔日誌資訊 select name,first time,next time,first change next change from v archived log 新增需要分析的歸檔日誌到logmnr...

DM8初步了解

作為一名資料庫初學者,在學習達夢之前未曾接觸過資料庫,通過學習達夢資料庫,了解了關於資料庫的一些知識,下面粗略談談我對達夢資料庫管理系統的學習心得。1 硬體架構支援 達夢資料庫管理系統支援多種硬體平台,intel amd x86平台 國產飛騰 申威 龍芯 華為鯤鵬平台。2 作業系統支援 達夢資料庫管...

DM8 佳節自古

嘆少時感懷 金庸 裡有哪些不易發現卻很打動人的小細節?馬伯庸 金庸裡大情大悲的橋段很多,初讀不以為意,再思之,如有牛毛細針刺入心中,隱隱小痛,卻移不走,撫不平.之於俺,比較粗淺,當年一直喜歡的就是 焚我殘軀,熊熊聖火.生亦何歡,死亦何苦.為善除惡,為光明故.喜樂哀愁,皆歸塵土.憐我世人,憂患實多.所...