Linux下Oracle expdp和rman备份脚本

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

Linux下Oracle expdp和rman备份脚本

1、Linux下脚本 :expdpe脚本:
vi expdp.sh   
PATH=$PATH:$HOME/bin

export PATH
export PS1='[\u@\h \w]$'
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=xxxuatdb1
export ORACLE_BASE=/oracle/app/db
export ORACLE_HOME=/oracle/app/product/12.1.0/db_1
export ORACLE_UNQNAME=xxxuatdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
echo "begin_dbaflag  `date +%Y-%m-%d`  `date +%H:%M:%S`"

cd /backup/expdp
Dat=`date +%Y%m%d`
dat=`date +%Y-%m-%d-%H-%M-%S`
day=`date +%w`

if [ -e $day ]
then   rm -rf $day
fi
mkdir $day;

sql (){
sql="select current_scn from v\$database;"
sqlplus /nolog <<EOF
conn / as sysdba;
$sql
EOF
}
cd /backup/expdp/$day
sql >sql.log 2>&1
scn=`cat sql.log |egrep -v "Version|Release|Copyright|SQL|Disconnected|OLAP|Application|CURRENT_SCN|-"|sed '/^$/d'|awk '{print $1}'`
echo ${scn}

expdp xxxx2/xxxx2 dumpfile=expdp:xxxx2-${Dat}.dmp flashback_scn=${scn} logfile=expdp:xxxx2-${Dat}.log cluster=n  exclude=table:\"like \'VT%\'\"
expdp xxxx3/xxxx3 dumpfile=expdp:xxxx3-${Dat}.dmp flashback_scn=${scn} logfile=expdp:xxxx3-${Dat}.log cluster=n  exclude=table:\"like \'VT%\'\"
expdp xxxx4/xxxx4 dumpfile=expdp:xxxx4-${Dat}.dmp flashback_scn=${scn} logfile=expdp:xxxx4-${Dat}.log cluster=n  exclude=table:\"like \'VT%\'\"

#cd /backup/expdp/
mv  xxxx*.dmp $day;
mv  xxxx*.log $day;

echo -e "\n end_dbaflag  `date +%Y-%m-%d`  `date +%H:%M:%S`"

1.1需要在实例下创建导入目录expdp
a.先在操作系统上创建备份的目录,并且需要有oracle:oinstall权限,这里以/backup/expdp目录为例:
mkdir  -p /backup/expdp;
chmod 775 /backup/expdp;
chown oracle:oinstall /backup/expdp
b.实例下创建expdp导出目录并给予导出权限

sqlplus / as sysdba

create  directory expdp as '/backup/expdp';

grant read,write on directory expdp to public;

grant imp_full_database to public;


2.linux下rman全备份脚本
vi rman.sh
PATH=$PATH:$HOME/bin

export PATH
export PS1='[\u@\h \w]$'
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=xxxuatdb1
export ORACLE_BASE=/oracle/app/db
export ORACLE_HOME=/oracle/app/product/12.1.0/db_1
export ORACLE_UNQNAME=xxxuatdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
echo "begin_dbaflag  `date +%Y-%m-%d`  `date +%H:%M:%S`"

cd /backup/rman_backup
Dat=`date +%Y%m%d`
dat=`date +%Y-%m-%d-%H-%M-%S`
day=`date +%w`

if [ -e $day ]
then   rm -rf $day
fi
mkdir $day;
cd $day
rman  target system/xxxuat123$ log="/backup/rman_backup/$day/rmanback$dat.log" <<EOF
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman_backup/$day/control%F';
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

sql 'alter system checkpoint';

crosscheck archivelog all;
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
delete expired archivelog all;
delete noprompt archivelog until time 'sysdate-7';

run {
allocate channel c1 type disk maxpiecesize 4096M rate 20M;
allocate channel c2 type disk maxpiecesize 4096M rate 20M;
backup as compressed backupset format '/backup/rman_backup/$day/%T_%d_%s_%p.dat' tag 'full_dat' database plus archivelog;
backup as compressed backupset format '/backup/rman_backup/$day/%T_%d_%s_%p.ora' tag 'full_ora' spfile;
backup as compressed backupset format '/backup/rman_backup/$day/%T_%d_%s_%p.ctl' tag 'full_ctl' current controlfile;
backup as compressed backupset format '/backup/rman_backup/$day/AL_%d_%T_S%s_P%p' tag 'all_arc' archivelog all delete input;
release channel c1;
release channel c2;
}
EOF

echo -e "\n end_dbaflag  `date +%Y-%m-%d`  `date +%H:%M:%S`"


以上环境变量改为自己Oracle系统用户下.bash_profile中内容,并修改备份导出的目录位置。

Linux下Oracle expdp和rman备份脚本

1、Linux下脚本 :expdpe脚本:vi expdp.sh PATH=$PATH:$HOME/binexport PATHexport PS1=&#39;[\u@\h \w]$&#39;export TMP=/tmpex...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息