[自制工具]批量后台更新统计信息

简介: Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。

Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。

执行方式:

sh /tmp/gather_schema_stats.sh syspasswd ip port service "schema1 schema2" degree&

详见以下代码:

cat > /tmp/gather_schema_stats.sh << EOF2
#!/bin/bash

# Usage:
# sh /tmp/gather_schema_stats.sh syspasswd ip port service "schema1 schema2" degree&

gather_schema_stats() {
date
sqlplus /nolog << EOF
connect sys/\$1@\$2:\$3/\$4 as sysdba
set timing on
exec dbms_stats.gather_schema_stats(ownname=>'\$5',options=>'GATHER AUTO',estimate_percent=>dbms_stats.auto_sample_size,method_opt=>'for all columns size auto',degree=>\$6,cascade=>TRUE);
exit
EOF
date
}

for SCHEMAS in \${5}
do
TIMESTAMP=\date "+%Y%m%d"\;LOG_FILE=/tmp/gather_schema_stats_\${TIMESTAMP}_\${SCHEMAS}.log
gather_schema_stats \${1} \${2} \${3} \${4} \${SCHEMAS} \$6 > \${LOG_FILE} 2>&1
done
EOF2

最后生成的脚本及日志如下所示:

ll /tmp
total 36
-rw-r----- 1 oracle oinstall  409 Dec 15 19:17 gather_schema_stats_20211215_CM.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:17 gather_schema_stats_20211215_CUSTCARE.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:18 gather_schema_stats_20211215_DW_TOTALCC.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:18 gather_schema_stats_20211215_OTHER_USER.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:18 gather_schema_stats_20211215_REPORT.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:18 gather_schema_stats_20211215_SXGIS.log
-rw-r----- 1 oracle oinstall  409 Dec 15 19:18 gather_schema_stats_20211215_TOTALCC_FC.log
-rw-r----- 1 oracle oinstall  600 Dec 15 19:17 gather_schema_stats.sh

值得注意的是,gather_schema_stats收集统计信息的各个参数配置,采用了最佳实践配置,可以放心参考使用。

目录
相关文章
|
2月前
Dataphin功能Tips系列(5)-手工表上传及长期维护
有些业务数据是手工excel维护的,这时我们要如何将数据上传至dataphin并进行维护?
|
2月前
|
存储 移动开发 小程序
利用微搭搭建信息查询小程序
利用微搭搭建信息查询小程序
|
3月前
如何用二维码高效收集信息?表单功能轻松实现
表单作为草料二维码的高级功能之一,可用于收集格式统一的数据。你可以通过组合姓名、图片、检查项等组件搭建出电子表单,关联到二维码中,扫码填写表单即可更快速、规范的收集数据。这篇文章为大家介绍下表单的制作教程。
|
5月前
|
数据管理
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
66 2
|
9月前
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
12月前
|
机器学习/深度学习 小程序 定位技术
「教程」微信小程序获取地理位置信息自动查询天气预报信息(附详细代码)
「教程」微信小程序获取地理位置信息自动查询天气预报信息(附详细代码)
204 0
|
运维 小程序 前端开发
基于小程序云开开发(统计学生信息并导出excel)1.0版本
基于小程序云开开发(统计学生信息并导出excel)1.0版本
96 0
基于小程序云开开发(统计学生信息并导出excel)1.0版本