1. RMAN环境概述
RMAN(Recovery Manager)是一个Oracle数据库客户端,它在数据库上执行备份和恢复任务和自动管理备份策略。它大大地简化了备份,还原(restore)和恢复(recover)数据库文件。
RMAN环境包括在备份数据时扮演各个角色的工具和数据库。RMAN环境至少包括以下组件:
1)目标(target)数据库,RMAN使用TARGET关键字连接的数据库。目标数据库是RMAN执行备份和恢复 *** 作的数据库。RMAN总是在数据库的控制文件中维护关于它对数据库的 *** 作的元数据(metadata)。RMAN元数据也称为RMAN仓库(repository)。
2)RMAN客户端,Oracle数据库的可执行文件。用来解析命令,指引服务器会话来执行这些命令,和在目标数据库的控制文件中记录它的活动。RMAN可执行程序自动与数据库一起安装,通常如同其他数据库可执行文件一样位于相同的目录。例如,在Linux上RMAN客户端位于$ORACLE_HOME/bin。
有些环境使用以下可选的组件:
3)快速恢复区域(fast recovery area),数据库可以存储和管理与备份和恢复相关的文件的磁盘位置。可以使用初始化参数DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE设置快速恢复区域的位置和大小。
4)恢复目录(recovery catalog),一个单独的数据库模式(schema),用来记录RMAN对一个或多个目标数据库的活动。如果控制文件丢失,恢复目录保留的RMAN仓库元数据在控制文件丢失后让还原和恢复变得更容易。数据库可能会覆盖控制文件中的旧记录,但RMAN会在恢复目录中永久地维护记录直到用户删除它们为止。
5)介质管理软件
RMAN需要应用程序来与顺序介质设备(sequential media device)比如磁带库交互。介质管理器在备份和恢复中控制这些设备,管理装载(load),标记(label),和卸载(unload)介质。介质管理设备有时被称为SBT(system backup to tape)设备。
这个章节讲解如何使用RMAN来做最基本的配置,不涉及恢复目录(recovery catalog)或介质管理器(media manager)。
oracle中可以利用 rman 还原归档日志到某个时间点:1、理解还原与恢复
恢复(recover): 将备份之后的归档日志apply到数据库,也就根据归档日志的事务将数据库刷新到特定或最新状态(通常在还原之后 *** 作)。对于归
档日志中那些已提交的事务进行前滚,未提交的事务进行回滚。
还原归档日志: 还原归档日志是位于还原数据库与恢复数据库之间的这么一个过程。它会将那些在备份归档日志时使用delete [all] input方式
删除的归档日志还原到缺省的归档位置。在还原数据库之后,如果要做recover,也就是作介质恢复那就需要用到归档日志。那还原之后进行
recover需要的归档日志在哪里呢?归档日志在指定的归档路径那里,那到底有没有呢?如果有,还原时出现提示,归档日志已经在指定位置。
如果没有,但是备份的归档备份集那里有,也行啊。备份集里包含备份片,也就是打包了归档日志。那既然打包就要解包,解包到缺省路径
或指定路径。这就是还原归档日志。
--演示环境
--为了较好的模拟还原归档日志,我们仅仅使用了一个特定的数据文件进行copy方式备份,然后备份归档日志(备份时删除归档日志)
--接下来破坏数据文件,还原数据文件,还原归档日志文件,恢复日志文件。
[oracle@linux3 ~]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
[oracle@linux3 ~]$ sqlplus -V
SQL*Plus: Release 11.2.0.1.0 Production
a、备份数据文件及归档日志
RMAN>list backup of archivelog all --->列出当前数据库已经备份的归档日志
specification does not match any backup in the repository
RMAN>list backupset --->列出当前数据库已存在的备份集
specification does not match any backup in the repository
SQL>select username,default_tablespace from dba_users where username='SCOTT' -->查看用户scott所在的表空间及数据文件
要求:本地已有生产数据库prod,制定rman备份策略,将数据备份到制定目录/oracle/rman_bk下。现在需要做恢复测试,验证备份出来的数据是有效的。且不影响原有的生产数据库prod。解决思路:在备份出来的数据中(控制文件),包含了数据库名,数据文件,redo log等文件的存放路径,如果在本地直接做恢复,将和原有的数据库****,因此,需要修改这些信息,将备份出来的数据恢复到另外一个数据库中。具体步骤如下:
1.创建新数据库数据文件及跟踪文件存放目录
-bash-2.05b$mkdir -p /oracle/oradata/test
-bash-2.05b$mkdir -p /oracle/admin/test/bdump
-bash-2.05b$mkdir -p /oracle/admin/test/udump
-bash-2.05b$mkdir -p /oracle/admin/test/cdump
2.登录到生产数据库。查看当前数据文件信息:
-bash-2.05b$ sqlplus '/ as sysdba'
SQL>select file#,name from v$datafile
FILE# NAME
---------- --------------------------------------------------
1 /oracle/oradata/test/system01.dbf
2 /oracle/oradata/test/undo01.dbf
3 /oracle/oradata/test/users01.dbf
3.利用rman更改数据文件存放路径并restore到新的路径
run {
set newname for datafile 1 to '/oracle/oradata/test/system01.dbf'
set newname for datafile 2 to '/oracle/oradata/test/undo01.dbf'
set newname for datafile 3 to '/oracle/oradata/test/users01.dbf'
restore datafile 1
restore datafile 2
restore datafile 3
}
4。重建控制文件
CREATE CONTROLFILE REUSE set DATABASE "test" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/oracle/oradata/test/redo01.log' SIZE 10M,
GROUP 2 '/oracle/oradata/test/redo02.log' SIZE 10M,
GROUP 3 '/oracle/oradata/test/redo03.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/test/system01.dbf',
'/oracle/oradata/test/undo01.dbf',
'/oracle/oradata/test/users01.dbf'
CHARACTER SET ZHS16GBK
5.打开数据库
SQL>alter database open resetlogs
backup archivelog all delete input format '/rman/rman_%t_%s_%p.arc'
with a as
(select rownum p from dual connect by level<=21)
select
7 + CEIL(
(7 + CEIL(
(7 + CEIL(p/3))
/3))
/3)
from a
7+CEIL((7+CEIL((7+CEIL(p/3))/3))/3
本答案来自于互联网,仅供参考学习作用
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)