分享一下我老師大神的人工智能教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實作我們中華民族偉大複興!
Linux/Unix shell腳本中調用或執行SQL,RMAN 等為自動化作業以及多次反複執行提供了極大的便利,是以通過Linux/Unix shell來完成Oracle
的相關工作,也是DBA必不可少的技能之一。本文針對Linux/Unix shell腳本調用sql, rman 腳本給出了相關示例。
一、由shell腳本調用sql,rman腳本
、shell腳本調用sql腳本#首先編輯sql檔案[email protected]:~> more dept.sqlconnect scott/tigerspool /tmp/dept.lstset linesize pagesize select * from dept;spool off;exit;#編輯shell腳本檔案,在shell腳本内調用sql腳本[email protected]:~> more get_dept.sh#!/bin/bash# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBOsqlplus -S /nolog @/users/oracle/dept.sql #注意此處執行sql腳本的方法 -S 表示以靜默方式執行exit#授予腳本執行權限[email protected]:~> chmod get_dept.sh-->執行shell腳本[email protected]:~> ./get_dept.sh DEPTNO DNAME LOC---------- -------------- ------------- ACCOUNTING NEW YORK RESEARCH DALLAS SALES CHICAGO OPERATIONS BOSTON、shell腳本調用rman腳本#首先編輯RMAN腳本[email protected]:~> more rman.rcvRUN {CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 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=G;ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=G;SET LIMIT CHANNEL CH1 READRATE=;SET LIMIT CHANNEL CH1 KBYTES=;SET LIMIT CHANNEL CH2 READRATE=;SET LIMIT CHANNEL CH2 KBYTES=;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腳本[email protected]:~> more rman_bak.sh#!/bin/bash# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBO$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.logexit#授予腳本執行權限[email protected]:~> chmod rman_bak.sh#執行shell腳本[email protected]:~> ./rman_bak.sh
二、嵌入sql語句及rman到shell腳本
、直接将sql語句嵌入到shell腳本[email protected]:~> more get_dept_2.sh#!/bin/bash# Author : Robinson Cheng # Blog : http://blog.csdn.net/robinson_0612# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBOsqlplus -S /nolog <<EOF #EOF在此表示當輸入過程中碰到EOF後,整個sql腳本輸入完畢connect scott/tigerspool /tmp/dept.lstset linesize pagesize select * from dept;spool off;exit; #退出sqlplus 環境EOFexit #推出shell腳本 #授予腳本執行權限[email protected]:~> chmod u+x get_dept_2.sh#執行shell腳本[email protected]:~> ./get_dept_2.sh DEPTNO DNAME LOC---------- -------------- ------------- ACCOUNTING NEW YORK RESEARCH DALLAS SALES CHICAGO OPERATIONS BOSTON、直接将sql語句嵌入到shell腳本(方式二,使用管道符号>代替spool來輸出日志)[email protected]:~> more get_dept_3.sh#!/bin/bash# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBOsqlplus -S /nolog >/users/oracle/dept.log >& <<EOFconnect scott/tigerset linesize pagesize select * from dept;exit;EOFcat /users/oracle/dept.logexit#另一種實作方式,将所有的sql語句輸出來生成sql腳本後再調用[email protected]:~> more get_dept_4.sh#!/bin/bash# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBOecho "conn scott/tiger select * from dept;exit;" >/users/oracle/get_dept.sqlsqlplus -silent /nolog @get_dept.sql >/users/oracle/get_dept.log >&cat get_dept.logexit、将rman腳本嵌入到shell腳本[email protected]:~> more rman_bak_2.sh#!/bin/bash# set environment variableif [ -f ~/.bashrc ]; then . ~/.bashrcfiexport ORACLE_SID=CNMMBO$ORACLE_HOME/bin/rman log=/users/oracle/bak/rman.log <<EOFconnect target /RUN {CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 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=G;ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=G;SET LIMIT CHANNEL CH1 READRATE=;SET LIMIT CHANNEL CH1 KBYTES=;SET LIMIT CHANNEL CH2 READRATE=;SET LIMIT CHANNEL CH2 KBYTES=;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;EOFexit #授予腳本執行權限[email protected]:~> chmod u+x rman_bak_2.sh #執行shell腳本 [email protected]:~> ./rman_bak_2.shRMAN> RMAN> > > > > > > > > > > > > > > > > > > > > RMAN> [email protected]:~>
三、更多參考
有關基于使用者管理的備份和備份恢複的概念請參考
Oracle 冷備份
Oracle 熱備份
Oracle 備份恢複概念
Oracle 執行個體恢複
Oracle 基于使用者管理恢複的處理(較長的描述了媒體恢複及其處理)
SYSTEM 表空間管理及備份恢複
SYSAUX表空間管理及恢複
Oracle 基于備份控制檔案的恢複(unsing backup controlfile)
有關RMAN的備份恢複與管理請參考
RMAN 概述及其體系結構
RMAN 配置、監控與管理
RMAN 備份詳解
RMAN 還原與恢複
RMAN catalog 的建立和使用
基于catalog 建立RMAN存儲腳本
基于catalog 的RMAN 備份與恢複
RMAN 備份路徑困惑(使用plus archivelog時)
有關ORACLE體系結構請參考
Oracle 表空間與資料檔案
Oracle 密碼檔案
Oracle 參數檔案
Oracle 聯機重做日志檔案(ONLINE LOG FILE)
Oracle 控制檔案(CONTROLFILE)
Oracle 歸檔日志
Oracle 復原(ROLLBACK)和撤銷(UNDO)
Oracle 資料庫執行個體啟動關閉過程
Oracle 10g SGA 的自動化管理
Oracle 執行個體和Oracle資料庫(Oracle體系結構)
給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow
