如何实现ORACLE数据库的远程自动备份(完整版)
来源:互联网 发布:中国人没有信仰知乎 编辑:程序博客网 时间:2024/06/07 22:40
如何实现ORACLE数据库的远程自动备份(完整版)
主数据库已经正常工作,之前的数据没有做自动备份,为防止数据丢失,现考虑使用自动备份机制并且远程存储到其它计算机上。具体的实现步骤和环境如下:
服务器A:192.168.0.1(主数据库)
服务器B:192.168.0.2(远程数据库备份文档存储)
操作系统均为:LINUX
1、 编制自动备份脚本,命令为Oracle_backup_all.sh、Oracle_backup_full、Oracle_backup_up这三个脚本分别代表完全增量导出、全库所有对象备份、增量导出。具体内容如下:
ORACLE_backup_all.sh:
#!/bin/sh
#name:oracle_backup.sh
#PS:oracle automation backup script
#write by:iceboard
# create in 2014-07-28
# 预先设置变量,然后导出相关数据
ORACLE_BASE=/home/oraBase
ORACLE_HOME=/home/oraProduct
ORACLE_SID=orcl
#ORACLE_TERM=test1
ORACLE_OWNER=oracle
export ORACLE_BASE
export ORACLE_HOME
export ORACLE_SID
#export ORACLE_TERM
export ORACLE_OWNER
NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"; export NLS_LANG
#LANG=zh; export LANG
cd /home/oracle/backup
$ORACLE_HOME/bin/exp username[email=/password@orcl]t/oracle119*@lmssww[/email] file=oracle_`date +%Y-%m-%d`.dmp log=/home/oracle/backup/oracle-`date +%Y-%m-%d`.log feedback=10000 inctype=complete
filename=oracle-`date +%Y-%m-%d`-all.tar
tar cf $filename oracle_`date +%Y-%m-%d`.dmp
filenamegz=oracle-`date +%Y-%m-%d`-all.tar.gz
/usr/bin/gzip -f $filename
#欲实现远程文件拷贝,其功能与下面的FTP服务拷贝同效
scp -P 端口号 /home/oracle/backup/$filenamegz root@192.168.0.2:/home/backupDB
文件存放于/home/oracle目录下面,该脚本分别完成变量设置,导出操作,打包压缩,远程拷贝。这三个脚本大至相同,只是导出的参数有变化,在此不全列出来了,现在这个程序还不能自动执行和实现远程拷贝。接下来第二步
2、 为刚才制作的脚本文件授予执行权限,如下:
#chmod +x /home/oracle/oracle_backup_all.sh
3、 授予执行并不能立即使程序具有自动执行的功能,接下来我们还要用到crontal来将脚本加入到自己执行列表中:
Crontab –e后输入以下内容:
#Oracle database backup script
#writ by :iceboard
#date :2014-7-29
0 2 * * 2-6 /home/oracle/oracle_backup_up.sh
0 2 * * 0 /home/oracle/oracle_backup_full.sh
0 2 * * 1 /home/oracle/oracle_backup_all.sh
上面几行为注释代码,下面的三行,设置了自动执行的时间,分别表示在每周2-6晚上2点整,执行脚本/home/oracle/oracle_backup_up.sh;每周日晚上2点整执行脚本:/home/oracle/oracle_backup_full.sh;每周一执行脚本:/home/oracle/oracle_backup_all.sh;分别表示了增加、全库、完全增量备份。
通过crontab –l可以查询到该自动执行的时间。
4、 到这里,上面的操作已基本可以完成数据库的备份压缩操作,但还不能实现远程拷贝备份文件的操作。即脚本中的:scp -P 端口号 /home/oracle/backup/$filenamegz [email=[ft=#009933,,]root@192.168.0.2:/home/backupDB]root@192.168.0.2:/home/backupDB[/email]还不能执行,他会提示你输入远程服务器的密码,这样的话还需要人工参与,还不能实现自动备份,那么接下来就要完成远程主机的自动登录问题了。
5、 要实现远程自动登录而不需要输入密码,我们需要采用密钥的方式来做密码的验证。操作步骤如下:
在服务器A上执行如下命令:
$ ssh-keygen -t rsa #生成密钥,出现的提示如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):回车
Enter passphrase (empty for no passphrase):回车
Enter same passphrase again:回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
2b:59:60:47:2c:7c:e0:4f:4f:26:1e:a3:58:d9:48:49 oracle@A
OK,公、私密钥对已生成,在/root/.ssh/路径下会生成id_rsa和id_rsa.pub,其中id_rsa是密钥,id_rsa.pub是公钥。
第二步,将生成的密钥拷贝到服务器B上
$ scp /root/.ssh/id_rsa.pub root@192.168.0.2:/tmp/
The authenticity of host 'B (192.168.0.2)' can't be established.
RSA key fingerprint is e1:c2:a8:4e:99:4e:39:d9:05:29:9d:14:36:91:b5:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
[email=root@192.168.0.2's]root@192.168.0.2's[/email] password:在这里输入一次B机的密码
id_rsa.pub 100% 228 0.2KB/s 00:00
第三步:用root登录B机,创建authorized_keys文件,并设置好权限。
cd .ssh/ #若无此文件夹,则手动创建一个
cat /tmp/id_rsa.pub >>authorized_keys
chmod 400 authorized_keys
rm -f /tmp/id_rsa.pub
第四步:测试一下刚刚的密钥,看是否能远程登录,如下:
oracle:/home/oracle # ssh -p 714 root@192.168.0.2
Last login: Tue Jul 29 10:13:59 2008 from 192.168.0.1
Have a lot of fun...
bbs:~ #
OK,没有问我们要密码,测试成功!
再试一个文档远程拷贝看能否成功。
oracle:/home/oracle # scp -P 端口号 /home/oracle/oracle_backup.sh root@192.168.0.2:/tmp/
oracle_backup.sh 100% 1049 1.0KB/s 00:00
OK,也没有问我们要密码,远程拷贝成功!
6、至此,我们的自动备份功能便可以正常执行了。以上的操作环境均是在ROOT权限下执行,LINUX的版本为RH4U5。测试通过,程序正常执行。
服务器A
服务器B
操作系统均为:LINUX
1、
ORACLE_backup_all.sh:
#!/bin/sh
#name:oracle_backup.sh
#PS:oracle automation backup script
#write by:iceboard
# create in 2014-07-28
# 预先设置变量,然后导出相关数据
ORACLE_BASE=/home/oraBase
ORACLE_HOME=/home/oraProduct
ORACLE_SID=orcl
#ORACLE_TERM=test1
ORACLE_OWNER=oracle
export ORACLE_BASE
export ORACLE_HOME
export ORACLE_SID
#export ORACLE_TERM
export ORACLE_OWNER
NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"; export NLS_LANG
#LANG=zh; export LANG
cd /home/oracle/backup
$ORACLE_HOME/bin/exp username[email=/password@orcl]t/oracle119*@lmssww[/email] file=oracle_`date +%Y-%m-%d`.dmp log=/home/oracle/backup/oracle-`date +%Y-%m-%d`.log feedback=10000 inctype=complete
filename=oracle-`date +%Y-%m-%d`-all.tar
tar cf $filename oracle_`date +%Y-%m-%d`.dmp
filenamegz=oracle-`date +%Y-%m-%d`-all.tar.gz
/usr/bin/gzip -f $filename
#欲实现远程文件拷贝,其功能与下面的FTP服务拷贝同效
scp -P 端口号 /home/oracle/backup/$filenamegz root@192.168.0.2:/home/backupDB
文件存放于/home/oracle
2、
#chmod +x /home/oracle/oracle_backup_all.sh
3、
Crontab –e
#Oracle database backup script
#writ by :iceboard
#date :2014-7-29
0 2 * * 2-6 /home/oracle/oracle_backup_up.sh
0 2 * * 0 /home/oracle/oracle_backup_full.sh
0 2 * * 1 /home/oracle/oracle_backup_all.sh
上面几行为注释代码,下面的三行,设置了自动执行的时间,分别表示在每周2
通过crontab –l
4、
5、
在服务器A
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
2b:59:60:47:2c:7c:e0:4f:4f:26:1e:a3:58:d9:48:49 oracle@A
OK
第二步,将生成的密钥拷贝到服务器B
$ scp /root/.ssh/id_rsa.pub root@192.168.0.2:/tmp/
The authenticity of host 'B (192.168.0.2)' can't be established.
RSA key fingerprint is e1:c2:a8:4e:99:4e:39:d9:05:29:9d:14:36:91:b5:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
[email=root@192.168.0.2's]root@192.168.0.2's[/email] password:
id_rsa.pub 100% 228 0.2KB/s 00:00
第三步:用root
cd .ssh/ #
cat /tmp/id_rsa.pub >>authorized_keys
chmod 400 authorized_keys
rm -f /tmp/id_rsa.pub
第四步:测试一下刚刚的密钥,看是否能远程登录,如下:
oracle:/home/oracle # ssh -p 714 root@192.168.0.2
Last login: Tue Jul 29 10:13:59 2008 from 192.168.0.1
Have a lot of fun...
bbs:~ #
OK
再试一个文档远程拷贝看能否成功。
oracle:/home/oracle # scp -P 端口号 /home/oracle/oracle_backup.sh root@192.168.0.2:/tmp/
oracle_backup.sh
OK
6、至此,我们的自动备份功能便可以正常执行了。以上的操作环境均是在ROOT权限下执行,LINUX的版本为RH4U5。测试通过,程序正常执行。
0 0
- 如何实现ORACLE数据库的远程自动备份(完整版)
- oracle数据库自动备份的实现历程
- oracle数据库自动备份的实现历程
- 使用配置文件自动备份远程oracle数据库
- Java程序实现oracle远程数据库的备份和恢复
- Oracle数据库的自动备份
- Oracle 11g数据库每天自动备份的实现方法
- 如何实现数据库完整备份 ——Oracle容灾技术及与远程磁盘镜像技术的比较
- 如何实现数据库完整备份 ——Oracle容灾技术及与远程磁盘镜像技术的比较
- oracle远程备份数据库
- oracle远程备份数据库
- linux上实现oracle数据库自动备份
- Oracle备份远程计算机上的数据库
- 自动备份Oracle数据库
- 自动备份Oracle 数据库
- 自动备份Oracle数据库
- 自动备份Oracle数据库
- oracle 数据库自动备份
- leetcode triangle c++
- Oracle 10g ORA-12537之吓了一身汗!!
- TCP/IP之 IGMP
- 新到一本 Clojure 编程
- hdu3306--Another kind of Fibonacci(矩阵快速幂)
- 如何实现ORACLE数据库的远程自动备份(完整版)
- adb.exe 不能运行
- java多线程模拟抢票
- iOS:#ifdef的使用
- 重启系统后1158/EM启动失败的解决办法
- AJAX
- poj2451 求半平面交模板
- jmx基础
- 深入理解Android(02)——深入理解JNI与应用