本文解釋一些數據庫采集問題。

采集對數據庫壓力大嗎?
采集過程全部都是讀取操作,唯一消耗CPU資源的操作來自于getddl操作,一般壓力都很小。但為了采集順利進行,建議在業務低峰期執行,否則容易出現Socket Timeout的超時錯誤(采集sql無法執行完成),導致必須重新采集。
采集的數據量大嗎?主要采集哪些內容?
采集主要收集數據庫本身記錄的一些統計信息,主要的數據量來自數據庫對象的DDL和記錄的歷史SQL文本信息,所有大小取決于客戶的對象數量、大小和SQL文本大小,一般都不會超過1G。
終端提示“ connection to database fail, please check connection parameters ”如何處理?
請查看數據庫用戶名(-u)、密碼(-p )、端口號(-P)、服務名(-d)是否正確。
終端提示“ TNS:listener does not currently know of service requested in connect descriptor"如何處理?
請查看連接參數中的-d 參數是否為ServiceName。
機器本地安裝有 jdk(版本低于 1.8),造成啟動失敗?
采集端運行時會優先選擇本地的 jdk 運行,如果 jdk 低于 1.8 版本會提示版本不支持, 請將運行腳本 collect_.sh 中 JAVA_PATH 強制指定為安裝目錄 jdk (將 JAVA_PATH=`which java` 換成 JAVA_PATH='' )。
如何在Mac OS上面運行采集器?
需要本地自行安裝 jdk 1.8 以上版本 jre,下載Linux版本采集端,運行命令即可。
采集結果中index對象數量不一致?
Oracle 數據庫中的 Unique Index 與 Primary Index 對象合并至 Table 對象的 DDL 中, 不單獨展示。
Oracle express版本采集少sqltext 信息?
需要在數據庫上執行:alter system set control_management_pack_access="DIAGNOSTIC+TUNING";exec dbms_workload_repository.create_snapshot(); 開啟此參數不用重啟 Oracle 數據庫。然后再開始采集即可。
終端提示“ insufficient account permission, please refer to user guide and re-configure account ”如何處理?
請確認配置數據庫采集賬號時權限是否齊全,或重新授權采集賬號。
終端提示“ GC overhead limit exceeded ”如何處理?
擴大采集器的物理內存,并調整啟動腳本中的JVM_OPTIONS參數為更大啟動內存(-Xmx16g )。
如何在 Mac OS / Linux 上面查看采集結果中的大文件?
將大文件拷貝到一個臨時目錄下,使用split -b 10m eoa_tmp_objects_ext.csv命令將大文件切分成小文件分別查看(內容與大文件一致)即可。其中,小文件以 xaa / xab 等文件名存在同級目錄下。
終端提示“ transaction log is not configured, please refer to FAQ and modify log configuration ”如何處理?(啟動日志有風險,操作需謹慎)。
  1. 設置歸檔文件存放路徑,根據 Oracle 數據庫運行環境設定。
    alter system set log_archive_dest_1='location=<file_path>';
  2. 關閉數據庫并啟動到 mount 狀態(在允許的情況下)。
    shutdown immediate
    startup mount                     
  3. 配置數據庫歸檔模式。
    alter database archivelog;               
  4. 打開數據庫。
    alter database open;                     
  5. 驗證 supplemental log data 是否開啟。
    select t.SUPPLEMENTAL_LOG_DATA_MIN from v$database t;                       

    如果返回值為 NO(未開啟),則執行:

    alter database add supplemental log data;