利用bat批處理調用Exp、Imp自動實現Oracle數據庫用戶數據同步

公司需要做數據集中,某區需要建立一個完全與生產庫同步的庫,儘量需要減小對生產庫性能的影響,同步頻率爲每天一次.

生產庫環境:Linux下 64位的 Oracle 11G

目標庫環境:win 2003、Oracle 10G

查了下資料,Oracle有高級複製和Stream實現數據庫同步,但實現起來配置較複雜,而且數據庫需要歸檔模式,對性能有較大影響。決定還是用自帶的Exp、imp導出導入功能實現同步。在2003下用At命令建立一個每天晚上1點多執行Bat批處理的計劃任務:

at 01:01 /every:M,T,W,Th,F,S,SU E:\databak\SynchronizeData.bat

其中SynchronizeData.bat內容爲:

rem ==========================================================================================
rem     本批處理實現支持exp數據庫的Oracle數據庫版本的數據庫邏輯備份,流程爲:導出數據到
rem dump_bak 數據庫目錄下,然後把dmp文件以rar格式放入當天備份日期命名的目錄下,便於以後按
rem 照日期恢復。
rem
rem 需要配置的參數說明:
rem BAT_HOME:即本批處理所在的目錄;
rem BKDIR:是調用本批處理時傳進來的參數 dump_dir,即要備份到的數據文件目錄。
rem BKFILE:備份日期
rem HHMMSS:備份時間
rem FilePrefix:備份文件名的前綴
rem UserName:備份的用戶名
rem Password:備份的密碼
rem NetServer:連接數據庫的NET服務名
rem ==========================================================================================
rem
cd..
set dump_bak=e:\databak
set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%
set FilePrefix=ff
set UserName=user_from
set Password=user_frompassword
set NetServer=fromServer
cd %dump_bak%
start /b /wait exp %UserName%/%Password%@%NetServer% file=%dump_bak%\%FilePrefix%_%BKFILE%.dmp
rem  還原到目標庫
@echo off
start /b /wait sqlplus system/manager@work @DropAndCreateUser.sql
set UserName1=User_to
set Password1=User_toPassword
set NetServer=Work
imp %UserName1%/%Password1%@%NetServer% file=%dump_bak%\%FilePrefix%_%BKFILE%.dmp fromuser=%UserName% touser=%UserName1% log=%BKFILE%imp.log


說明:
start /b /wait sqlplus system/manager@work @DropAndCreateUser.sql爲執行建用戶腳本,此sql腳本的內容爲

conn system/manager@work as sysdba
--刪除用戶
DROP USER User_to CASCADE
/
create user User_to identified by User_toPassword    default tablespace estate  
temporary tablespace temp
/
grant connect,resource,dba to User_to
/
exit

上面批處理腳本和sql腳本必須放同一目錄下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章