本文解释一些数据库采集问题。

采集对数据库压力大吗?
采集过程全部都是读取操作,唯一消耗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;