Oracle数据库循环重建多个物化视图shell脚本

news/2024/12/16 9:41:13/文章来源:https://www.cnblogs.com/dll102/p/18609270
#!/bin/bash# 设置数据库连接信息
DB_HOST="LOCALHOST"
DB_PORT="1521"
DB_SID="pdb"
DB_USER="mics"
DB_PASS="GZL11mics"
TNS_SERVICE="${DB_SID}"START_TIME=$(date +"%Y-%m-%d %H:%M:%S")
echo "开始时间: $START_TIME"# 定义物化视图的名称列表
MV_NAMES=("mv_entity_device_data" "mv_device_status" "mv_user_data")  # 添加多个物化视图名称# 循环处理每个物化视图
for MV_NAME in "${MV_NAMES[@]}"; doecho "正在检查物化视图: $MV_NAME"# 使用 here document 执行 SQL 查询,确保格式正确RESULT=$(sqlplus -s "$DB_USER/$DB_PASS@//${DB_HOST}:${DB_PORT}/${TNS_SERVICE}" <<EOFSET HEADING OFFSET FEEDBACK OFFSET VERIFY OFFSET ECHO OFFSELECT COUNT(*) FROM all_mviews WHERE mview_name = UPPER('$MV_NAME');EXIT;
EOF)# 去除空格、换行等不必要的字符RESULT=$(echo "$RESULT" | tr -d '[:space:]')    # 检查 RESULT 是否为有效的数字if [[ "$RESULT" =~ ^[0-9]+$ ]]; thenif [ "$RESULT" -gt 0 ]; then# 获取创建物化视图的SQLCREATE_MV_SQL=$(sqlplus -s "$DB_USER/$DB_PASS@//${DB_HOST}:${DB_PORT}/${TNS_SERVICE}" <<EOFSET HEADING OFFSET FEEDBACK OFFSET VERIFY OFFSET ECHO OFFSET LONG 10000SET LONGCHUNKSIZE 10000SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW',UPPER('$MV_NAME'), 'MICS') FROM dual;EXIT;
EOF
)# 去除多余的换行和空格CREATE_MV_SQL=$(echo "$CREATE_MV_SQL" | tr -d '\n' | tr -s ' ')CREATE_MV_SQL="${CREATE_MV_SQL};"echo $CREATE_MV_SQL > create_mv_view.sqlecho "commit;" >> create_mv_view.sqlecho "exit;" >> create_mv_view.sqlecho "物化视图 $MV_NAME 存在,正在删除旧的物化视图..."# 删除已有的物化视图DELETE_MV_SQL="DROP MATERIALIZED VIEW $MV_NAME;"# 执行删除物化视图的 SQLecho "$DELETE_MV_SQL" | sqlplus -s "$DB_USER/$DB_PASS@//${DB_HOST}:${DB_PORT}/${TNS_SERVICE}"echo "物化视图 $MV_NAME 已删除,正在重新创建..."# 执行创建物化视图的 SQLsqlplus -s "$DB_USER/$DB_PASS@//${DB_HOST}:${DB_PORT}/${TNS_SERVICE}" @create_mv_view.sql > cr.log 2>&1echo "物化视图 $MV_NAME 已重新创建。"elseecho "物化视图 $MV_NAME 不存在,请先手动创建视图"fielse# 如果 RESULT 不是有效数字echo "查询结果无效或为空,跳过物化视图 $MV_NAME"fi# 记录结束时间END_TIME=$(date +"%Y-%m-%d %H:%M:%S")echo "结束时间: $END_TIME"
done

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853635.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在易优CMS中调试新模板?

在易优CMS中调试新模板是一项重要的任务,以确保新模板能够正常工作并且不会影响网站的其他功能。以下是一些详细的步骤和建议,帮助你在易优CMS中调试新模板:备份现有数据:在开始调试之前,务必备份现有的数据库和文件。这样即使在调试过程中出现问题,也可以快速恢复到原来…

如何在易优CMS中创建分页加载文件 formreply_block001.htm?

在易优CMS中,为了实现分页加载功能,需要创建一个分页加载文件 formreply_block001.htm。以下是详细的步骤和说明:创建文件:在模板目录 pc/system 或 mobile/system 下创建一个名为 formreply_block001.htm 的文件。具体路径如下:PC端:模板目录/pc/system/formreply_block…

在PbootCMS中如何处理不同Web服务器的文件上传大小限制?

在PbootCMS中,处理不同Web服务器的文件上传大小限制需要针对每种Web服务器进行特定的配置。以下是针对IIS、Nginx和Apache三种常见Web服务器的详细配置方法:IIS:打开IIS管理器:打开IIS管理器,选择要修改的网站。 请求筛选:在右侧操作栏中,点击“请求筛选”。 编辑功能设…

怎么修改公司网站的内容,如何高效更新网站内容

修改公司网站的内容是一个常见的维护任务,需要确保内容的准确性和时效性。以下是详细的步骤和注意事项:确定修改内容:明确需要修改的具体内容,如文字、图片、视频等。 备份网站:在进行任何修改之前,务必备份当前的网站文件和数据库,以防数据丢失或出现问题时可以恢复。 …

高通Genitop点阵字库芯片GT20L16S1Y、

序号 工作电压 点阵数大小 点阵 字库特征 总线接口 封装 3.3V 5V 8 12 16 24 32 排列 1 GT20L16S1Y ☆ Y 简体 SPI SOT-23 2 GT20L24F6Y ● ◎ ● ◎ Y 173国外文 SPI SOT-23 3 GT20L16J1Y ◆ Y 日文 SPI SOT-23 4 GT20L16P1Y ☆ Y MP3专用 SPI SOT-2…

盘点最受企业青睐的跨网文件安全交换系统!

一、为什么传统跨网工具难以满足现代企业需求? 传统跨网文件交换工具(如U盘、FTP、网闸等)在现代企业需求面前显得力不从心,尤其是在安全性、效率、合规性和灵活性等方面存在明显短板。 1、安全性不足 传统跨网工具(如普通FTP、USB拷贝)通常采用明文传输或未加密存储,容…

二阶魔方教程

二阶色先教程色先法整个分为3步:1、色向归位 Corner Orientation (CO) 2、顶层分离 Layer Separation (LS)3、各角归位Corner Permutation (CP) 一、色向分离 CO色向分离的意思是指把两个对顶面的色向复原,比如用红色和橙色做上下顶面,色向分离就是指把红色和橙色归到上下两…

pyqt5 串口serial用法

测试将TX,RX短接。 串口打开发送,接受、关闭点击查看代码 import serial ser = serial.Serial(com15,9600,timeout=1) ser.write(bhello) data=ser.readline() print(data) ser.close()

【一文概述】常见的几种内外网数据交换方案介绍

一、内外网数据交换的核心需求 内外网数据交换的需求核心在于“安全、效率、合规”,而应用场景的多样性使得不同企业需要定制化的解决方案。通过结合业务特性和安全等级要求,企业能够选择适合的技术方案来实现高效、安全的内外网数据交换。1、数据安全 确保数据在内外网之间交…

Bootstrap4带多选功能输入框组件

BsMultiSelect.js是一款Bootstrap4带多选功能输入框组件。BsMultiSelect.js扩展了原生bootstrap4 input输入框,可在输入框中通过下拉框来选择多个输入内容。在线预览 下载使用方法 在页面中引入jquery和bootstrap4相关文件,以及BsMultiSelect.min.js和BsMultiSelect.min.css…

Java8--方法--String--trim

greeting = "Hello"; String greetingtrim = " " + greeting + " " ; System.out.println("greetingtrim:"+ greetingtrim); System.out.println("greetingtrim.trim():"+greetingtrim.trim());效果图:

从底层源码深入分析Spring的IoC容器初始化过程

IOC容器的初始化整体过程 Spring是如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的?这主要会经过以下 4 步:从XML中读取配置文件,并将配置文件转换为Document 再将Document中的 bean标签解析成 BeanDefinition,如解析 property…