日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle批处理脚本学习总结

發布時間:2025/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle批处理脚本学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle自動備份腳本



廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:


#!/bin/sh
#******************************************************************
# File: oraclebak.sh
# Creation Date: 2014/1/22 17:57:32
# Last Modified: 2014/1/22 17:57:34
# 腳本功能:oracle備份腳本
# 執行方法:1、第一次執行需要root用戶執行,腳本會以詢問的方式創建備份目錄和相關參數
# 2、腳本會自動寫入crontab調度里面定時執行,crontab設置是在第一次執行的時候自動添加的
#******************************************************************
echo $USER
if [ $USER != root ]
then
echo "檢測到安裝用戶不是root用戶,請用root用戶登錄再執行安裝文件"
exit 1
fi
echo "開始安裝oracle數據庫備份工具.........................."
echo "請輸入備份程序的安裝目錄:"
read installdir
mkdir -p $installdir
result=$?
while [ $result -ne 0 ]
do
echo "無法創建目錄,請重新輸入或退出安裝。輸入y重新輸入,輸入n退出安裝。"
read redo
if [ $redo != y ]
then
echo "用戶退出安裝。"
exit 0
fi
echo "請輸入備份程序的安裝目錄:"
read installdir
mkdir $installdir
result=$?
done
echo "安裝目錄創建完成。"
echo "請輸入執行備份用戶(一般為oracle用戶):"
read execuser
id $execuser
result=$?
while [ $result -ne 0 ]
do
echo "不存在該用戶,是否更換其它用戶或者退出安裝新建用戶,輸入y更換用戶,輸入n退出安裝"
read redo
if [ $redo != y ]
then
echo "用戶退出安裝"
exit 0
fi
echo "請輸入執行備份的用戶(一般為tnmsdb2用戶)"
read execuser
id $execuser
result=$?
done
echo "你希望建立備份的數據庫數量(一般為1)"
read backnum
if [ $backnum -eq 0 ]
then
echo "無備份數據庫,退出安裝"
exit 0
fi
scount=0
while [ $scount -lt $backnum ]
do
echo "請輸入第"$(($scount+1))"個備份登錄登錄oracle數據庫的用戶名和密碼,以及本地服務名"
echo "用戶名"
read username[$scount]
echo "密碼"
read password[$scount]
echo "服務名"
read sname[$scount]
su -l -c"sqlplus /nolog" $execuser<<insert
whenever sqlerror exit sql.sqlcode;
connect ${username[$scount]}/${password[$scount]}@${sname[$scount]}
exit
insert
result=$?
if [ $result -ne 0 ]
then
echo "輸入數據庫信息無法被連接,是否重新輸入?輸入y重新輸入,輸入n退出安裝。"
read redo
if [ $redo != y ]
then
echo "用戶退出安裝"
exit 0
fi
else
scount=$(($scount+1))
fi
done
echo "輸入值守時間,值守時間的格式為 mm hh dd MM E 。"
echo "m代表分鐘,h代表小時,d代表日期,M代表月份,E代表星期"
echo "不輸入則為任意時間"
scount=0
iscontinue=y
while [ $iscontinue == y ]
do
echo "輸入第$(($scount+1))個值守時間"
echo "分鐘"
read min
echo "小時"
read hour
echo "日期"
read day
if [ ! $day ]
then
day="*"
fi
echo "月份"
read mouth
if [ ! $mouth ]
then
mouth="*"
fi
week="*"
backtime[$scount]="$min $hour $day $mouth $week"
echo -e "${backtime[$scount]}"
echo "是否輸入更多值守時間?輸入y繼續,輸入n進入下一步。"
read iscontinue
scount=$(($scount+1))
done
echo "是否要進行遠程備份?輸入y為進行遠程備份,輸入n進入下一步"
scount=0
read iscontinue
while [ $iscontinue == y ]
do
echo "請選擇遠程備份類型,輸入s為sftp備份類型,否則為ftp備份類型"
read iss
if [ $iss == s ]
then
rtype[$scount]="sftp"
else
rtype[$scount]="ftp"
fi
echo "請輸入遠程備份地址,可以為域名,計算機名或者ip地址"
read rurl[$scount]
echo "請輸入遠程備份登錄名"
read rname[$scount]
echo "請輸入遠程備份登錄密碼"
read rpass[$scount]
echo "是否輸入更多遠程備份地址?輸入y重新輸入,n進入下一步"
read iscontinue
scount=$(($scount+1))
done
# installdir
# execuser
# username password sname
# backtime
# rtype rurl rname rpass
echo "您所作的備份配置如下:"
sresult=$(echo -n "$installdir" | grep '^/')
if [ ! $sresult ]
then
installdir="$PWD/$installdir"
else
installdir=$installdir
fi
echo "本地備份目錄為$installdir"
echo "執行備份系統用戶為$execuser"
echo "系統備份數據庫:"
allcount=${#username[@]}
scount=0
while [ $scount -lt $allcount ]
do
echo "${username[$scount]}/${password[$scount]}@${sname[$scount]}"
scount=$(($scount+1))
done
echo "執行備份的值守時間表,*代表任意"
scount=0
backnum=${#backtime[@]}
while [ $scount -lt $backnum ]
do
echo "${backtime[$scount]}"
scount=$(($scount+1))
done
rnum=${#rtype[@]}
if [ $rnum -ne 0 ]
then
echo "遠程備份的服務地址為:"
scount=0
while [ $scount -lt $rnum ]
do
echo "連接方式:${rtype[$scount]},連接地址:${rurl[$scount]},用戶名:${rname[$scount]},密碼:${rpass[$scount]}"
scount=$(($scount+1))
done
fi
echo "是否確認安裝?輸入y繼續,輸入n退出安裝"
read isgoon
if [ $isgoon != y ]
then
exit 0;
fi
echo "正在生產目錄結構................................";
mkdir -p $installdir/logs
mkdir -p $installdir/temp
mkdir -p $installdir/zip
chown -Rvf $execuser $installdir
echo "目錄結構生成完成................................"
echo "生成備份執行文件................................"
echo "#!/bin/bash">$installdir/runback.sh
echo "source ~/.bash_profile">>$installdir/runback.sh
echo "nowdate=\$(date +%Y-%m-%d_%k.%M.%S)">>$installdir/runback.sh
echo "nowmouth=\$(date +%Y-%m)">>$installdir/runback.sh
echo "echo \"\$nowdate開始備份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
scount=0
snum=${#username[@]}
while [ $scount -lt $snum ]
do
echo "exp ${username[$scount]}/${password[$scount]}@${sname[$scount]} file=$installdir/temp/${username[$scount]}_${sname[$scount]}\$nowdate.dmp compress=N>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
scount=$(($scount+1))
done
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)完成備份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)開始打包.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
echo "gzip $installdir/zip/\$nowdate.zip $installdir/temp/>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
echo "rm -Rvf $installdir/temp/*>>$installdir/logs/\$nowmouth.log 2>&1">>$installdir/runback.sh
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)打包完成.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
scount=0
if [ ${#rtype[@]} -ne 0 ]
then
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)進行遠程備份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
snum=${#rtype[@]}
while [ $scount -lt $snum ]
do
echo "lftp -u ${rname[$scount]},${rpass[$scount]} ${rtype[$scount]}://${rurl[$scount]}<<remote">>$installdir/runback.sh
echo "mkdir remotedbback">>$installdir/runback.sh
echo "cd remotedbback">>$installdir/runback.sh
echo "mput $installdir/zip/\$nowdate.zip">>$installdir/runback.sh
echo "exit">>$installdir/runback.sh
echo "remote">>$installdir/runback.sh
scount=$(($scount+1))
done
echo "echo \"\$(date +%Y-%m-%d_%k.%M.%S)完成遠程備份.......................................\">>$installdir/logs/\$nowmouth.log">>$installdir/runback.sh
fi
echo "exit 0">>$installdir/runback.sh
chmod 775 $installdir/runback.sh
chown $execuser $installdir/runback.sh
echo "生成備份執行文件完成............................"
echo "開始定制值守時間................................"
scount=0
snum=${#backtime[@]}
while [ $scount -lt $snum ]
do
echo "${backtime[$scount]} $installdir/runback.sh">>$installdir/planlist
scount=$(($scount+1))
done
su -l -c"crontab $installdir/planlist" oracle
echo "完成值守時間定制................................"
exit 0


接下來給大家介紹linux oracle自動備份腳本


1、備份腳本:


#!/bin/sh?
export ORACLE_BASE=/home/oracle?
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1?
export ORACLE_SID=orcl?
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin?
export DATA_DIR=/home/bakup/data?
export LOGS_DIR=/home/bakup/logs?
export DELTIME=`date -d "7 days ago" +%Y%m%d`?
export BAKUPTIME=`date +%Y%m%d%H%M%S`?
mkdir -p $DATA_DIR?
mkdir -p $LOGS_DIR?
echo "Starting bakup..."?
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp"?
exp shop/lyisABC0987@orcl file=$DATA_DIR/$BAKUPTIME.dmp log=$LOGS_DIR/$BAKUPTIME.log?
echo "Delete the file bakup before 7 days..."?
rm -rf $DATA_DIR/$DELTIME*.dmp?
rm -rf $LOGS_DIR/$DELTIME*.log?
echo "Delete the file bakup successfully. "?
echo "Bakup completed."?


2、添加到任務調度


crontab -u oracle -e
?* 3 * * * /home/bakup/bakup.sh
即每天凌晨3點進行備份
?如需每天備份多次,可設置不同時間段備份:
?例如:* 3,13,18 * * * /home/bakup/bakup.sh,即每天3點、13點、18點進行備份。
?說明:文件備份目錄,用戶oracle必須有更改權限,否則無法備份。
========

Oracle自動備份及自動備份步驟



數據是應用的核心部分,程序壞了換臺機器重新發布就可以,但數據一旦丟失,造成的損失將不可挽回,程序發布到生產后,數據的備份便顯得尤為重要,由于不一定所有的服務均有資金完成高級的備份如RAC和DG,在我們只有一臺數據庫服務器的,暫時采取最簡單的備份策略,export出dmp進行保存。


一、備份腳本


1、初始化變量,記錄開始日志


#變量
sysname=填寫自己的系統名稱
syspath=/home/oracle/databak/$sysname
v_date=$(date '+%Y%m%d%H%M%S')
#日志目錄
logfile=${syspath}/backup.${v_date}.log
#打印開始時間
echo backup_time>>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile}
echo "backup jcd">>${logfile}
echo "start_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S' >> ${logfile}


2、進入oracle目錄,設置oracle的參數


#進入oracle目錄,設置oracle變量
cd /home/11g/app/oracle/product/11.2.0
export ORACLE_HOME=/home/11g/app/oracle/product/11.2.0/db_1
export PATH=$PATH:/home/11g/app/oracle/product/11.2.0/db_1/bin
export ORACLE_SID=SID名稱?


3、導出數據


echo $syspath
v_date=$(date '+%Y%m%d%H%M%S')
filename=$syspath/jcd${v_date}.dmp
#導出命令
exp username/password file=${filename} compress=n >> ${logfile}
echo "end_time">>${logfile}
date '+%Y-%m-%d %H:%M:%S'>>${logfile}?


4、壓縮dump包


gzip ${filename}?


5、使用scp,將壓縮后的包傳遞到備份服務器,注意備份服務器上目錄需要預先創建


scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/備份目錄?


二、設定腳本執行時間


我們設定規則為每天凌晨2點執行一次,采用crontab來進行處理


執行crontab -e,設定如下規則


0 2 * * * sh /home/oracle/db.sh


三、關于scp命令密碼處理


執行scp命令時候,會提示輸入遠程主機的密碼
scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/備份目錄?
?此時有兩種處理辦法進行解決:


1、使用加密文件進行認證


1)進入本地主機的~/.ssh目錄下


2)運行ssh-keygen -t [rsa|dsa],將會生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,此處我們使用rsa方式進行


3)將生成的id_rsa和id_rsa.pub權限修改為700


4)將.pub文件復制到遠程主機的~/.ssh目錄,執行cat id_rsa.pub >> ~/.ssh/authorized_keys,將內容拷入authorized_keys文件


5)修改authorized權限為700


  完成以上修改之后,從本地主機scp到遠程主機便無須密碼,簡單理解應該是通訊時候,本地主機發送scp指令時,采用本地私鑰進行簽名,遠程主機使用公鑰驗簽后,判斷問主機可以信賴,開放通訊服務。


2、使用expect命令完成密碼交互


  expect命令主要用于腳本中出現必須人工干預的情況下,預先輸入指令,模擬的場景為使用expect命令捕捉到提示輸入指令的文字,一旦文字出現,自動使用send命令輸入需要交互的命令。




  此處使用為:




  expect "*password:"#此處填寫系統提示文字
?  send "your password\r"#此處填寫我們輸入的交互命令
?  expect eof


下面給大家介紹Oracle 自動備份詳細步驟


背景:Oracle 10g 服務器,Oracle 10g 客戶端,windowsXP 操作平臺
?要求:Oracle 數據庫服務器對數據庫 ytcn 每天自動備份一次。
?解決方案:利用任務計劃、批處理文件和 Oracle 的 exp 導出功能,根據日期自動生成 Oracle 備份文件。詳細步驟:




1 創建批處理文件 ytcn.bat


ytcn.bat中詳細內容如下:


@echo off
?echo 正在備份銀通網 Oracle 數據庫,請稍等......
exp userid='ytcn/ytcn@ytcn as sysdba' file=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.log full=y


echo 任務完成!
?其中紅色部分是根據需要進行變動的地方,例如作者的項目名“銀通網”,數據庫 ytcn 用戶名 ytcn,密碼 ytcn,要在目錄 "e:/bak/ytcn/oracle/ytcn" 下生成形如 "ytcn20090711.dmp" 和 "ytcn20090711.log" 的備份和日志文件,全表導出。
?另外:%date%的值在不同的系統、語言版本下可能是不一樣的,控制面板里面區域選項的設定也會改變%date%的值。請先在命令行中測試 echo %date% 的返回值。%date:~4,10% 是返回日期函數,~后的第一個參數是要截取的起始位置(從0開始),第二個參數是要截取的長度,如沒有則是截取到最后,參數可酌情修改。 如需要準確的時間做為文件名,請用%time%函數,參數同上。


2 添加一個任務計劃 ytcn


開始 > 所有程序 > 附件 > 系統工具 > 任務計劃 > 添加任務計劃 > 下一步 > 在 瀏覽 中查找剛剛寫好的 ytcn.bat 文件 > 任務名輸入ytcn,執行這個任務選擇每天,下一步 > 起始時間下午12:00,起始日期2009-7-11,下一步 > 輸入用戶名及密碼,用戶名要求是管理員權限用戶名,下一步 > 完成
?點擊"完成"之后,會在任務計劃欄目下新增一個名為"ytcn"的任務計劃,表明已經配置完畢。


備注:有時點擊"完成" 之后,系統警告


"已創建新任務,但可能不能運行,因為無法設置賬戶信息。


指定的錯誤是:


Ox80041315:任務計劃程序服務沒有運行"


這是因為電腦的任務計劃程序服務沒有啟動起來。開始 > 所有程序 > 管理工具 > 服務,找到"Task Scheduler"服務,發現啟動類型為"已禁用",右鍵單擊更改為"自動",并把它啟動起來,然后重新添加一次任務計劃 ytcn 就可以了。
========

windows下oracle每天定時備份



最近一個同事修改 表結構的時候不小心刪了幾張表,雖然恢復部分數據,但是有個表的數據已經找不回了,


因為之前數據庫沒有做備份,所以今天花了半天時間做了個邏輯備份,整體的思路如下:首先寫好exp語句做成bat文件,然后用windows計劃任務去執行


第一步:建立備份腳本oraclebackup.bat




首先建立一個備份bat文件,在D盤下新建備份目錄oraclebackup,將Oracle安裝目錄下的EXP.EXE復制到此目錄下,再新建一個文本文件oraclebackup.txt,內容如下:


@echo off?
echo 刪除10天前的備分文件和日志


forfiles /p "D:\oraclebackup" /m *.dmp /d -10 /c "cmd /c del @path"?
forfiles /p "D:\oraclebackup" /m *.log /d -10 /c "cmd /c del @path"


echo 正在備份 Oracle 數據庫,請稍等……?
expsystem/oracle@orclfile=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.log full=y buffer=65535?
echo 任務完成!


完成后,將該記事本的后綴txt改成bat即可。


雙擊oraclebackup.bat可以測試是否可以正常備份。


第二步:新建windows計劃任務
進入windows的控制面板,打開計劃與任務,新建任務,點擊瀏覽,選擇剛才新建的d盤oraclebackup目錄下的oraclebackup.bat文件。接著選擇每天晚上22:00點執行,再輸入本機的administrator密碼即可。


備注:這里我記錄下,我遇到的問題,主要是因為我一個用戶里面有很多表,但是現在我不需要全部備份,只需要備份XXX打頭的表,
OK,修改exp語句exp system/oracle@orcl tables=(system.XXX%%)file=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/mdb%date:~0,4%%date:~5,2%%date:~8,2%.log full=y buffer=65535 ,


注意,當時 我是這樣加的tables=(system.XXX%),結果bat文件不能執行,原來bat'文件里面的%必須要是%%,這個問題我搞了很久才搞清楚~~~~~
http://blog.csdn.net/jimmy609/article/details/40624141
========

Windows環境下Oracle數據庫的自動備份腳本



@echo off
echo ================================================?
echo ?Windows環境下Oracle數據庫的自動備份腳本
echo ?1. 使用當前日期命名備份文件。
echo ?2. 自動刪除30天前的備份。
echo ================================================
::以“YYYYMMDD”格式取出當前時間。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURTIME=%time:~0,2%
REM 小時數如果小于10,則在前面補0
if "%CURTIME%"==" 0" set CURTIME=00
if "%CURTIME%"==" 1" set CURTIME=01
if "%CURTIME%"==" 2" set CURTIME=02
if "%CURTIME%"==" 3" set CURTIME=03
if "%CURTIME%"==" 4" set CURTIME=04
if "%CURTIME%"==" 5" set CURTIME=05
if "%CURTIME%"==" 6" set CURTIME=06
if "%CURTIME%"==" 7" set CURTIME=07
if "%CURTIME%"==" 8" set CURTIME=08
if "%CURTIME%"==" 9" set CURTIME=09
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
?
::設置用戶名、密碼和要備份的數據庫。
set USER=carbon_zhenjiang_bak
set PASSWORD=carbon_zhenjiang_bak
set DATABASE=orcl
::創建備份目錄。
if not exist "D:\backup\data\%BACKUPDATE% " ? ? mkdir D:\backup\data\%BACKUPDATE%
if not exist "D:\backup\log\%BACKUPDATE% " ? ? ?mkdir D:\backup\log\%BACKUPDATE%
set DATADIR=D:\backup\data\%BACKUPDATE%
set LOGDIR=D:\backup\log\%BACKUPDATE%
exp %USER%/%PASSWORD%@%DATABASE% ?file=%DATADIR%\%USER%_%BACKUPDATE%%CURTIME%.dmp log=%LOGDIR%\log_%BACKUPDATE%%CURTIME%.log
::刪除30天前的備份。
forfiles /p "%DATADIR%" /s /m *.* /d -30 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -30 /c "cmd /c del @path"
exit
========

oracle操作的批處理腳本



1、create_user.bat(創建用戶并賦權限)


@echo off
echo ######################################
echo本腳本用于臨時創建一個用戶,賦予只讀yc表的權限
echo ######################################
echo on
echo 創建用戶datacenter
? sqlplus ?ecs_sx/pwecs@ecs @user1.sql
echo 工作完畢,謝謝。
? pause


----------------------------------------------------------------------------------
user1.sql


? revoke select on ecs_zdh_test.yc from datacenter;
? grant select on ecs_zdh_sx.yc to datacenter;
commit;
pause




2、收集db信息
db_sx.bat


@echo off
echo #################################
echo本腳本用于收集XX數據庫健康情況
echo #################################
echo on
echo 開始信息收集。
? sqlplus ?ecs_sx/pwecs@ecs @db_sx1.sql
echo 工作完畢,謝謝,請敲入ENTER鍵。


? pause


---------------------------------------------------------
db_sx1.sql


spool c:\brein_database.txt
set lines 2000
set pages 100
show parameter pool?
show parameter open_cursor
SELECT * FROM v$sysstat WHERE name LIKE 'opened cursors current';
SELECT COUNT(*) ,sid FROM v$open_cursor
GROUP BY rollup(sid)
ORDER BY 1 DESC;
select sql_text from v$sqlarea a where a.HASH_VALUE in (select ? b.prev_hash_value from v$session b where b. MACHINE ='rx2600');
spool off
commit;
pause


http://blog.sina.com.cn/s/blog_61c006ea0100oqg8.html
========

Oracle bat批處理文件執行SQL文件

現實的項目中經常可能會出現需要用批處理文件來執行sql文件。下面就介紹下用bat批處理文件調用獨立的sql文件和數據庫中的存儲過程。


一、bat文件調用sql文件


? ? ?首先,做一個簡單的sql文件(log.sql)。


create table log?
(?
? PROBLEMID ? ?VARCHAR2(40),?
? PROBLEMNAME ?VARCHAR2(260),?
? PROBLEMLEVEL VARCHAR2(40),?
? PROBLEMORDER VARCHAR2(260),?
? PARENTID ? ? VARCHAR2(40),?
? ROOTTYPEDESC VARCHAR2(260),?
? IFLEAF ? ? ? VARCHAR2(40),?
? MEMO ? ? ? ? VARCHAR2(1000),?
? IFVALID ? ? ?VARCHAR2(40),?
? ROOTTYPE ? ? VARCHAR2(20)?
);?
exit;
在這個SQL文件中我們創建了一個表。


接下來,我們來建一個bat批處理文件(log.bat)。


@echo off ?
sqlplus cssp/cssp@gxcssp @H:\bat_sql\log.sql > log.txt?
exit
?在這個bat文件里面我們調用絕對路徑的sql文件,并將執行過程及結果輸出到log.txt文件中。


?最后,我們運行bat文件,來看下一log.txt文件記錄內容。


SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 4月 7 18:26:03 2011?
??
Copyright (c) 1982, 2004, Oracle. ?All rights reserved.?
??
??
連接到: ?
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production?
With the Partitioning, OLAP and Data Mining options?
??
??
表已創建。?
??
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production?
With the Partitioning, OLAP and Data Mining options 斷開
?
? ? 通過這個日志我們可以看到,創建log表是成功的了。再去數據庫中確認,也可以看到log表確實是建立起來了。


二、bat文件調用數據庫中的存儲過程


? ? ? ? 這個調用過程和上面的調用過程原理是一樣的,在此就做個簡單的說明。


? ? ? ? 假設數據庫中一個存儲過程,名稱為Produce_log


? ? ? ? 我們只需要修改獨立的sql文件如下即可:


? ? ? ?execute Produce_log;
? ? ? ?exit;


? ? 具體的執行結果請朋友們自己嘗試。


http://www.cnblogs.com/Clivia/archive/2011/04/07/Oracle05.html
========

oracle 批處理腳本



1. 批量建表


declare ??
tablecount number; ?
??
begin ?
tablecount:=3000; ?
??
while tablecount>0 loop ?
execute immediate 'create table table_'||tablecount||' (ID NUMBER(10), NAME VARCHAR(20))'; ?
tablecount:=tablecount-1; ??
end loop; ?
??
end; ?


http://blog.csdn.net/duanbeibei/article/details/43950797
========

批處理 啟動和關閉 Oracle 11g 服務



自己寫兩個批處理文件來手動啟動和停止Oracle服務一直開著服務會比較耗損系統資源影響系統運行速度


全文轉自:http://hi.baidu.com/magicalboy/blog/item/d40a93ef9df1d3e7ce1b3e3f.html


以下批處理文件內容根據自己的SID,Oracle_home不同做相應修改即可。


自己寫兩個批處理文件來手動啟動和停止Oracle服務(一直開著服務會比較耗損系統資源,影響系統運行速度)
啟動和關閉數據庫所使用的服務器名稱和說明:




服務名稱 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明
OracleOracle_homeTNSListener ? ? ? ? ? 對應于數據庫的監聽程序
OracleServiceSID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對應于數據庫的例程
OracleDBConsoleSID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對應于Oracle Enterprise Manager(OEM)


其中,Oracle_home表示Oracle主目錄,如Oracle11g_home1;SID表示Oracle系統標識符,如OracleServiceMAG01的MAG01。


注意:盡管這3個服務都是可以單獨地啟動和關閉的,但它們之間不像Oracle 10g 中那樣沒有依存關系。比較好的啟動順序是:OracleOracle_homeTNSListener,OracleServiceSID,OracleDBConsoleSID。關閉時次序相反。


下面給出了自己寫的已經排好順序的啟動和停止服務的兩個批處理文件:


Start Oracle 11g Service.bat


@echo off


echo 確定要啟動Oracle 11g服務嗎?


pause


net start OracleOraDb11g_home1TNSListener


net start OracleServiceMAG01


net start OracleDBConsolemag01


echo 啟動Oracle 11g服務完成,請確認有沒有錯誤發生。


Pause




Stop Oracle 11g Service.bat


@echo off


echo 確定要停止Oracle 11g服務嗎?


pause


net stop OracleDBConsolemag01


net stop OracleServiceMAG01


net stop OracleOraDb11g_home1TNSListener


echo 停止Oracle 11g服務完成,請確認有沒有錯誤發生。


Pause
========

總結

以上是生活随笔為你收集整理的oracle批处理脚本学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。