`
our.ruby
  • 浏览: 15319 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

利用exp自动逻辑导出脚本

阅读更多
目的:实现自动针对指定的ORACLE模式用户,导出该模式下的所有表,每个表形成一个导出文件(.dmp)和对应的日志文件(.log)


脚本名:vmdbexportcron.ksh
说明:该脚本直接放入CRONTAB中,我们在工作中是将导出的备份存放在一个NFS目录中,所以在脚本开始部分有相关NFS目录是否正常的判断。

#! /bin/sh

NFS_MOUNTDIR='/home/vmdb'
/bin/logger "+++ VMDB DATABASE export and copy start."
# ++
nfscount=`mount | grep $NFS_MOUNTDIR | wc -l`
if (( nfscount == 0 ))
then
   /bin/logger "+++ $NFS_MOUNTDIR directory no mount !"
   /bin/logger "+++ remount $NFS_MOUNTDIR directory. "
   /etc/init.d/nfs start
fi
#+++++++++++++++++++++++++++++++++
#  /home/vmdb is NFS_MOUNTDIR !!
#  Be care !!!!
#+++++++++++++++++++++++++++++++++
/bin/logger "+++ delete direcotry $NFS_MOUNTDIR backuped files start."
/bin/rm -rf /home/vmdb/*
/bin/logger "+++ delete direcotry $NFS_MOUNTDIR backuped files end."
# ++

su - oracle -c "/backup/vmdb/db/vmdbexport.ksh <Oracle连接名> <用户名> <用户密码>"
/bin/logger "+++ VMDB DATABASE export and copy finished ."


脚本名:vmdbexport.ksh
说明:该脚本执行真正的导出动作,构造导出脚本,然后执行它。一些需要过滤的不必要表,可以添加到脚本的相应行。

#!/bin/ksh

# ++
if [ $# -ne 3 ]
then
   echo "+=========================================================================================="
   echo "| Usage: $0 ORACLE_NETSERVICENAME ORACLE_USERNAME ORACLE_PASSWORD   "
   echo "+=========================================================================================="
   exit 1
fi
# ++

THISDAY=$(date +%Y%m%d)
ORACLE_HOME='/oracle/product/9ir2'
ORACLE_NETSERVICENAME=$1
ORACLE_USERNAME=$2
ORACLE_PASSWORD=$3
BASEDIR="/backup/vmdb/db"
LOG_FILE=${BASEDIR}/vmdbdbexport.log
TEMPLATE_FILE=${BASEDIR}/template
NFS_MOUNTDIR="/home/vmdb"

THISDIR=${BASEDIR}/${ORACLE_NETSERVICENAME}.${ORACLE_USERNAME}.${THISDAY}
#  !! Require !!
THISDIR_RELATE=${ORACLE_NETSERVICENAME}.${ORACLE_USERNAME}.${THISDAY}
THISDAY_EXECUTER=${THISDIR}/export.$ORACLE_NETSERVICENAME.${ORACLE_USERNAME}.sh
THISDAY_TABLIST_FILE=${THISDIR}/tablist.$ORACLE_NETSERVICENAME.${ORACLE_USERNAME}

if [ ! -f "$LOG_FILE" ]
then
   touch $LOGFILE
fi
echo "++" >> ${LOG_FILE}
echo "info:" >> ${LOG_FILE}
echo "info:" >> ${LOG_FILE}
echo "info: start time = $(date +'%b %e %T') . " >> ${LOG_FILE}
echo "info: database $ORACLE_NETSERVICENAME ." >> ${LOG_FILE}
echo "info: username $ORACLE_USERNAME ." >> ${LOG_FILE}
echo "info: create directory  ${THISDIR} start"  >> ${LOG_FILE}
if [ -d "$THISDIR" ]
then
   echo "error: $THISDIR aleary exist." >> ${LOG_FILE}
   echo "error: $0 abort." >> ${LOG_FILE}
   exit 1
else
   mkdir $THISDIR
fi
echo "info: create directory ${THISDIR} end." >> ${LOG_FILE}

echo "info: create $THISDAY_TABLIST_FILE start." >> ${LOG_FILE}
$ORACLE_HOME/bin/sqlplus /nolog <<EOF
connect ${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_NETSERVICENAME};
set termout off;
spool $THISDAY_TABLIST_FILE
select '${ORACLE_USERNAME}.'||table_name from user_tables;
spool off;
exit
EOF

if [ $? -eq 0 ]
then
    echo "info: create $THISDAY_TABLIST_FILE  ok." >> ${LOG_FILE}
else
    echo "error: create  $THISDAY_TABLIST_FILE wrong, $0 is terminate ." >> ${LOG_FILE}
    exit 1
fi

count=0
echo "info: create exp execute shell start." >> ${LOG_FILE}
touch $THISDAY_EXECUTER
echo "#!/bin/ksh" >> $THISDAY_EXECUTER
echo >> $THISDAY_EXECUTER

# Filter: RCNT_ORIGINAL_XXX  manage_taxi.GPS_LOG perfstat.STATS
luxsh="sed -e 's/ //g' -e '/RCNT_ORIGINAL/d' -e '/manage_taxi.GPS_LOG$/d'  -e '/perfstat.STATS/d' -e '/selected\.$/d' -e '/^---.*--$/d' -e '/TABLE_NAME/d'  -e '/^---*--/d' -e '/SQL>/d' -e '/^$/d' ${THISDAY_TABLIST_FILE}"
eval $luxsh | while read table_name
do
   sed -e "s/%%1/${table_name}/g" -e "s/%%2/${THISDIR_RELATE}/g" -e "s/%%3/${ORACLE_USERNAME}/g" -e "s/%%4/${ORACLE_PASSWORD}/g" -e "s/%%5/${ORACLE_NETSERVICENAME}/g" $TEMPLATE_FILE  > ${THISDIR}/${table_name}.par
   echo "$ORACLE_HOME/bin/exp parfile=${THISDIR}/${table_name}.par" >> $THISDAY_EXECUTER
done
echo "sudo /bin/cp -a $THISDIR $NFS_MOUNTDIR"  >> $THISDAY_EXECUTER
echo "info: create exp execute shell end." >> ${LOG_FILE}

chmod ug+r+x $THISDAY_EXECUTER

echo  "info: execute $THISDAY_EXECUTER start." >> ${LOG_FILE}
$THISDAY_EXECUTER
echo "info: execute $THISDAY_EXECUTER finished." >> ${LOG_FILE}
echo "info: end time = $(date +'%b %e %T') . " >> ${LOG_FILE}
echo "++" >> ${LOG_FILE}

exit 0


文件名:template
说明:vmdbexport.ksh脚本调用
log=/backup/vmdb/db/%%2/%%1.log
file=/backup/vmdb/db/%%2/%%1.dmp
userid=%%3/%%4@%%5
buffer=4096
tables=(%%1)
rows=y
compress=n
分享到:
评论

相关推荐

    oracle逻辑导出脚本

    Oracle逻辑导出脚本是系统管理员和DBA(数据库管理员)的重要工具,用于自动化和简化Oracle数据库的备份过程。通过理解上述知识点,不仅可以更好地掌握如何编写类似的脚本来满足自己的需求,还可以深入了解Oracle...

    oracle自动备份脚本

    Oracle_backup[exp]文件可能包含了一系列的EXP命令脚本,这些脚本可以自动化地导出特定用户或整个数据库的数据。 1. **自动备份配置**:EXP脚本通常会设置参数,如数据库连接信息(SID、用户名、密码),导出模式...

    利用WSH实现Oracle逻辑备份的自动执行.pdf

    二是通过客户机手动执行Oracle的EXP逻辑备份命令。然而,这两种方法都存在明显的局限性。 磁带备份虽然是一种传统的备份方式,但其设备可靠性较低,容易受到环境因素的影响,如磁带驱动器、机械手、磁带等部件的...

    oracle自动备份脚本的

    导出脚本可能包含指定用户、表空间、时间戳等参数,以定制备份内容。 `Oracle_bakup.bat`则可能包含RMAN(恢复管理器)命令,RMAN是Oracle提供的强大备份和恢复工具。RMAN可以执行全库备份、增量备份、表空间备份等...

    oracle EXP 遇到的问题

    至于标签“源码”和“工具”,这可能意味着问题可能涉及到EXP的底层工作原理,或者是通过自定义脚本或工具来自动化EXP操作时遇到的问题。源码可能指的是Oracle的内部工作流程,而工具可能是指用于辅助EXP操作的第三...

    使用物化视图和exp实现生产库的逻辑实时备份

    2. **逻辑备份工具`exp`**:`exp`是一种用于Oracle数据库的逻辑备份工具,它可以将指定的表、模式或整个数据库导出为一个二进制文件,此文件包含了用于重建数据的所有SQL语句。通过`exp`,我们可以按需对生产库中的...

    批处理的oracle导出备份写法

    本篇主要介绍如何利用批处理(bat)脚本来实现Oracle数据库的自动导出备份。 Oracle数据库的导出备份通常使用的是Oracle的数据泵工具(expdp),它允许我们创建数据的逻辑备份,这些备份可以是整个数据库、特定用户...

    linuxoracle自动备份脚本.pdf

    本文主要涉及的是在Linux环境下,针对Oracle数据库创建自动备份脚本以及通过Crontab设置定时任务的相关知识。 1. **Oracle数据库备份**: Oracle数据库的备份通常使用`expdp`(Export Data Pump)工具进行,它允许...

    exp定时任务&&expdp定时任务.zip

    "exp"是Oracle早期的数据泵工具,全称为Export,它主要用于将Oracle数据库中的表、用户、存储过程等对象导出到一个二进制文件中,形成逻辑备份。这个备份文件可以被稍后导入到其他数据库或者同一数据库的不同时间点...

    oracle 数据的导入导出

    EXP/IMP 是 Oracle 早期的数据导出导入工具,它提供了逻辑导出导入的功能。EXP 用于导出数据,IMP 用于导入数据。导出的文件(dmp 文件)是二进制格式,包含 DDL(数据定义语言)和 DML(数据操纵语言)脚本。DDL ...

    Oracle数据导入导出

    导出脚本通常包含一系列参数,如用户名、密码、导出模式(完整、部分)、文件名等。在Kshell和bat脚本环境下,可以编写自动化脚本来调用expdp命令执行导出操作,这有助于简化和标准化工作流程。 2. Oracle IMP工具...

    逻辑备份、恢复实战演练

    本实战演练旨在让你熟悉Oracle的逻辑导出导入工具IMP和IMPDP,以及如何制定自动备份策略。 1. **Exp/Imp与Expdp/Impdp的简介** - **Exp/Imp** 是Oracle早期的数据导出导入工具,可以在客户端执行,支持基本的导出...

    Oracle_备份脚本

    在这个场景中,用户希望利用Linux命令行工具实现Oracle数据库的EXP导出备份。Oracle EXP是Oracle数据库提供的一个实用程序,用于导出数据库对象到一个二进制文件,以便于数据迁移、恢复或存档。 首先,我们看到邮件...

    Oracle数据库文件的导入导出

    在Oracle 9i及之前版本中,exp和imp是常用的导入导出工具。exp用于导出数据,imp用于导入数据。它们的操作相对简单,但速度较慢且功能相对有限。 - exp命令示例: ```bash exp username/password file=export.dmp ...

    EXP IMP详解

    在这种情况下,RMAN成为首选的备份工具,因为它提供了更高级的功能,如增量备份、多通道备份和直接到磁带的备份,同时还支持脚本化和自动化操作。 尽管如此,了解并熟练掌握EXP/IMP的使用仍然很重要,因为它们在...

    oracle的expimp使用方法学习

    这两个命令允许用户将数据库中的数据导出(exp)到文件,然后在需要时导入(imp)回数据库。逻辑备份在某些情况下比物理备份更实用,特别是当数据库运行在非归档模式下,或者没有足够的外部存储设备,如磁带库时。 ...

    oracle_imp_exp.rar_ oracle_imp_exp_oracle_oracle exp_oracle_imp_

    "Form1.Designer.vb" 可能包含了由Visual Studio自动生成的控件布局和属性设置,而"OracleManager.vb"很可能是具体的数据库操作逻辑,比如连接、查询、导入和导出的实现。 "数据库导入导出小工具(VB).sln" 是解决...

    Oracle_backup.rar_oracle_oracle exp t

    `exp`是Oracle数据库早期版本中的一个实用程序,用于导出数据库对象到操作系统文件,以实现逻辑备份。在这个场景中,"Oracle_backup.rar_oracle_oracle exp t"标题暗示了我们将讨论如何使用`exp`命令创建Oracle...

    arcpy自动出图

    在`exp_map.py`这个脚本中,应该包含了类似上述的逻辑,根据实际需求对MXD进行操作。如果你有多个MXD需要处理,可以将它们的路径存储在一个列表中,然后遍历这个列表执行上述步骤。这将实现MXD文件的批量自动化处理...

    SQL导出实例 (备份)

    同时,理解数据导出的格式(如CSV、XML、SQL脚本等)也很重要,因为不同的格式有不同的导入要求和兼容性。 总的来说,SQL导出是数据库管理的关键环节,它涉及到数据安全、备份策略以及跨系统数据迁移。正确理解和...

Global site tag (gtag.js) - Google Analytics