linux下实现oracle的自动备份

来源:互联网 发布:淘宝售后客服例子 编辑:程序博客网 时间:2024/05/20 11:47

       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 0
原创粉丝点击