本文解释一些数据库采集问题。
- 采集对数据库压力大吗?
- 采集过程全部都是读取操作,唯一消耗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 ”如何处理?(启动日志有风险,操作需谨慎)。
-
- 设置归档文件存放路径,根据 Oracle 数据库运行环境设定。
alter system set log_archive_dest_1='location=<file_path>';
- 关闭数据库并启动到 mount 状态(在允许的情况下)。
shutdown immediate startup mount
- 配置数据库归档模式。
alter database archivelog;
- 打开数据库。
alter database open;
- 验证 supplemental log data 是否开启。
select t.SUPPLEMENTAL_LOG_DATA_MIN from v$database t;
如果返回值为 NO(未开启),则执行:
alter database add supplemental log data;
- 设置归档文件存放路径,根据 Oracle 数据库运行环境设定。