shell,ant指令碼實現自動資料泵(exp.expdp)匯出匯入資料
做這麼一些只為實現透過資料泵複製克隆另外一個相同資料庫例項
1:在A伺服器的oracle使用者建立crontab指令
00 2 * * * cd /home/oracle/autoexp;sh do_auto_exp.sh
A伺服器上do_auto_exp.sh檔案內容:
##################################################
cd
. ~/.profile
set -x
cd /home/oracle/autoexp
sh do_autoexp_oracle.sh|tee do_autoexp_oracle.log
##################################################
A伺服器上do_autoexp_oracle.sh檔案內容:
##################################################
#! /usr/bin/ksh
#=====================================#
# 環境變數設定 #
#=====================================#
#匯出匯入方式 y:exp n:expdp
export type_exp_imp=y
#檔案主目錄
export base_dir=/home/oracle/autoexp
#dmp檔案目錄
export dmpfile_dir=/home/oracle/autoexp/dmpfile
#設定NLS_LANG
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#設定是否自動匯出 y:是 n:否
export is_auto_exp=y
#設定是否自動匯入 y:是 n:否
export is_auto_imp=y
#設定是否自動傳遞包y:是 n:否
export is_auto_send=y
#設定時間格式
export DF=`date +%Y%m%d_%H%M`
#待匯入dmp的IP地址(用於FTP上傳)
export remote_server=10.132.66.241
#設定B伺服器ftp使用者名稱
export ftp_user=oracle
#設定B伺服器ftp密碼
export ftp_password=241orawsx
#遠端機器的命令提示符
export remote_prompt=">"
#B伺服器ftp訪問的目錄
export mydomain_dir=/home/oracle/autoimp
#備份shell指令碼
export backup_sh_name=do_backup.sh
#執行自動匯入指令碼
export imp_sh_name=do_imp.sh
#設定匯出資料庫例項名
export ORACLE_SID=devEp
#設定system密碼
export pwdsystem=system
#資料庫使用者schemas
export sch_user01=ccare
export sch_user02=isap
export sch_user03=crmpub
export sch_user04=inventory
#=====================================#
# 備份資料 #
#=====================================#
#備份dmp,log檔案
cd ${base_dir}/../
tar -zcvf backup.${DF}.tar.gz autoexp
if [ -d ${base_dir}/backup ]
then
mv *.tar.gz ${base_dir}/backup
else
mkdir -p ${base_dir}/backup
mv *.tar.gz ${base_dir}/backup
fi
cd ${dmpfile_dir}
rm -rf *.dml *.log
#=====================================#
# 匯出資料 #
#=====================================#
cd ${base_dir}
chmod -R 775 *.sh *.sql
if [ ${is_auto_exp} = 'y' ]
then
if [ -d ${dmpfile_dir} ]
then
echo "go on!!!"
else
mkdir -p ${dmpfile_dir}
fi
if [ ${type_exp_imp} = 'y' ]
then
exp } wner=${sch_user01} file=${dmpfile_dir}/${sch_user01}_exp.dmp log=${dmpfile_dir}/${sch_user01}_exp.log
exp } wner=${sch_user02} file=${dmpfile_dir}/${sch_user02}_exp.dmp log=${dmpfile_dir}/${sch_user02}_exp.log
exp } wner=${sch_user03} file=${dmpfile_dir}/${sch_user03}_exp.dmp log=${dmpfile_dir}/${sch_user03}_exp.log
exp } wner=${sch_user04} file=${dmpfile_dir}/${sch_user04}_exp.dmp log=${dmpfile_dir}/${sch_user04}_exp.log
else
sqlplus } @creatDIRECTORY.sql
expdp } DIRECTORY=dir_dp SCHEMAS=${sch_user01} DUMPFILE=${sch_user01}_expdp.dmp LOGFILE=${sch_user01}_expdp.log
expdp } DIRECTORY=dir_dp SCHEMAS=${sch_user02} DUMPFILE=${sch_user02}_expdp.dmp LOGFILE=${sch_user02}_expdp.log
expdp } DIRECTORY=dir_dp SCHEMAS=${sch_user03} DUMPFILE=${sch_user03}_expdp.dmp LOGFILE=${sch_user03}_expdp.log
expdp } DIRECTORY=dir_dp SCHEMAS=${sch_user04} DUMPFILE=${sch_user04}_expdp.dmp LOGFILE=${sch_user04}_expdp.log
fi
fi
if [ $? != 0 ]
then
echo "匯出dmp檔案失敗"
return 1
fi
tar -zcvf autoexp.${DF}.tar.gz dmpfile
if [ -d ${base_dir}/package ]
then
mv autoexp.${DF}.tar.gz ${base_dir}/package
else
mkdir -p ${base_dir}/package
mv autoexp.${DF}.tar.gz ${base_dir}/package
fi
#DMP檔案包名
export package_name=autoexp.${DF}.tar.gz
echo ${package_name}
#=====================================#
# 傳遞dmp檔案 #
#=====================================#
if [ ${is_auto_send} = 'y' ]
then
ant -f build_auto_exp.xml auto.exp.imp
if [ $? != 0 ]
then
echo "傳遞失敗"
return 1
fi
fi
##################################################
A伺服器上creatDIRECTORY.sql檔案內容:
##################################################
drop directory dir_dp;
create directory dir_dp as '/home/oracle/autoexp/dmpfile';
exit;
##################################################
A伺服器上build_auto_exp.xml 檔案內容:
##################################################
<?xml version="1.0" encoding="GBK"?>
<project name="ccbs deploy" default="all" basedir=".">
<property environment="env"/>
<property name="" value="${env.ftp_user}"/>
<property name="" value="${env.ftp_password}"/>
<property name="remote.server" value="${env.remote_server}"/>
<property name="remote.prompt" value="${env.remote_prompt}"/>
<property name="mydomain.dir" value="${env.mydomain_dir}"/>
<property name="package.dir" value="${env.base_dir}/package"/>
<property name="package.name" value="${env.package_name}"/>
<property name="backup.sh.name" value="${env.backup_sh_name}"/>
<property name="imp.sh.name" value="${env.imp_sh_name}"/>
<target name="auto.exp.imp" >
<antcall target="backup"/>
<antcall target="senddmp"/>
<antcall target="runimp"/>
</target>
<!--備份,刪除多餘檔案-->
<target name="backup">
<echo message="${remote.server}"/>
<telnet userid="${ftp.user}"
password="${ftp.password}"
server="${remote.server}"
initialCR="no">
<read string="${remote.prompt}"/>
<write string="cd ${mydomain.dir}"/>
<read string="${remote.prompt}"/>
<write string="./${backup.sh.name}"/>
<read string="${remote.prompt}"/>
</telnet>
</target>
<!--dmp檔案的傳遞-->
<target name="senddmp">
<echo message="${remote.server}"/>
<echo message="${ftp.user}"/>
<echo message="${ftp.password}"/>
<ftp server="${remote.server}"
userid="${ftp.user}"
password="${ftp.password}"
remotedir="${mydomain.dir}"
action="mkdir"/>
<ftp server="${remote.server}"
userid="${ftp.user}"
password="${ftp.password}"
remotedir="${mydomain.dir}"
depends="yes"
binary="yes">
<fileset dir="${package.dir}">
<include name="${package.name}"/>
</fileset>
</ftp>
</target>
<!--執行imp指令-->
<target name="runimp">
<telnet userid="${ftp.user}"
password="${ftp.password}"
server="${remote.server}">
<read string="${remote.prompt}"/>
<write string="cd ${mydomain.dir}"/>
<read string="${remote.prompt}"/>
<write string="./${imp.sh.name}"/>
<read string="${remote.prompt}"/>
</telnet>
</target>
</project>
##################################################
B伺服器上do_backup.sh檔案內容:
##################################################
export base_dir=/home/oracle/autoimp
if [ -d ${base_dir}/backup ]
then
rm -rf creatDIRECTORY.sql dmpfile do_autoexp_oracle.sh do_auto_exp.sh
mv *.tar.gz ${base_dir}/backup
else
mkdir -p ${base_dir}/backup
rm -rf creatDIRECTORY.sql dmpfile do_autoexp_oracle.sh do_auto_exp.sh
mv *.tar.gz ${base_dir}/backup
fi
##################################################
B伺服器上do_imp.sh檔案內容:
##################################################
export base_dir=/home/oracle/autoimp
#設定匯出資料庫例項名
export ORACLE_SID=devEp
#設定system密碼
export pwdsystem=system
#資料庫使用者匯出schemas
export exp_user01=ccare
export exp_user02=crmpub
export exp_user03=inventory
export exp_user04=isap
#資料庫使用者匯入schemas
export imp_user01=ccare
export imp_user02=crmpub
export imp_user03=inventory
export imp_user04=isap
cd ${base_dir}
tar -zxvf *.tar.gz
cd ${base_dir}/dmpfile
if [ -e *_exp.dmp ]
then
export type_exp_imp=y
else
export type_exp_imp=n
fi
if [ ${type_exp_imp} = 'y' ]
then
imp } fromuser=${exp_user04} touser=${imp_user04} file=${base_dir}/dmpfile/${exp_user04}_exp.dmp log=${base_dir}/dmpfile/${exp_user04}_exp.log ignore=y commit=y buffer=262142
imp } fromuser=${exp_user03} touser=${imp_user03} file=${base_dir}/dmpfile/${exp_user03}_exp.dmp log=${base_dir}/dmpfile/${exp_user03}_exp.log ignore=y commit=y buffer=262142
imp } fromuser=${exp_user02} touser=${imp_user02} file=${base_dir}/dmpfile/${exp_user02}_exp.dmp log=${base_dir}/dmpfile/${exp_user02}_exp.log ignore=y commit=y buffer=262142
imp } fromuser=${exp_user01} touser=${imp_user01} file=${base_dir}/dmpfile/${exp_user01}_exp.dmp log=${base_dir}/dmpfile/${exp_user01}_exp.log ignore=y commit=y buffer=262142
else
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus } @creatDIRECTORY.sql
impdp } DIRECTORY=dir_dp DUMPFILE=${exp_user04}_exp.dmp SCHEMAS=${exp_user04} LOGFILE=${exp_user04}_exp.log TABLE_EXISTS_ACTION=TRUNCATE
impdp } DIRECTORY=dir_dp DUMPFILE=${exp_user03}_exp.dmp SCHEMAS=${exp_user03} LOGFILE=${exp_user03}_exp.log TABLE_EXISTS_ACTION=TRUNCATE
impdp } DIRECTORY=dir_dp DUMPFILE=${exp_user02}_exp.dmp SCHEMAS=${exp_user02} LOGFILE=${exp_user02}_exp.log TABLE_EXISTS_ACTION=TRUNCATE
impdp } DIRECTORY=dir_dp DUMPFILE=${exp_user01}_exp.dmp SCHEMAS=${exp_user01} LOGFILE=${exp_user01}_exp.log TABLE_EXISTS_ACTION=TRUNCATE
fi
##################################################
B伺服器上creatDIRECTORY.sql檔案內容:
##################################################
drop directory dir_dp;
create directory dir_dp as '/home/oracle/autoimp/dmpfile';
exit;
##################################################
再次修改,把所以的內容都寫完了!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29618264/viewspace-2081349/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵匯出匯入
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle資料泵的匯入和匯出Oracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 資料泵匯出匯入物化檢視(ORA-39083)
- MySQL匯出資料庫指令碼MySql資料庫指令碼
- QZpython匯入匯出redis資料的實現deuPythonRedis
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- python 小指令碼 (實現 elasticsearch 匯出匯入)Python指令碼Elasticsearch
- sqoop資料匯入匯出OOP
- Oracle 資料匯入匯出Oracle
- Oracle資料匯入匯出Oracle
- phpMyAdmin匯入/匯出資料PHP
- Oracle expdp資料泵遠端匯出Oracle
- 【最佳實踐】MongoDB匯出匯入資料MongoDB
- Elasticsearch批量匯入資料指令碼(python)Elasticsearch指令碼Python
- [shell]shell指令碼實現每天自動抽取資料插入hive表指令碼Hive
- 【資料泵】EXPDP匯出表結構(真實案例)
- mongodb使用自帶命令工具匯出匯入資料MongoDB
- MySQL入門--匯出和匯入資料MySql
- Mongodb資料的匯出與匯入MongoDB
- oracle資料匯出匯入(exp/imp)Oracle
- 匯入和匯出AWR的資料
- EasyPoi, Excel資料的匯入匯出Excel
- Mysql 資料庫匯入與匯出MySql資料庫
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- Oracle用資料泵匯入資料包12899的錯誤碼解決方法Oracle
- MySQL Shell import_table資料匯入MySqlImport
- PHP大資料xlswriter匯入匯出(最優資料化)PHP大資料
- SQL資料庫的匯入和匯出SQL資料庫
- 複雜「場景」資料匯入匯出
- ClickHouse 資料表匯出和匯入(qbit)
- JS之實現Excel資料匯入JSExcel
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- java程式碼實現excel檔案資料匯入JavaExcel
- 細緻入微:如何使用資料泵匯出表的部分列資料
- phpExcel實現Excel資料的匯入匯出(全步驟詳細解析)PHPExcel
- Oracle資料庫——資料匯出時出現匯出成功終止, 但出現警告。Oracle資料庫
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼