oracle-sql-在多个数据库执行相同sql

简介:

脚本 f_con_exe_sql.sh

################################################################################
#     sql:需要执行的Sql,根据具体sql代替
#     array_name2:数据库tns
#     实现:在不同厂区执行同一sql:比如需要在所有厂区建索引。
################################################################################
#${dbuser}/${pwd}@${db_ip}:${db_port}/${service_name}
#不同厂区:
array_name1=(
"厂区A"
"厂区B"
"厂区C"
"厂区D"
"厂区E"
"厂区F"
"厂区G"
"厂区H"
)
array_name2=(
userA/password@192.168.10.11:1521/orcl
userA/password@192.168.10.12:1521/orcl
userA/password@192.168.10.13:1521/orcl
userA/password@192.168.10.14:1521/orcl
userA/password@192.168.10.15:1521/orcl
userA/password@192.168.10.16:1521/orcl
userA/password@192.168.10.17:1521/orcl
userA/password@192.168.10.18:1521/orcl
)
#echo ${array_name[@]}
#echo "sqlplus / as sysdba"${array_name[1]}
#echo length=${#array_name[@]}


#需要执行的Sql

sql2="
select sysdate,instance_name from v\$instance;
"

sql="
set line 400
col SEGMENT_NAME for a25
col OWNER for a15
col TABLESPACE_NAME for a20
col PARTITION_NAME for a20
col BYTES for 9999999999999
col size_G for 999999999999
col DEGREE for a5
col TABLE_NAME for a20
col TABLE_OWNER for a15
col INDEX_NAME for a25

select owner,segment_name,partition_name,segment_type,tablespace_name,blocks,bytes,bytes/1024/1024/1024 G from dba_segments where segment_name=upper('table1');

create index idx_table1_n2 on table1(mdate) TABLESPACE tab_INX parallel 5 online;
alter index idx_table1_n2 noparallel;

SELECT i.owner,
       i.index_name,
       i.table_owner,
       i.table_name,
       i.tablespace_name,
       i.degree,
       i.status,
       i.last_analyzed,
       o.created,
       o.last_ddl_time
  FROM dba_indexes i, dba_objects o
 WHERE     i.index_name = o.object_name
       AND i.owner = o.owner
       AND i.index_name IN
              upper('idx_table1_n2');
"


CURRENT_DIR=$(cd `dirname $0`; pwd)
LOG_FILE=${CURRENT_DIR}/sql_exec_$(date +"%Y%m%d_%H%M%S").log.$dbuser
cat /dev/null > $LOG_FILE


display_all_db()
{
for(( i=0;i<${#array_name2[@]};i++)) do
#${#array_name[@]}获取数组长度用于循环
echo ${array_name1[i]}"-"${array_name2[i]#*@}| tee -a $LOG_FILE
done;
}

##----------------遍历所有厂区数据库,并执行sql语句
f_con_exe_sql()
{
echo "------------------------------"| tee -a $LOG_FILE
echo ""|tee -a $LOG_FILE
echo "遍历所有数据库,并执行sql语句.."| tee -a $LOG_FILE
for(( i=0;i<${#array_name2[@]};i++)) 
do
#${#array_name[@]}获取数组长度用于循环
echo "#${i} 数据库-" ${array_name1[i]}"-"${array_name2[i]#*@}| tee -a $LOG_FILE
echo " "|tee -a $LOG_FILE
echo "执行sql: $sql"| tee -a $LOG_FILE
#echo "sqlplus -S ${dbuser}/${pwd}${array_name2[i]}"
echo " "|tee -a $LOG_FILE
sqlplus -S ${array_name2[i]} <<EOF | tee -a $LOG_FILE
$sql
EOF
echo " "|tee -a $LOG_FILE
done;
echo "执行结果: $LOG_FILE " | tee -a  $LOG_FILE
}




#####--------------------------------man--------------------------------#######

echo "------------------------------"| tee -a $LOG_FILE
display_all_db

f_con_exe_sql
目录
相关文章
|
2天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
9天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
22 11
|
4天前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
17 2
|
9天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
19天前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
34 10
|
16天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
36 0
|
20天前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
35 0
|
20天前
|
SQL 数据处理 数据库
|
SQL Oracle 关系型数据库
oracle用SQL Plus输入命令为什么只显示2
oracle用SQL Plus输入命令为什么只显示2
574 0
oracle用SQL Plus输入命令为什么只显示2
|
SQL Oracle 关系型数据库

推荐镜像

更多