视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Linux/Unixshell自动导入Oracle数据库
2020-11-09 10:53:39 责编:小采
文档


使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以

使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现自动导入Oracle数据库。

Linux Shell以及导入导出的相关参考:

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell sql 之间传递变量

Linux Unix shell 调用 PL/SQL

1、Linux/Unix shell 自动导入Oracle数据库脚本

# +------------------------------------------------+
# | Import database by schema |
# | file_name: impdp.sh |
# | Parameter: Oracle_SID |
# | Usage: |
# | ./impdb.sh ${ORACLE_SID} |
# | Author : Robinson |
# | Blog : |
# +------------------------------------------------+
#
#!/bin/bash
# --------------------
# Define variable
# --------------------

if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi

# --------------------------
# Check SID
# --------------------------
if [ -z "${1}" ];then
echo "Usage: "
echo " `basename $0` ORACLE_SID"
exit 1
fi

ORACLE_SID=$1; export ORACLE_SID
DT=`date +%Y%m%d`; export DT
SRC_ORA_SID=SY5221A export SRC_ORA_SID
TIMESTAMP=`date +%Y%m%d_%H%M`
LOG_DIR=/u02/database/${ORACLE_SID}/BNR/dump
LOG_FILE=$LOG_DIR/impdb_${ORACLE_SID}_${TIMESTAMP}.log
DUMP_DIR=/u02/database/${ORACLE_SID}/BNR/dump
TAR_FILE=EXP_${SRC_ORA_SID}_${DT}.tar.gz
DUMP_FILE=EXP_${SRC_ORA_SID}_${DT}.dmp
DUMP_LOG=IMP_${ORACLE_SID}_${DT}.log
LAST_EXP_DUMP_LOG=${DUMP_DIR}/EXP_${SRC_ORA_SID}_${DT}.log
RETENTION=1

# ------------------------------------------------------------------------
# Check the target database status, if not available send mail and exit
# ------------------------------------------------------------------------

db_stat=`ps -ef | grep pmon_$ORACLE_SID | grep -v grep| cut -f3 -d_`
if [ -z "${db_stat}" ]; then
MAIL_SUB=" $ORACLE_SID is not available on `hostname` before try to import data !!!"
# $MAIL_DIR/sendEmail -u $MAIL_SUB -f $MAIL_FM -t $MAIL_LIST -m $MAIL_SUB
echo ${MAIL_SUB} |mail -s " $ORACLE_SID is not available on `hostname` !!!" dba@trade.com
exit 1
fi

# ---------------------------------------------------
# Unzip the dump file
# ---------------------------------------------------

if [ -s "${DUMP_DIR}/$TAR_FILE" ] ; then
cd ${DUMP_DIR}
tar -xvf ${TAR_FILE}
else
MAIL_SUB="No dumpfile was found for ${ORACLE_SID} before import."
echo "No dumpfile was found for ${ORACLE_SID} before import."|mail -s $MAIL_SUB dba@trade.com
exit 1
fi

# -----------------------------------------------------------------------------
# Check dumpfile and export log file are correct, if no send mail and exit
# -----------------------------------------------------------------------------

date >${LOG_FILE}
echo "The hostname is :`hostname`">>$LOG_FILE
echo "The source database is :${SRC_ORA_SID}" >>${LOG_FILE}
echo "The target database is :${ORACLE_SID}">>$LOG_FILE
echo " " >>${LOG_FILE}

flag=`cat ${LAST_EXP_DUMP_LOG} | grep -i "successfully completed"`
if [ -n "${flag}" ] && [ -s "${DUMP_DIR}/${DUMP_FILE}" ] ; then
echo -e "The dumpfile exists and can be imported to ${ORACLE_SID} \n">>${LOG_FILE}
else
echo "The dumpfile does not exist or exist with errors on `hostname` before try to import data !!!" >>${LOG_FILE}
mail -s "The dumpfile does not exists or exist with errors for ${ORACLE_SID}" dba@trade.com <${LOG_FILE}
exit 1
fi

# ------------------------------------------------------------------------------------------
# Remove all objects for specific schema before import data, if error send mail and exit
# ------------------------------------------------------------------------------------------

echo -e "Prepare plsql script to remove all objects for specific schema....\n" >>$LOG_FILE

echo "
DECLARE
VERIFICATION VARCHAR2(200);

BEGIN
VERIFICATION := 'BO_ADMIN';

BO_ADMIN.GO_UTIL_DROP_SCHEMA_OBJECTS ( VERIFICATION );
COMMIT;
END;
/
exit ">/tmp/remove_obj.sql

下载本文
显示全文
专题