达梦:将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

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

相关推荐
G探险者14 小时前
为什么 VARCHAR(1000) 存不了 1000 个汉字? —— 详解主流数据库“字段长度”的底层差异
数据库·后端·mysql
芬加达14 小时前
jvm八股
运维·服务器·jvm
小兔薯了14 小时前
11. Linux firewall 防火墙管理
linux·运维·服务器
Albert Tan15 小时前
Oracle EBS R12.2.14 清理FND_LOBS并释放磁盘空间
数据库·oracle
L.EscaRC15 小时前
图数据库Neo4j原理与运用
数据库·oracle·neo4j
知己808015 小时前
docker搭建图数据库neo4j
数据库·docker·neo4j
TDengine (老段)15 小时前
什么是 TDengine IDMP?
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
谅望者15 小时前
数据分析笔记08:Python编程基础-数据类型与变量
数据库·笔记·python·数据分析·概率论
Boilermaker199215 小时前
【MySQL】备份与恢复
数据库·mysql
q***74816 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构