Oracle 11g數(shù)據(jù)泵一鍵備份腳本,無(wú)需授權(quán)
[oracle@myoracle ~]$ ./oracle_expdp_bak.sh
[oracle@myoracle ~]$ cat oracle_expdp_bak.sh
腳本內(nèi)容:
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=orcl11g
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=.AL32UTF8
# 數(shù)據(jù)泵導(dǎo)出用戶
USERNAME=system
PASSWORD=password
# 制定導(dǎo)出目錄
DIRECTORY_PATH=/home/oracle/backup
if [ ! -d "$DIRECTORY_PATH" ]; then
mkdir -p "$DIRECTORY_PATH"
chown oracle:oinstall "$DIRECTORY_PATH"
chmod 755 "$DIRECTORY_PATH"
fi
# 確保目錄在數(shù)據(jù)庫(kù)中存在并授權(quán)
sqlplus -s /nolog <<EOF
connect $USERNAME/$PASSWORD;
begin
begin
execute immediate 'drop directory dpump_dir';
exception
when others then
if sqlcode!= -2228 then
raise;
end if;
end;
execute immediate 'create directory dpump_dir as ''$DIRECTORY_PATH''';
execute immediate 'grant read, write on directory dpump_dir to public';
end;
/
exit;
EOF
# 導(dǎo)出類型為 SCHEMA
EXP_TYPE=SCHEMA
# 需要導(dǎo)出的用戶
SCHEMAS=scott
# 導(dǎo)出日志文件
LOGFILE=`date '+%Y%m%d%H%M%S'`.log
# 導(dǎo)出 dump 文件
DUMPFILE=`date '+%Y%m%d%H%M%S'`.dmp
# 設(shè)置并行度并屏蔽統(tǒng)計(jì)信息
PARALLEL=4
STATISTICS=NONE
# 生成數(shù)據(jù)泵命令
EXPDP_COMMAND="expdp $USERNAME/$PASSWORD DIRECTORY=dpump_dir DUMPFILE=$DUMPFILE LOGFILE=$LOGFILE SCHEMAS=$SCHEMAS PARALLEL=$PARALLEL STATISTICS=$STATISTICS"
# 執(zhí)行數(shù)據(jù)泵命令,開(kāi)始導(dǎo)出
$EXPDP_COMMAND
tar -cvf "/home/oracle/backup/${DUMPFILE}.tar.gz" "/home/oracle/backup/${DUMPFILE}" "/home/oracle/backup/${LOGFILE}"
# 刪除 7 天前的備份文件
find "${DIRECTORY_PATH}" -type f -mtime +7 -name "*.dmp" -o -name "*.log" -exec rm -rf {} \;
浙公網(wǎng)安備 33010602011771號(hào)