本文介紹Oracle資料庫周期性採集SQL資訊以及資料分析的方法。
前提條件
Oracle資料庫版本為10g、11g、12c。背景資訊
周期性採集可以根據自訂的採集周期,持續採集Oracle的SQL資訊,並對SQL資訊自動合并。說明 周期性採集目前只在離線採集器中支援,線上採集暫未支援。您需要先採集Oracle資料庫的SQL資訊,詳情操作請參見採集資訊。
使用流程
- 採集SQL資訊。說明 由於周期性採集目前只在離線採集器中支援,線上採集暫未支援。
- 分析SQL資訊。說明 通過建立周期性採集專案,上傳資料檔案,系統則會為您進行SQL資訊自動合并與分析。詳情操作請參見分析資訊 。
採集資訊
- 下載採集器。
- 登入Data Management 5.0。
- 在頂部功能表列中,選擇 。
- 在SQL周期性採集地區,單擊下載。
- 在資源下載頁面的資料庫採集器下載地區,單擊下載。
- 選擇資料庫採集器的版本,並同意協議,完成資料庫採集器的下載。說明
- 資料庫採集器運行環境要求:
- 資料庫採集器所在的機器網路可串連Oracle來源資料庫即可,無需安裝在來源資料庫物理機上。
- 記憶體需達到6 GB以上,同時硬碟空間需滿足50 GB以上。
- 源庫結構採集時,對收集結果資料自動進行參數脫敏。
- 源庫結構採集時,自動監測目標庫負載。當負載超過系統設定閾值時,自動暫停採集;當負載恢複後繼續採集。
- 資料庫採集器運行環境要求:
- 登入Oracle來源資料庫,使用具有SYSDBA許可權的帳號建立資料擷取的臨時帳號並配置許可權。說明
- 若您已有包含下面許可權的帳號,請忽略此步驟,直接使用。
- 以下許可權用於串連Oracle資料庫,收集相關資訊並對結果資料脫敏匯出。
- Oracle 10g、11g、12c(非CDB模式,建立LOCAL USER類型使用者)
--建立採集使用者eoa_user, 並設定密碼為eoaPASSW0RD create user eoa_user identified by "eoaPASSW0RD" default tablespace users; --授予查詢許可權 grant connect,resource,select_catalog_role,select any dictionary to eoa_user; --授予DBMS_LOGMNR許可權 --版本為Oracle 10g的資料庫需要先執行如下語句: CREATE OR REPLACE PUBLIC SYNONYM dbms_logmnr FOR sys.dbms_logmnr; grant execute on DBMS_LOGMNR to eoa_user; --授予DBMS_METADATA許可權 grant execute on dbms_metadata to eoa_user; --授予查詢事務許可權 grant select any transaction to eoa_user; --授予分析表許可權 grant analyze any to eoa_user; --授予產生隨機編號許可權 grant execute on dbms_random to eoa_user;
- Oracle 12c(CDB模式,需要串連到CDB,建立COMMON USER類型使用者)
create user c##eoa_user identified by "eoaPASSW0RD" default tablespace users; grant connect,resource,select_catalog_role,select any dictionary to c##eoa_user container=all; grant execute on DBMS_LOGMNR to c##eoa_user container=all; grant execute on dbms_metadata to c##eoa_user container=all; grant select any table to c##eoa_user container=all; grant select any transaction to c##eoa_user container=all; grant analyze any to c##eoa_user container=all; grant execute on dbms_random to c##eoa_user container=all; alter user c##eoa_user set container_data=all container=current;
- 啟動採集(在Windows環境下執行.bat;在Linux 環境下執行.sh,本文以Linux環境介紹如何進行資料擷取)。
- Oracle 10g、11g
sh collect_10g_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -c <cron>
sh collect_11g_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -c <cron>
- Oracle 12c
sh collect_12c_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -s <sid> -c <cron>
說明 上述命令各參數解釋如下:- -h(必選):採集資料庫的IP地址。
- -u(必選):採集使用者。
- -p(必選):採集使用者的密碼。
- -d(必選): 採集資料庫的服務名。
- -s(僅Oracle 12c需要提供此參數):採集資料庫執行個體名。
- -c(必選):cron運算式,用來指定採集的周期性。格式為:
秒分時 日月周[年]
。
周期性採集會根據cron運算式配置的周期持續進行,為了協助您理解,下面介紹一些常用的cron運算式樣本。同時您也可以隨時可以停止採集(kill進程號)。
運算式 說明 0 */1 * * * ? 每隔1分鐘觸發一次。 0 0 5-15 * * ? 每天5:00~15:00整點觸發。 0 0/3 * * * ? 每隔3分鐘觸發一次。 0 0-5 14 * * ? 每天14:00~14:05期間每隔1分鐘觸發一次。 0 0/5 14 * * ? 每天14:00~14:55期間每隔5分鐘觸發一次。 0 0/5 14,18 * * ? 每天14:00~14:55和18:00~18:55兩個時間段內每5分鐘觸發一次。 0 0/30 9-17 * * ? 每天9:00~17:00內每半小時觸發一次。 0 0 10,14,16 * * ? 每天10:00、14:00和16:00觸發。 0 0 12 ? * WED 每周三12:00觸發。 0 0 17 ? * TUES,THUR,SAT 每周二、周四、周六17:00觸發。 0 10,44 14 ? 3 WED 每年3月的每周三的14:10和14:44觸發。 0 15 10 ? * MON-FRI 周一至周五的上午10:15觸發。 0 0 23 L * ? 每月最後一天23:00觸發。 0 15 10 L * ? 每月最後一天10:15觸發。 0 15 10 ? * 6L 每月最後一個周五10:15觸發。 0 15 10 * * ? 2021 2021年的每天10:15觸發。 0 15 10 ? * 6L 2021-2025 2021年~2025年的每月的最後一個周五上午10:15觸發。 0 15 10 ? * 6#3 每月的第三個周五10:15觸發。 - Oracle 10g、11g
- 匯出採集結果。採集結束後,會提示您已產生資料包,記錄檔如下:
[***] ****************************************************************** [***] * Collect Successfully! [***] * [***] * Complete the file packaging, the package result path is: [***] * ~rainmeter/out/data.zip ******************************************************************
查看分析資訊
- 登入Data Management 5.0。
- 在頂部功能表列中,選擇 。
- 在遷移實驗室頁面,單擊SQL周期性採集地區的詳情。
- 單擊建立專案。
- 在建立周期性採集專案面板,輸入專案名和資料庫類型,單擊上傳,將本地採集的out/data.zip上傳。
- 單擊建立。
- 單擊目標專案號右側操作列中的詳情,查看採集結果。說明 您可以點擊目標SQL的查看按鈕,查看具體SQL錯誤資訊的分析情況。