在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也是非常简单的。大家可以自行在互联网上搜索,可以拿到很多例子。