硬件生产 数据中心数据库

定时作业实现oracle的EXP逻辑备份

呵呵,虽然是HPUX环境,但是应该和AIX一样的,还是这边人气旺盛,所以来这边问下,请见谅!


HPUX11.23下   每天凌晨2.20有个作业任务  
每天那个时候就用exp将数据库 DB123完全导出  用户名:oracle  密码:oracle123
生成文件名为   当天日期.dmp   并将这个文件存储到/oracle/TLQ63/TLQ63/rcvfilesbak下,这个应该怎么实现啊?

答:准备用定时作业cron来实现,ps -ef|grep cron,看cron进程在运行不。 如果实现不了/oracle/TLQ63/TLQ63/rcvfilesbak/log下看log,查出问题所在
1.
准备用crontab实现:  crontab -l
20       2        *          *      *       sh /oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh >> /oracle/TLQ63/TLQ63/rcvfilesbak/exp.log(这个根据实际情况改)  
minute  hour  day_of_month  month  weekday  command这些字段接收以下值:
minute 0 到 59
hour 0 到 23
day_of_month 1 到 31
month 1 到 12
weekday 0 到 6 (星期日到星期六)
command shell 命令

在该用户下用crontab -e去编辑,用wq!保存并退出。
2.先ls -l 查看/oracle/TLQ63/TLQ63/rcvfilesbak的属性和属主和组,查看oracle用户的对该目录的写权限,
不是的话  chown oracle:dba /oracle/TLQ63/TLQ63/rcvfilesbak   chmod更改权限

exp.sh文件如下:
# more exp.sh
#!/usr/bin/ksh
#export database
export MY_DATE=`date +%E%m%d%H%M%S`
su - oracle -c "exp oracle/oracle123@DB123 file=/oracle/TLQ63/TLQ63/rcvfilesbak/$MY_DATE.dmp full=y
log=/oracle/TLQ63/TLQ63/rcvfilesbak/$MY_DATE.exp.log"


请问下:这样实现可以么?还有这个数据库的名字DB123是从哪看到的,在oracle下用什么命令查看。请高手指导下,谢谢!
参与7

6 同行回答

abit2007 abit2007 系统工程师 代维
回复下,表示我关注过此帖。显示全部
回复下,表示我关注过此帖。 收起
互联网服务 · 2013-09-25
浏览2062
woailili9 woailili9 系统工程师 新明星
回复 5# 满天星 哦 谢谢  我在客户的机器上 找到了这个脚本  麻烦你给看看  是实现这个的么?USERID=simsdb/simsdb@nfhmis; export USERIDORACLE_HOME=$HOME/app/product/10.2.0/db_1 ; export ORACLE_HOMEORGCODE=$1;export ORGCODE;NLS_L...显示全部
回复 5# 满天星

哦 谢谢  我在客户的机器上 找到了这个脚本  麻烦你给看看  是实现这个的么?

USERID=simsdb/simsdb@nfhmis; export USERID
ORACLE_HOME=$HOME/app/product/10.2.0/db_1 ; export ORACLE_HOME
ORGCODE=$1;
export ORGCODE;
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
PATH=$PATH:$ORACLE_HOME/bin:/usr/sbin:/bin ; export PATH
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH;
export PATH;

#清空临时表
echo "">/oracle/TLQ63/TLQ63/Truncate_TempTables.sql
echo "exec simsdb.UP_TRUNCATE_TEMP; " >>/oracle/TLQ63/TLQ63/Truncate_TempTables.sql
echo "exit;">>/oracle/TLQ63/TLQ63/Truncate_TempTables.sql
sqlplus ${USERID} @/oracle/TLQ63/TLQ63/Truncate_TempTables.sql

IMPDATA=/oracle/TLQ63/TLQ63/rcvfiles/expdata.dmp;
export IMPDATA;
EXP_TIME=`cat /oracle/TLQ63/TLQ63/expTime.log`;
export EXP_TIME;

IMPORT_WHAT="FULL=Y  IGNORE=Y";
export IMPORT_WHAT;
dt1="";
dt1=$(date +%Y-%m-%d:%H%M%S)
export dt1;

if [   -e   $IMPDATA   ]; then
$ORACLE_HOME/bin/imp userid=${USERID} buffer=20480000 file=$IMPDATA $IMPORT_WHAT log=/oracle/TLQ63/TLQ63/imp_data.log;
else
echo "---------------------------没有下发文件程序退出----------------------------------"
exit 0
fi

BAKPATH=/oracle/TLQ63/TLQ63/rcvfilesbak;export BAKPATH;
echo $BAKPATH;
if [ -d $BAKPATH ]
then
echo "exit"
mv $IMPDATA /oracle/TLQ63/TLQ63/rcvfilesbak/expdata$dt1.dmp
else
echo "not exit"
mkdir $BAKPATH
mv $IMPDATA /oracle/TLQ63/TLQ63/rcvfilesbak/expdata$dt1.dmp
fi

#此次传输的ID识别是省机构代码加时间组合
ORGEID=${ORGCODE}${EXP_TIME};
export ORGEID;
echo "机构的ID号::::::${ORGEID}";
echo "">/oracle/TLQ63/TLQ63/${ORGCODE}.tmp;
echo "">/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "exec simsdb.UP_INSERT_FACT_TABLE('$ORGCODE','$ORGEID','$dt1');">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "set heading off;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "set feedback off;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "set pagesize 0;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "set trimspool on;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "set linesize 600;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "spool /oracle/TLQ63/TLQ63/${ORGCODE}.tmp; ">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "select 'insert into temp_actongfeedback(tongfeedbackid,impcount,imptime) values ('''||t.tongfeedbackid||''','''||t.impcount||''','''||t.imptime||''');' from  temp_actongfeedback t where t.IMPTIME='${dt1}';">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "spool off;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
echo "exit;">>/oracle/TLQ63/TLQ63/InsertFactTables.sql
sqlplus ${USERID} @/oracle/TLQ63/TLQ63/InsertFactTables.sql
cat /oracle/TLQ63/TLQ63/${ORGCODE}.tmp|grep  -v SQL |grep -v ^$ > /oracle/TLQ63/TLQ63/${ORGCODE}.sql;
echo ";">>/oracle/TLQ63/TLQ63/${ORGCODE}.sql;
#信息反馈
csendmsg /oracle/TLQ63/TLQ63/${ORGCODE}.sql qsend_zonghang;
echo "---------------------导出时间:${EXP_TIME} 导入时间:`date +%Y-%m-%d' '%H:%M:%S`-----------------" >> /oracle/TLQ63/TLQ63/TestEndTime.log 收起
硬件生产 · 2013-09-03
浏览1987
woailili9 woailili9 系统工程师 新明星
回复 3# 满天星   你好  1.请问下  你这是给oracle用户加这个exp.sh脚本的执行权限吧所以   2.这个定时任务  不是在root里面做的吧   是在oracle用户下的crontab是么?上面我写的那个是参考网上的资料,然后准...显示全部
回复 3# 满天星


  你好  1.请问下  你这是给oracle用户加这个exp.sh脚本的执行权限吧

所以   2.这个定时任务  不是在root里面做的吧   是在oracle用户下的crontab是么?上面我写的那个是参考网上的资料,然后准备添加到root的crontab中的。


3.小弟没写过这东西,所以再请问下,看原本网上的资料su -oracle -c后面这个追加命令是有“”号的吧,按你给的是可以不加么?
20 2 * * * su - oracle -c /oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh >>/oracle/TLQ63/TLQ63/rcvfilesbak/exp.log 收起
硬件生产 · 2013-09-03
浏览1993
满天星 满天星 系统工程师 ********
1、首先修改exp.sh脚本权限:chown oracle:dba exp.sh chmod +x exp.sh2、定时任务里边加下边一句:20 2 * * * su - oracle -c /oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh >/oracle/TLQ63/TLQ63/rcvfilesbak/exp.log3、数据库的名字可以在tnsnames.ora文件中看到。...显示全部
1、首先修改exp.sh脚本权限:chown oracle:dba exp.sh chmod +x exp.sh
2、定时任务里边加下边一句:
20 2 * * * su - oracle -c /oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh >/oracle/TLQ63/TLQ63/rcvfilesbak/exp.log
3、数据库的名字可以在tnsnames.ora文件中看到。 收起
系统集成 · 2013-09-03
浏览2039
woailili9 woailili9 系统工程师 新明星
顶一下  请高手指导下 谢谢显示全部
顶一下  请高手指导下 谢谢 收起
硬件生产 · 2013-09-03
浏览2018
满天星 满天星 系统工程师 ********
回复 4# woailili9 定时任务是给root用户加的,只是用oracle用户去执行/oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh这个脚本。这个定时任务不需要“”的。显示全部
回复 4# woailili9

定时任务是给root用户加的,只是用oracle用户去执行/oracle/TLQ63/TLQ63/rcvfilesbak/exp.sh这个脚本。这个定时任务不需要“”的。 收起
系统集成 · 2013-09-02
浏览1978

提问者

woailili9
系统工程师 新明星
擅长领域: 服务器系统管理安全
评论351

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2013-09-02
  • 关注会员:1 人
  • 问题浏览:7085
  • 最近回答:2013-09-25
  • X社区推广