达梦:将sql通过shell脚本的方式放在后台执行

工作中为了解决服务器跨网络不稳定等因素,因此想要在服务器本地执行运行的sql,同时也能知道sql执行的情况,因此提供一个示例,其他类似需求可参考类似方式解决。

背景:按照表的粒度对表执行统计信息更新,并且能知道更新的进度及耗时。

1. 创建shell

复制代码
vi  /home/dmdba/stat.sh
#!/bin/sh 
cd /home/dmdba/dmdbms/bin   #进入数据库安装目录bin目录
./disql SYSDBA/密码:5236 <<EOF
 start /home/dmdba/stat.sql
 exit;
 EOF

2.将需要后台的sql写入stat.sql文件

复制代码
cd /home/dmdba
vi  stat.sql 

select sysdate(); #在语句的首位加上时间,就可以知道整个统计信息执行的耗时
dbms_stats.gather_table_statS('模式名','表名1',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.gather_table_statS('模式名','表名2',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.gather_table_statS('模式名','表名3',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.gather_table_statS('模式名','表名4',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.gather_table_statS('模式名','表名5',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
dbms_stats.gather_table_statS('模式名','表名6',null,100,true,'FOR ALL COLUMNS SIZE AUTO');
select sysdate(); 

3.通过nohup命令后台执行并将执行日志写入stat.log中

复制代码
cd /home/dmdba
nohup ./stat.sql > stat.log 2>&1 &

4.确定后台正常运行

复制代码
通过查看stat.sh进程是否存在

ps -ef|grep stat.sh


或者查看日志是否打印。

tail -100f stat.log

注意:需要注意各个路径的正确性,避免后台运行失败。

相关推荐
徐子元竟然被占了!!9 小时前
Linux-systemctl
linux·数据库·oracle
YJlio11 小时前
Active Directory 工具学习笔记(10.8):AdInsight——保存与导出(证据留存、共享与二次分析)
数据库·笔记·学习
suoyue_zhan11 小时前
GBase的管理监控平台GEM实践指南
数据库
哈哈老师啊12 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
小小8程序员12 小时前
Redis-10
数据库·redis·缓存
liuzhilongDBA12 小时前
从collation mismatch异常到其原理
数据库·version·glibc·postgres·collation
梁萌12 小时前
MySQL数据库分库分表介绍
数据库·mysql·shardingsphere·分库分表
程序员zgh13 小时前
Linux系统常用命令集合
linux·运维·服务器·c语言·开发语言·c++