linux下实现oracle的自动备份

       SQL Server中自动备份可以使用系统自带的功能,但Oracle则不行,必须自己写脚本。linux下Oracle的自动备份思路,主要是利用shell提供的crontab命令,定时运行备份脚本shell文件来实现自动备份。使用Oracle账户,步骤如下:

       (1)首先建立备份文件存放的地方,我在/home/oracle/下建立了backup文件夹,再建立data和log分别存放数据库备份和日志文件。

       (2)编写backup.sh文件:

#!/bin/sh
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl

export DATA_DIR=/home/oracle/backup/data
export LOGS_DIR=/home/oracle/backup/log
export BACKUPTIME="xzjxj"$(date +%Y-%m-%d_%H:%M:%S)

echo "Starting backup..."
echo "Backup file path $DATA_DIR"
echo "Backup log path $LOGS_DIR"
$ORACLE_HOME/bin/exp xzjxj/19880112@orcl file=$DATA_DIR/$BACKUPTIME.dmp log=$LOGS_DIR/$BACKUPTIME.log

echo "Backup completed."

               shell文件的作用是在/home/oracle/backup/data下导出数据库文件,在/home/oracle/backup/log下导出日志文件。这里用到的exp是oracle提供的指令,在$ORACLE_HOME/bin下,该命令有许多参数可以使用,详情可以输入exp help=y来查看。

               完成后保存在/home/oracle/backup下,在终端输入sh /home/oracle/backup/backup.sh。可能会遇到EXP-00091错误,那可能是权限不够,要检查建立的data和log文件夹权限。

        (3)定义crontab定时执行脚本。接下来在终端输入crontab -u oracle -e(如果权限不够需要切换到root用户下输入)以vi形式打开,按下i,输入:

                  */30 * * * * /home/oracle/backup/backup.sh

         按下ESC,输入:wq保存退出。这句话的意思是每隔三十分钟执行一次脚本。其中五个星号分别表示分钟、小时、日、月、星期。*/n则表示每隔n(分钟、小时等)执行一次脚本。当看到crontab:installing new crontab表示输入成功。退出后输入crontab -l可以查看刚才输入的任务。crontab会使用sh的方式执行定制脚本,然后以邮件形式将执行结果发送给用户。过一段时间后使用mail命令打开邮件系统可以看到未读邮件,输入n即可打开最新邮件观看命令执行结果。在data和log文件夹也可以看到备份文件了。

        注意:如果在邮件中看到bin/sh:/home/oracle/backup/backup.sh permission denied. 说明backup.sh的权限设置不足。此时打开backup.sh的属性,将权限夹页下的“允许以程序执行文件”的复选框勾上即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值