(一)、创建恢复目录
1、创建恢复目录数据库
#mkdir -p /u01/app/oracle/oradata/rmandb
#chown -R oracle /u01/app/oracle/oradata/rmandb
[
[email?protected] ~]#su - oracle
[
[email?protected] ~]$sqlplus / as sysdba
SQL> create tablespace rmant datafile ‘/u01/app/oracle/oradata/rmandb/rmants.ora‘ size 20M ;
表空间已创建。
2、在恢复目录数据库中创建RMAN 用户并授权 SQL> create user c##rmant identified by rmant default tablespace rmant temporary tablespace temp quota unlimited on rmant; 用户已创建。 SQL> grant connect,resource to c##rmant; 授权成功。 SQL> grantrecovery_catalog_owner to c##rmant; 授权成功。
3、在恢复目录数据库中创建恢复目录 [[email?protected]~]$rman catalog c##rmant/rmant 恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 19:59:31 2018 Copyright (c) 1982,2017,Oracle and/or its affiliates. All rights reserved. 连接到恢复目录数据库 RMAN> create catalog; 恢复目录已创建 RMAN> quit 恢复管理器完成。
(二)、注册目标数据库到恢复目录br/>1、进入RMAN环境 [[email?protected]~]$rman 恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 20:02:26 2018 Copyright (c) 1982,Oracle and/or its affiliates. All rights reserved.
2、连接目标数据库 RMAN> connect target sys/oracle; 已连接到目标数据库: ORCL (DBID=1503444987) 3、连接恢复目录数据库 RMAN> connect catalog c##rmant/rmant; 连接到恢复目录数据库 4、注册 RMAN> register database; 注册在恢复目录中的数据库 正在启动恢复目录的全部重新同步 完成全部重新同步 RMAN> quit 恢复管理器完成。 5.在恢复目录数据库中查看恢复目录里面注册的数据库 [[email?protected]~]$sqlplus c##rmant/rmant SQLPlus: Release 12.2.0.1.0 Production on 星期五 11月 16 20:05:20 2018 Copyright (c) 1982,2016,Oracle. All rights reserved. 上次成功登录时间: 星期五 11月 16 2018 20:03:33 +08:00 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> select count() from rc_database; COUNT(*) 1 (三)、在归档模式下备份和恢复 1.将数据库设置为归档模式,数据库实例要处于启动状态,数据库已经加载或打开状态 SQL> conn sys/oracle as sysdba; 已连接。 SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 1593835520 bytes Fixed Size 8793256 bytes Variable Size 1023411032 bytes Database Buffers 553648128 bytes Redo Buffers 7983104 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> alter database open; 数据库已更改。 2、首先修改快闪恢复区的参数 SQL> show parameter db_recovery_file_dest NAME TYPE
VALUE db_recovery_file_dest string db_recovery_file_dest_size big integer 0 SQL> alter system setdb_recovery_file_dest_size=2g; 系统已更改。 3、创建一个表空间和表 SQL> create tablespace tab1 datafile ‘/u01/app/oracle/oradata/rmandb/tab1.dbf‘ size 10m; 表空间已创建。 4、创建表tab1 SQL> create table tab1(id int); 表已创建。 5、向表tab1中添加记录 SQL> insert into tab1 values(1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> quit 从 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 断开 5、使用数据库用户sys登录RMAN [[email?protected]~]$rman target sys/oracle 恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 20:15:04 2018 Copyright (c) 1982,Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (DBID=1503444987) 6、备份整个数据库到快闪区 RMAN> backup database; 从位于 16-11月-18 的 backup 开始 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=31 设备类型=DISK 通道 ORA_DISK_1: 正在启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集内的数据文件 输入数据文件,文件号 = 00001 名称 = /u01/app/oracle/oradata/orcl/system01.dbf 输入数据文件,文件号 = 00003 名称 = /u01/app/oracle/oradata/orcl/sysaux01.dbf 输入数据文件,文件号 = 00004 名称 = /u01/app/oracle/oradata/orcl/undotbs01.dbf 输入数据文件,文件号 = 00013 名称 = /opt/oracle/oradata/rmandb/rmants.ora 输入数据文件,文件号 = 00014 名称 = /u01/app/oracle/oradata/rmandb/rmants.ora 输入数据文件,文件号 = 00015 名称 = /u01/app/oracle/oradata/rmandb/tab1.dbf 输入数据文件,文件号 = 00007 名称 = /u01/app/oracle/oradata/orcl/users01.dbf 通道 ORA_DISK_1: 正于 16-11月-18 启动段 1 通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1 标记 = TAG20181116T201551 注释 = NONE 通道 ORA_DISK_1: 备份集完成,用时: 00:00:55 通道 ORA_DISK_1: 正在启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集内的数据文件 输入数据文件,文件号 = 00010 名称 = /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf 输入数据文件,文件号 = 00009 名称 = /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf 输入数据文件,文件号 = 00011 名称 = /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf 输入数据文件,文件号 = 00012 名称 = /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf 通道 ORA_DISK_1: 正于 16-11月-18 启动段 1 通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/02ticu5f_1_1 标记 = TAG20181116T201551 注释 = NONE 通道 ORA_DISK_1: 备份集完成,用时: 00:00:25 通道 ORA_DISK_1: 正在启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集内的数据文件 输入数据文件,文件号 = 00006 名称 = /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf 输入数据文件,文件号 = 00005 名称 = /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf 输入数据文件,文件号 = 00008 名称 = /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf 通道 ORA_DISK_1: 正于 16-11月-18 启动段 1 通道 ORA_DISK_1: 完成了于 16-11月-18 启动段 1 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/03ticu68_1_1 标记 = TAG20181116T201551 注释 = NONE 通道 ORA_DISK_1: 备份集完成,用时: 00:00:26 在 16-11月-18 完成了 backup 从位于 16-11月-18 的 Control File and SPFILE Autobackup 开始 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-1503444987-20181116-00 注释 = NONE 在 16-11月-18 完成了 Control File and SPFILE Autobackup RMAN> quit 恢复管理器完成。 7、删除tab1表 SQL> drop table tab1;(记住删除时间) Table TAB1已删除。 SQL> commit; 提交完成。 8、恢复表 ①在数据库为mount状态时恢复数据库 SQL> shutdown immediate; 数据库已关闭。 数据库已卸装。 ORACLE 例程关闭。 SQL> startup mount; ORACLE 实例已启动 Total System Global Area 1593835520 bytes Fixed Size 8793256 bytes Variable Size 1023411032 bytes Database Buffers 553648128 bytes Redo Buffers 7983104 bytes 数据库已装载。 SQL> quit 已从Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production断开连接 [[email?protected]~]$rman target sys/oracle; 恢复管理器: Release 12.2.0.1.0 - Production on 星期五 11月 16 20:23:39 2018 Copyright (c) 1982,Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (DBID=1503444987,未打开) RMAN> restore database; 从位于 16-11月-18 的 restore 开始 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=257 设备类型=DISK 正在跳过数据文件 5; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf 正在跳过数据文件 6; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf 正在跳过数据文件 8; 已还原到文件 /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf 正在跳过数据文件 9; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf 正在跳过数据文件 10; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf 正在跳过数据文件 11; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf 正在跳过数据文件 12; 已还原到文件 /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf 通道 ORA_DISK_1: 正在开始还原数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 通道 ORA_DISK_1: 将数据文件 00001 还原到 /u01/app/oracle/oradata/orcl/system01.dbf 通道 ORA_DISK_1: 将数据文件 00003 还原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf 通道 ORA_DISK_1: 将数据文件 00004 还原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf 通道 ORA_DISK_1: 将数据文件 00007 还原到 /u01/app/oracle/oradata/orcl/users01.dbf 通道 ORA_DISK_1: 将数据文件 00013 还原到 /opt/oracle/oradata/rmandb/rmants.ora 通道 ORA_DISK_1: 将数据文件 00014 还原到 /u01/app/oracle/oradata/rmandb/rmants.ora 通道 ORA_DISK_1: 将数据文件 00015 还原到 /u01/app/oracle/oradata/rmandb/tab1.dbf 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1 通道 ORA_DISK_1: 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01ticu3n_1_1 标记 = TAG20181116T201551 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成,用时: 00:01:16 在 16-11月-18 完成了 restore RMAN> recover database until time "to_date(‘2018-11-16 20:20:00‘,‘yy-mm-dd hh24:mi:ss‘)"; 从位于 16-11月-18 的 recover 开始 使用通道 ORA_DISK_1 正在开始介质的恢复 介质恢复完成,用时: 00:00:01 在 16-11月-18 完成了 recover RMAN> alter database open resetlogs; 已处理语句 RMAN> quit 恢复管理器完成。 [[email?protected]~]$sqlplus sys/oracle as sysdba SQLPlus: Release 12.2.0.1.0 Production on 星期五 11月 16 20:29:53 2018 Copyright (c) 1982,Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> select from tab1; ID 1 9、恢复表空间 说明:如果只丢失了特定表空间中的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间可以在不关闭数据库的情况下进行,只需要将表空间offline Sql>create tablespace tab2 Datafile‘/u01/app/oracle/oradata/rmandb/tab2.dbf’ size 10m; sql>quit; $rman target sys/oracl rman>backup tablespace tab2; rman>quit $mv/u01/app/oracle/oradata/rmandb/tab2.dbf /u01/app/oracle/oradata/rmandb/tab2.dbf.bak(模拟表空间数据文件丢失) $rman target sys/oracle rman>run{ sql ‘alter tablespace tab2 offline immediate‘; restore tablespace tab2; recover tablespace tab2; sql ‘alter tablespace tab2 online‘; } rman>quit $ls /opt/oracle/oradata/rmandb/(观察其下tab2.dbf是不是出现了) 10、数据文件备份与恢复 ①查看当前数据库的所有数据文件 sql>col file_name for a55 sql>set line 100 Sql>select file_id,file_name,tablespace_name from dba_data_files;(记下数据文件的id) ②备份数据文件 sql>quit; $rman target sys/oracle11g rman>backup datafile 6; ③模拟删除数据文件tab6.dbfrman>quit$mv /u01/app/oracle/oradata/rmandb/tab6.dbf /u01/app/oracle/oradata/rmandb/tab6.bak1$rman target sys/oraclerman>run{allocate channel dev1 type disk;sql ‘alter tablespace tab2 offline immediate‘;restore datafile 6;recover datafile 6;sql ‘alter tablespace tab6 online‘;release channel dev1;}rman>quit$ls /opt/oracle/oradata/rmandb/(观察其下tab2.dbf是不是出现了)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|