在使用RMAN之前遇到的问题
本机电脑安装了ORACLE服务器,又安装了ORACLE客户端,两个合在一起就有问题。我使用SQLPLUS连接服务器的时候弹出TNS适配器错误!!!
连接代码如下:
cd C:
C:\>set oracle_sid=orcl
c:\>sqlplus /nolog
sql>connect /as sysdba;
运行到这个地方的时候就弹出TNS适配器错误!!!
问题来源:
因为ORACLE SERVER和ORACLE CLIENT同样都有一个执行目录\bin,在环境变量中,CLIENT的执行目录可能在SERVER之前,导致执行connect /as sysdba的时候找到的执行目录是CLIENT的,但是监听程序和服务都是SERVER的,所以执行不成功。
解决方法:
修改ORACLE_HOME为SERVER目录
按照上面的设置会导致一个问题就是PL/SQL不能连接到服务器,处理方法为删除ORACLE_HOME这项内容。这样使用SQLPLUS和PLSQL都可以连接ORACLE数据库了。
将ORACLE SERVER的执行目录放在CLIENT之前
这样就解决了TNS适配器错误的问题。
开始使用RMAN自动化备份
备份方案:
A、第一次全备份
B、每天备份本日的数据
C、每周末备份整个一周的数据
D、每月备份本月的数据
E、每年备份所有的数据
第一步,将数据库切换到归档模式,这样做的目的是让数据库在打开的情况下也可以备份,代码如下:
%sqlplus /nolog (启动sqlplus)
SQL> conn / as sysdba (以DBA身份连接数据库)
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> exit (退出)
执行效果如下图:
全备份代码如下:
C:\>set oracle_sid=orcl
C:\>rman target /
rman>backup database;
执行效果如下图:
从图上可以看出全备份已经执行完毕了。
查看备份文件的代码如下:
RMAN>list backup of database;
执行效果如下图所示:
第二步,备份方案设计
需求为:备份需要在指定的时间做指定的增量备份方案;
所以需要四种备份的RMAN批处理文件,分别是:全备份、级别0/1/2的增量备份代码;
要执行这些RMAN的备份代码需要用到CMD的批处理命令;
要在指定时间执行这些批处理的话,需要使用Windows的计划任务。
下面一一写出这些内容
配置RMAN的代码,包括备份目录、是否自动备份等内容:
run{
configure default device type to disk;(备份到磁盘)
configure device type disk parallelism 2;(通过两个通道备份)
configure channel 1 device type disk format 'D:\OracleBackup\Back1\backup_%U';(通道1备份到的文件夹和文件位置)
configure channel 2 device type disk format 'D:\OracleBackup\Back2\backup_%U';
configure controlfile autobackup on;(自动备份打开)
configure controlfile autobackup format for device type disk to 'D:\OracleBackup\Back1\ctl_%F';(自动备份控制文件)
configure retention policy to recovery window of 30 days;(备份有效期为30天)
}
全备份批处理代码,保存为backup_full.rman:
run{
backup full tag 'hldFull' database
skip inaccessible #不备份不能读取的文件
plus archivelog #归档模式
delete all input;
}
设置增量备份级别为0的备份代码:
run{
backup incremental level=0 tag 'hldlevel0' database
skip inaccessible
plus archivelog
delete all input;
}
设置增量备份级别为1的备份代码(其实就是将level改为2就可以了):
run{
backup incremental level=1 tag 'hldlevel1' database
skip inaccessible
plus archivelog
delete all input;
}
增量为2的备份代码类似,这里就不一一举例了。
执行全备份的批处理文件(CMD)代码如下:
set oracle_sid=orcl
rman target / msglog D:\OracleBackup\BackupLog\oracle_backup.log cmdfile=D:\HSF\MyCode\Backup\backup_Full.rman
执行三个级别的增量备份方案类似,这里就不一一列举了。
计划任务编辑截图如下:
经过上述一系列的操作,执行ORACLE每日备份的工作就完成了。
至此本篇博客也告一段落,如果有问题请留言。