Oracle单机Rman笔记[3]---RMAN脱机备份及命令基础介绍

时间:2023-12-24 18:46:31
A、NOARCHIVELOG模式下的物理备份
1、完全关闭数据库
2、备份所有的数据库文件、控制文件、联机重做日志
3、重新启动数据库
B、RMAN的体系结构概述
重新构建控制文件:
将控制文件备份为一个二进制文件而不是跟踪文件,所有备份信息都将被保留
alter database backup controlfile to '/u01/backup/bkup_cfile.ctl'
C、RMAN的设置和配置
当数据库在ARCHIVELOG模式运行时,归档重做日志的复制位置可采用两种配置方法。实际上也可以同时采用此两种方式。
a\配置ARCHIVELOG目标目录
b\配置Oracle闪回恢复区(Flash Recovery Area,FRA) ARCHIVELOG目标目录
可使用LOG_ARCHIVE_DEST_n(n是1~10)参数定义最多10个不同的归档日志目标,这些目标可以是本地目录、网络目录或NAS。使用命令(执行此命令是需要保证数据库处于ARCHIVE模式):
alter system set log_archive_dest_1='location=c:\oracle\oraarc\beta1';
归档日志设置参数示例:
本地位置:log_archive_dest_1='location=d:\oracle\oraarc\robt mandatory'
网络位置:log_archive_dest_2='location=z:\oracle\oraarc\robt mandatory'
名为revover1的Oracel Net服务器:log_archive_dest_2='sevice=revocer1 mandatory'
要求归档的重做日志必须成功复制到至少两个不同位置:log_archive_min_succeed_dest=2
定义归档日志格式:log_archive_format="robt_%s_%t.arc" 闪回恢复区
略过
D、Oracle11g故障诊断基础架构
Oracle Automatic Diagnostic Repository(ADR)
如果$ORACLE_BASE的目录为/u01/oracle,数据库名为mydb,数据库实例名为mydb1,则ADR目录结构为:/u01/oracle/diag/rdbms/mydb/mydb1
(一般安装oracle时,默认数据库名叫orcl,实例名也叫orcl,ADR路径如下:/u01/app/oracle/diag/rdbms/orcl/orcl)
alert目录:该目录为XML格式的警报日志位置
cdump目录:数据库核心转储位置
trace目录:系统建立的跟踪文件,以及警报日志的文本副本
incident目录:包含多个子目录,每个子目录包含一个事件
查询ADR位置信息使用命令
select * from v$diag_info;
E、RMAN命令行
常用参数(使用rman help查询帮助)
target 字符串 定义要连接的目标数据库的用户名、密码、服务器名
catalog 字符串 定义恢复目录的用户名、口令、服务器名
nocatalog 不存在变量 表示会话不使用恢复目录(8i\9i默认)
cmdfile 字符串 表示要执行的命令文件脚本名
log 字符串 表示RMAN会话计入日志,日志文件名为该参数的变量
trace 字符串 表示跟踪RMAN会话,跟踪文件名为该参数的变量
append 不存在变量 表示应当归家的日志文件
debug 多种变量 表示以调试模式启动RMAN 示例:
RMAN>
target=system/manager@robt nocatcalog
target='sys/robert as sysdba@robt'nocatcalog
target=system/manager@robt catalog=system/manager@catalog log="RMAN.log"
target=system/manager@robt nocatcalog log "RMAN.log"
使用connect命令
如果发现没有连到正确的数据库,需要使用connect来连接
RMAN>
connect target sys/password@testdb;
connect catalog rcat_user/password@robdb;
F、为RMAN操作配置数据库
1、设置数据库用户,通常情况可以使用sys用户,也可以单独建立一个RMAN账户
CREAT USER backup_admin IDENTIFIED BY password default TABLESPACE users;
GRANT sysdba TO backup_admin;
2、设置数据库安全性
创建口令文件
file:口令文件名
password:sys用户的口令
entries:为其他特许的oracle用户帐户保留的条目数
SQL>ora file=PDWorcl.ora password=111111 entries=20
创建了口令文件后,配置数据库可以使用口令文件以便于通过OracleNet来执行远程备份操作
3、配置数据库使用口令文件
默认情况下,Oracle数据库不会配置口令文件,要配置可以修改init.ora(/u01/app/oracle/product/11.2.0/db_1/dbs)文件。编辑的参数为remote_login_passwordfile.
此参数可以设置为:
none: 默认值,在此情况下oracle会忽略口令文件,并且此时sysdba访问只能予以本地特许的登录
shared:多个数据库可以使用这个文件,此模式只能保存sys用户的口令
exclusive:说明只有一个数据库可以使用这个口令文件。此模式中口令文件可以包含于多个特许的账户。这个是推荐的模式,使用RMAN必须使用此模式 修改命令如下:
SQL>alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile;
G、配置RMAN默认设置
配置的几种不同设置:
1、用于RMAN操作的默认设备类型:如裁判或SBT(系统备份磁带设备)
2、执行自动的备份和还原操作时自动分配的信道数
3、配置将指定表空间排除在完全数据库备份操作之外的表空间排斥策略
4、自动备份时任何给定的备份片的最大空间和任何备份集的大小
5、备份优化的默认值为ON或OFF。备份优化会删除同一数据文件(例如与制度表和表空间关联的数据文件)和归档的重做日志的复制备份。
6、快照控制文件的默认文件名
7、控制文件自动备份默认为ON或OFF,控制文件备份的输出文件的默认格式,以及创建这些备份的默认设备。
8、辅助数据库文件的默认文件名
9、默认的保留策略,该策略用于确定哪些备份和副本符合删除条件
10、默认的加密值和关联的加密算法
11、需要压缩时,使用的默认压缩算法
12、归档重做日志的删除策略 RMAN的非默认配置存储视图V$RMAN_CONFIGURATION中,也可以在RMAN中使用show命令查看:
show default device type;
show maxsetsize;
show retention policy;
show all; 信道的默认名称取决于默认设备的类型:
磁盘:ORA_DISK_n 如:ORA_DISK_1
磁带:ORA_SBT_TAPE_n 如:ORA_SBT_TAPE_1
配置所有信道的默认值
configure channel device type
配置指定默认信道的默认值(n为阿拉伯数字)
configure channel n device type
配置清楚所有信道的默认值
configure channel device type clear
配置清除指定默认信道的默认值(n为阿拉伯数字)
configure channel n device type clear
创建自定义名称的信道(名称为d1)
allocate channel d1 device type disk
H、RMAN备份(仅支持基于spfile的备份,不支持基于init.ora配置的备份)
脱机备份(默认设置):
[:~]:rman target=backup_admin/password@orcl
RMAN>shutdown immediate
RMAN>startup mount
RMAN>backup as compassed backset database;
RMAN>alter database open 其中backup_admin为分配给RMAN备份用的用户。如果数据库无法start mount,可以在sqlplu里执行。备份后,默认数据备份在/u01/app/oracle/fast_recovery_area/ORCL/backupset/2018_02_14路径中。 监控RMAN操作:
select output from v$rman_output order by stamp;
脱机备份(自定义windows为例):
RMAN>shutdown immediate
RMAN>startup mount
RMAN>run
{
allocate channel c1 device type disk format '/backup/robt_%d_%U.bak';
allocate channel c2 device type disk format '/backup/robt_%d_%U.bak';
backup as compressed backupset database;
backup current controlfile;
release channel c1;
   release channel c2;
}
问题:以下备份与上面的有什么不同?全备的情况下还需要单独备份controlfile吗?
{
configure controlfile autobackup on;
set controlfile autobackup format for device type disk to '/backup/CONTROLFILE.ORCL.%F'; allocate channel c1 device type disk format '/backup/robt_%d_%U.bak';
allocate channel c2 device type disk format '/backup/robt_%d_%U.bak'; backup as compressed backupset database;
backup current controlfile; release channel c1;
release channel c2;
  
}
I、BACKUP命令
压缩备份
默认值压缩
RMAN> show compression algorithm;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name JUAN are:
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
设置为高压缩比
RMAN> configure compression algorithm 'HIGH';
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE COMPRESSION ALGORITHM 'HIGH' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
new RMAN configuration parameters are successfully stored
设置为其他压缩比
RMAN> configure compression algorithm 'MEDIUM';
RMAN> configure compression algorithm 'LOW';
RMAN> configure compression algorithm 'BASIC'; maxpiecesize和maxsetsize之间的关系区别
maxpiecesize限定单个备份片的大型,对备份的整体大小没影响.
另一方面maxsetsize可以限定备份的整体大小,如果备份的数据库产生的容量大小超过备份片的最大size则备份就会失败。
设置备份集大小不超过50m
backup maxsetsize=50m tag='backup test' 备份到特定设备
backup database device type disk;
backup database device type sbt; 修改备份集的保留策略
forever: 表示永久保存除非手工删除
backup database keep forever;
untiltime字符串:保留时间
backup database format 'C:\ORACLE\backup\%U' keep until time='sysdate+180' tag Keep_backup
以下示例将建立归档备份并将其分配到一个称为gold_copy的还原点:
backup database format 'C:\ORACLE\backup\%U' keep until time ='sysdate+180' restore point gold_copy;
J、set 命令
set echo 在消息日志中显示RMAN命令
set dbid 指定一个数据库的数据库标识符
set newname 用于执行表空间时间点恢复或数据库复制操作(简单先略过)
set maxcorrput for datafile 定义RMAN操作失败前允许的数据库块损坏的最大目录
例子:
如果要执行一个为每个备份片创建两个副本的备份操作,并且允许数据文件3的最大损坏数为10,则可以是使用:
run{
set maxcorrput for datafile 3 to 10;
set backup copies = 2;
backup database;
}

-----end-------