水煮oracle41----shell指令碼中對oracle的sql*plus和rman工具的指令碼呼叫和嵌入
Linux/Unix shell指令碼中呼叫或執行SQL,RMAN 等為自動化作業以及多次反覆執行提供了極大的便利,因此透過Linux/Unix shell來完成Oracle
的相關工作,也是DBA必不可少的技能之一。本文針對Linux/Unix shell指令碼呼叫sql, rman 指令碼給出了相關示例。
的相關工作,也是DBA必不可少的技能之一。本文針對Linux/Unix shell指令碼呼叫sql, rman 指令碼給出了相關示例。
一、由shell指令碼呼叫sql,rman指令碼
- 1、shell指令碼呼叫sql指令碼
- #首先編輯sql檔案
- oracle@SZDB:~> more dept.sql
- connect scott/tiger
- spool /tmp/dept.lst
- set linesize 100 pagesize 80
- select * from dept;
- spool off;
- exit;
- #編輯shell指令碼檔案,在shell指令碼內呼叫sql指令碼
- oracle@SZDB:~> more get_dept.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- sqlplus -S /nolog @/users/oracle/dept.sql #注意此處執行sql指令碼的方法 -S 表示以靜默方式執行
- exit
- #授予指令碼執行許可權
- oracle@SZDB:~> chmod 775 get_dept.sh
- -->執行shell指令碼
- oracle@SZDB:~> ./get_dept.sh
- DEPTNO DNAME LOC
- ---------- -------------- -------------
- 10 ACCOUNTING NEW YORK
- 20 RESEARCH DALLAS
- 30 SALES CHICAGO
- 40 OPERATIONS BOSTON
- 2、shell指令碼呼叫rman指令碼
- #首先編輯RMAN指令碼
- oracle@SZDB:~> more rman.rcv
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
- ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
- ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
- SET LIMIT CHANNEL CH1 READRATE=10240;
- SET LIMIT CHANNEL CH1 KBYTES=4096000;
- SET LIMIT CHANNEL CH2 READRATE=10240;
- SET LIMIT CHANNEL CH2 KBYTES=4096000;
- CROSSCHECK ARCHIVELOG ALL;
- DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
- BACKUP
- DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
- SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
- BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
- DELETE NOPROMPT OBSOLETE;
- RELEASE CHANNEL CH1;
- RELEASE CHANNEL CH2;
- }
- #編輯shell指令碼檔案,在shell指令碼內呼叫rman指令碼
- oracle@SZDB:~> more rman_bak.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- $ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
- exit
- #授予指令碼執行許可權
- oracle@SZDB:~> chmod 775 rman_bak.sh
- #執行shell指令碼
- oracle@SZDB:~> ./rman_bak.sh
二、嵌入sql語句及rman到shell指令碼
- 1、直接將sql語句嵌入到shell指令碼
- oracle@SZDB:~> more get_dept_2.sh
- #!/bin/bash
- # Author : Robinson Cheng
- # Blog : http://blog.csdn.net/robinson_0612
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
-
sqlplus -S /nolog <
#EOF在此表示當輸入過程中碰到EOF後,整個sql指令碼輸入完畢 - connect scott/tiger
- spool /tmp/dept.lst
- set linesize 100 pagesize 80
- select * from dept;
- spool off;
- exit; #退出sqlplus 環境
- EOF
- exit #推出shell指令碼
- #授予指令碼執行許可權
- oracle@SZDB:~> chmod u+x get_dept_2.sh
- #執行shell指令碼
- oracle@SZDB:~> ./get_dept_2.sh
- DEPTNO DNAME LOC
- ---------- -------------- -------------
- 10 ACCOUNTING NEW YORK
- 20 RESEARCH DALLAS
- 30 SALES CHICAGO
- 40 OPERATIONS BOSTON
- 2、直接將sql語句嵌入到shell指令碼(方式二,使用管道符號>代替spool來輸出日誌)
- oracle@SZDB:~> more get_dept_3.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
-
sqlplus -S /nolog 1>/users/oracle/dept.log 2>&1 <
- connect scott/tiger
- set linesize 80 pagesize 80
- select * from dept;
- exit;
- EOF
- cat /users/oracle/dept.log
- exit
- #另一種實現方式,將所有的sql語句輸出來生成sql指令碼後再呼叫
- oracle@SZDB:~> more get_dept_4.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- echo "conn scott/tiger
- select * from dept;
- exit;" >/users/oracle/get_dept.sql
- sqlplus -silent /nolog @get_dept.sql 1>/users/oracle/get_dept.log 2>&1
- cat get_dept.log
- exit
- 3、將rman指令碼嵌入到shell指令碼
- oracle@SZDB:~> more rman_bak_2.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
-
$ORACLE_HOME/bin/rman log=/users/oracle/bak/rman.log <
- connect target /
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
- ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
- ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
- SET LIMIT CHANNEL CH1 READRATE=10240;
- SET LIMIT CHANNEL CH1 KBYTES=4096000;
- SET LIMIT CHANNEL CH2 READRATE=10240;
- SET LIMIT CHANNEL CH2 KBYTES=4096000;
- CROSSCHECK ARCHIVELOG ALL;
- DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
- BACKUP
- DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
- SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
- BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
- DELETE NOPROMPT OBSOLETE;
- RELEASE CHANNEL CH1;
- RELEASE CHANNEL CH2;
- }
- EXIT;
- EOF
- exit
- #授予指令碼執行許可權
- oracle@SZDB:~> chmod u+x rman_bak_2.sh
- #執行shell指令碼
- oracle@SZDB:~> ./rman_bak_2.sh
-
RMAN> RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 19> 20> 21> RMAN> oracle@SZDB:~>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1349454/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux/Unix shell 指令碼中呼叫SQL,RMAN指令碼Linux指令碼SQL
- Oracle rman 指令碼Oracle指令碼
- 呼叫Frame中的指令碼指令碼
- 建庫和表的指令碼.sql指令碼SQL
- 分享Oracle Rman的備份指令碼Oracle指令碼
- [Oracle] rman備份的指令碼(1)Oracle指令碼
- ORACLE RMAN備份的指令碼配置Oracle指令碼
- Oracle sql指令碼中註釋OracleSQL指令碼
- shell動態指令碼和pl/sql動態指令碼的比較指令碼SQL
- FastScripts for Mac(指令碼呼叫工具)ASTMac指令碼
- ORACLE分析表和索引的指令碼Oracle索引指令碼
- oracle linux rman 指令碼OracleLinux指令碼
- oracle RMAN備份指令碼Oracle指令碼
- 9、在Shell指令碼中呼叫其他指令碼指令碼
- 運維工作中的指令碼化和工具化運維指令碼
- rman指令碼指令碼
- Oracle 中 誤刪 emp,dept ,恢復 emp 和 dept表的sql指令碼.OracleSQL指令碼
- 一次 oracle rman 指令碼的部署Oracle指令碼
- rman備份和增量備份指令碼指令碼
- 水煮六《——sql*plus工具的登入SQL
- java中呼叫groovy指令碼Java指令碼
- [Oracle] rman備份指令碼(2)Oracle指令碼
- oracle rman備份指令碼收集Oracle指令碼
- oracle 10g rman 指令碼Oracle 10g指令碼
- 如何呼叫python中的shell指令碼?Python指令碼
- ORACLE DBA常用SQL指令碼工具->管理篇(zt)OracleSQL指令碼
- 將表資料生成SQL指令碼的儲存過程和工具SQL指令碼儲存過程
- 主題 2 Shell工具和指令碼指令碼
- ORACLE常用SQL指令碼2OracleSQL指令碼
- crontab呼叫oracle的shell指令碼注意事項Oracle指令碼
- 在Watir中呼叫JavaScript指令碼JavaScript指令碼
- oracle rman 定時備份指令碼Oracle指令碼
- 使用rman備份的指令碼指令碼
- Rman備份的shell指令碼指令碼
- RAC模式下的rman指令碼模式指令碼
- Rman的映象拷貝指令碼指令碼
- RMAN的基本知識和指令
- ORACLE DBA常用語句和指令碼Oracle指令碼