在脚本里面调用SQL*Plus, dgmgrl, rman等软件的方法

三牛哥 2021-3-15 6059

在DBA的日常工作中,我们常常需要写一个简单的脚本,批量运行一批sql命令或者脚本。这个时候我们可以在脚本里面使用sql*plus等工具。下面是我工作中的模板:


#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db1
export ORACLE_SID=CWTPR3
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
echo "SHRINK WT.JOBS_TTSSYNC: Begin time is : "
echo "--------------------------------------------"
date

sqlplus -s /nolog <<EOF
conn /as sysdba
set timing on
SET LINES 1000 PAGES 50000
-- put your SQL script or command here!!!!!!!
EOF

echo "SHRINK WT.JOBS_TTSSYNC: End time is : "
echo "--------------------------------------------"
date

exit

这里面使用了一个叫做here document的技术。 具体的解释可以参考维基:
https://en.wikipedia.org/wiki/Here_document
其中的EOF类似左右括号,只要前后一致就行了,选择什么名字不重要。

类似的脚本还有:


#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db1
export ORACLE_SID=CWTPR3
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

echo "--------------------------------------------"
date

dgmgrl -silent <<EOF
connect sys/c0mca5tdba
show configuration;
EOF

echo "--------------------------------------------"
date

exit

根据这个思路,你写一个脚本调用rman也是非常简单的。大家可以自行在互联网上搜索,可以拿到很多例子。

最新回复 (2)
返回
发新帖