aix导入oracle,AIX环境下exp备份Oracle分区表实例

1 简述

一般情况下,为保证数据库数据不丢失或少丢失,降低事故恢复时间,我们常使用Oracle数据库export工具对数据库进行定期备份。对于常用的exp备份,无论是备全库、备用户或是备单个表,命令都比较简单。

下面说明一下如何每天定时备份分区表的某个分区的详细步骤。

2 环境描述

硬件环境:IBM P570

操作系统:AIX5.3

数据库版本:Oracle9.2.0.6

业务场景:数据库t_sms表包含每天所有的短信发送历史数据(每天大约700W),由于数据量庞大,且平时有查询需要,所以根据月日建立了分区(每天一个分区,比如P01_01代表1月1日的数据)(t_sms脚本: )

备份需要:每天700W数据存放在一张表中,造成此表数据量庞大,极易产生索引失效等副作用,故决定对此表历史数据进行迁移,迁移策略为保留前天到目前的数据在表中,其他数据迁移到历史归档库中。如有查询需要,可直接连接归档库进行短信数据查询。这样一方面可以减少t_sms表的数据量,另一方面也把查询数据迁移到归档库,降低生产库负荷。

3 备份策略

1、每天凌晨00:30分,利用crontab执行exp脚本,把前天分区里的数据生成dmp文件;

2、3:30分,ftp到归档库

3、4:30分,归档库执行imp脚本导入归档数据

4 操作步骤

1、以Oracle用户身份登陆小型机;

2、把exp.sh脚本拷贝到小型机/sms目录下

3、chmod 755 /sms/exp.sh

4、执行crontab –e,输入30 00 * * * /sms/exp.sh

5、建立ftp用户

6、在归档库上设定自动任务,定时ftp到小型机下载dmp文件,并imp到归档库中。

#p#副标题#e#

5 Exp脚本解释

GetPrevDate(){

str=$1

days=$2

yy=`echo $str|cut -c 1-4`

mm=`echo $str|cut -c 5-6`

dd=`echo $str|cut -c 7-8`

sav_dd=$days

days=`expr $days - $dd`

while [ $days -ge 0 ]

do

mm=`expr $mm - 1`

[ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`

aaa=`cal $mm $yy`

bbb=`echo $aaa|awk '{print $NF}'`

days=`expr $days - $bbb`

done

dd=`expr 0 - $days`

expr $dd : "^.$" > /dev/null && dd=0$dd

expr $mm : "^.$" > /dev/null && mm=0$mm

echo $mm"_"$dd

}

注释:Ksh下的函数,用于取得第n天前日月数

todayDate=`date "+%Y%m%d"`

thisday="`GetPrevDate ${todayDate} 2`"

注释:用于取得前天的日月,形如08_08

dmpfile="/sms/t_sms.dmp"

注释:Dmp文件名称及路径

logfile="/sms/t_sms_"$thisday".log"

注释:备份日志名称及路径

partitionno="t_sms:P"$thisday``

exp sms/sms rows=y indexes=n compress=n buffer=204800000 direct=y feedback=100000

file=$dmpfile log=$logfile tables=$partitionno

注释:tables=$partitionno

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值