[20190515]热备份模式与rman冲突.txt

[20190515]热备份模式与rman冲突.txt

--//别人的系统做dg时打开热备份模式,忘记关闭,做rman备份时报错。做一个记录。
--//实际上也怪自己,实施时没有讲清楚。通过例子说明:

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> alter database begin backup;
Database altered.

--//实际上这样做dg,如果数据库不大,对于文件系统的数据库还是很快的,特别目录结构一样的情况。
--//为了避免输入口令,最好先做ssh相互认证。
--//cd /mnt/ramdisk/book
--//ls -1 *.dbf| xargs -I{} -P 4 scp {} oracle@192.168.100.40:/mnt/ramdisk/book
--//或者
--//scp -r /mnt/ramdisk/book/*.dbf oracle@192.168.100.40:/mnt/ramdisk/book/

2.主库做rman备份:
SYS@book> select * from v$backup;
FILE# STATUS     CHANGE# TIME
----- ------ ----------- -------------------
    1 ACTIVE 15677701496 2019-05-21 08:40:13
    2 ACTIVE 15677701496 2019-05-21 08:40:13
    3 ACTIVE 15677701496 2019-05-21 08:40:13
    4 ACTIVE 15677701496 2019-05-21 08:40:13
    5 ACTIVE 15677701496 2019-05-21 08:40:13
    6 ACTIVE 15677701496 2019-05-21 08:40:13
    7 ACTIVE 15677701496 2019-05-21 08:40:13
    8 ACTIVE 15677701496 2019-05-21 08:40:13
    9 ACTIVE 15677701496 2019-05-21 08:40:13
   10 ACTIVE 15677701496 2019-05-21 08:40:13
   11 ACTIVE 15677701496 2019-05-21 08:40:13
   12 ACTIVE 15677701496 2019-05-21 08:40:13
   13 ACTIVE 15677701496 2019-05-21 08:40:13
13 rows selected.

RMAN> backup database format '/home/oracle/backup/book_%U';

Starting backup at 2019-05-21 08:42:53
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=17 device type=DISK
RMAN-06554: WARNING: file 1 is in backup mode
RMAN-06554: WARNING: file 2 is in backup mode
RMAN-06554: WARNING: file 3 is in backup mode
RMAN-06554: WARNING: file 4 is in backup mode
RMAN-06554: WARNING: file 5 is in backup mode
RMAN-06554: WARNING: file 6 is in backup mode
RMAN-06554: WARNING: file 7 is in backup mode
RMAN-06554: WARNING: file 8 is in backup mode
RMAN-06554: WARNING: file 9 is in backup mode
RMAN-06554: WARNING: file 10 is in backup mode
RMAN-06554: WARNING: file 11 is in backup mode
RMAN-06554: WARNING: file 12 is in backup mode
RMAN-06554: WARNING: file 13 is in backup mode
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00002 name=/mnt/ramdisk/book/sysaux01.dbf
input datafile file number=00003 name=/mnt/ramdisk/book/undotbs01.dbf
input datafile file number=00001 name=/mnt/ramdisk/book/system01.dbf
input datafile file number=00005 name=/mnt/ramdisk/book/example01.dbf
input datafile file number=00004 name=/mnt/ramdisk/book/users01.dbf
input datafile file number=00007 name=/mnt/ramdisk/book/undotbs02.dbf
input datafile file number=00008 name=/mnt/ramdisk/book/undotbs03.dbf
input datafile file number=00006 name=/mnt/ramdisk/book/tea01.dbf
input datafile file number=00009 name=/mnt/ramdisk/book/T01.dbf
input datafile file number=00010 name=/mnt/ramdisk/book/T02.dbf
input datafile file number=00011 name=/mnt/ramdisk/book/T03.dbf
input datafile file number=00012 name=/mnt/ramdisk/book/T04.dbf
input datafile file number=00013 name=/mnt/ramdisk/book/T05.dbf
channel ORA_DISK_1: starting piece 1 at 2019-05-21 08:42:53
channel ORA_DISK_1: finished piece 1 at 2019-05-21 08:43:08
piece handle=/home/oracle/backup/book_2pu2394d_1_1 tag=TAG20190521T084253 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2019-05-21 08:43:09
channel ORA_DISK_1: finished piece 1 at 2019-05-21 08:43:11
piece handle=/home/oracle/backup/book_2qu2394s_1_1 tag=TAG20190521T084253 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 2019-05-21 08:43:11
--//注:实际上也备份成功了,不过最好不要这样.

$ ls -l /home/oracle/backup/book_2pu2394d_1_1
-rw-r----- 1 oracle oinstall 2380603392 2019-05-21 08:42:59 /home/oracle/backup/book_2pu2394d_1_1

3.解决很简单,关闭热备份模式就ok了:
SYS@book> alter database end backup;
Database altered.

SYS@book> select * from v$backup;
       FILE# STATUS                  CHANGE# TIME
------------ ------------------ ------------ -------------------
           1 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           2 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           3 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           4 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           5 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           6 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           7 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           8 NOT ACTIVE          15677701496 2019-05-21 08:40:13
           9 NOT ACTIVE          15677701496 2019-05-21 08:40:13
          10 NOT ACTIVE          15677701496 2019-05-21 08:40:13
          11 NOT ACTIVE          15677701496 2019-05-21 08:40:13
          12 NOT ACTIVE          15677701496 2019-05-21 08:40:13
          13 NOT ACTIVE          15677701496 2019-05-21 08:40:13

4.另外的问题:
--//实际上打开热备份并不是"冻结"文件头,仅仅冻结scn.实际上你如果发alter system checkpoint;还是会更新文件头的.
--//并且oracle实际上恢复从这个scn(alter system checkpoint命令的)开始恢复:
--//可以参考链接:http://blog.itpub.net/267265/viewspace-2152909/=>[20180413]热备模式相关问题2.txt

SYS@book> alter tablespace users begin backup ;
Tablespace altered.

SYS@book> SELECT file#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME,CREATION_CHANGE#  , RESETLOGS_CHANGE#,status, CHECKPOINT_COUNT,fuzzy,name,tablespace_name  FROM v$datafile_header where file# in (1,4);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     CREATION_CHANGE# RESETLOGS_CHANGE# STATUS  CHECKPOINT_COUNT FUZ NAME                           TABLESPACE_NAME
----- ------------------ ------------------- ---------------- ----------------- ------- ---------------- --- ------------------------------ ---------------
    1        15677702312 2019-05-21 08:47:46                7            925702 ONLINE             13491 YES /mnt/ramdisk/book/system01.dbf SYSTEM
    4        15677702482 2019-05-21 08:50:00            16143            925702 ONLINE             13491 YES /mnt/ramdisk/book/users01.dbf  USERS

--//CHECKPOINT_CHANGE#发生变化.
SYS@book> alter system checkpoint ;
System altered.

SYS@book> SELECT file#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME,CREATION_CHANGE#  , RESETLOGS_CHANGE#,status, CHECKPOINT_COUNT,fuzzy,name,tablespace_name  FROM v$datafile_header where file# in (1,4);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     CREATION_CHANGE# RESETLOGS_CHANGE# STATUS  CHECKPOINT_COUNT FUZ NAME                           TABLESPACE_NAME
----- ------------------ ------------------- ---------------- ----------------- ------- ---------------- --- ------------------------------ ---------------
    1        15677702587 2019-05-21 08:51:37                7            925702 ONLINE             13492 YES /mnt/ramdisk/book/system01.dbf SYSTEM
    4        15677702482 2019-05-21 08:50:00            16143            925702 ONLINE             13492 YES /mnt/ramdisk/book/users01.dbf  USERS
--//file#=1的 CHECKPOINT_CHANGE#发生变化,但是file#=4的CHECKPOINT_CHANGE#没有变化.CHECKPOINT_COUNT也是增加的.

select 15677702587,trunc(15677702587/power(2,32)) scn_wrap,mod(15677702587,power(2,32))  scn_base from dual
 15677702587     SCN_WRAP     SCN_BASE SCN_WRAP16 SCN_BASE16
------------ ------------ ------------ ---------- ----------
 15677702587            3   2792800699          3   a676c1bb

select 15677702482,trunc(15677702482/power(2,32)) scn_wrap,mod(15677702482,power(2,32))  scn_base from dual
 15677702482     SCN_WRAP     SCN_BASE SCN_WRAP16 SCN_BASE16
------------ ------------ ------------ ---------- ----------
 15677702482            3   2792800594          3   a676c152

BBED> p /d dba 4,1 kcvfh.kcvfhbcp.kcvcpscn
struct kcvcpscn, 8 bytes                    @152
   ub4 kscnbas                              @152      2792800699
   ub2 kscnwrp                              @156      3
--//发出alter system checkpoint时在热备分模式要更新这里的信息.

BBED> p /d dba 4,1 kcvfh.kcvfhckp.kcvcpscn
struct kcvcpscn, 8 bytes                    @484
   ub4 kscnbas                              @484      2792800594
   ub2 kscnwrp                              @488      3
--//文件头scn

SYS@book> alter system checkpoint ;
System altered.

SYS@book> SELECT file#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME,CREATION_CHANGE#  , RESETLOGS_CHANGE#,status, CHECKPOINT_COUNT,fuzzy,name,tablespace_name  FROM v$datafile_header where file# in (1,4);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     CREATION_CHANGE# RESETLOGS_CHANGE# STATUS  CHECKPOINT_COUNT FUZ NAME                           TABLESPACE_NAME
----- ------------------ ------------------- ---------------- ----------------- ------- ---------------- --- ------------------------------ ---------------
    1        15677703057 2019-05-21 08:58:26                7            925702 ONLINE             13493 YES /mnt/ramdisk/book/system01.dbf SYSTEM
    4        15677702482 2019-05-21 08:50:00            16143            925702 ONLINE             13493 YES /mnt/ramdisk/book/users01.dbf  USERS

BBED> p /d dba 4,1 kcvfh.kcvfhbcp.kcvcpscn
struct kcvcpscn, 8 bytes                    @152
   ub4 kscnbas                              @152      2792801169
   ub2 kscnwrp                              @156      3

BBED> p /d dba 4,1 kcvfh.kcvfhckp.kcvcpscn
struct kcvcpscn, 8 bytes                    @484
   ub4 kscnbas                              @484      2792800594
   ub2 kscnwrp                              @488      3

select 15677703057,trunc(15677703057/power(2,32)) scn_wrap,mod(15677703057,power(2,32))  scn_base from dual
 15677703057     SCN_WRAP     SCN_BASE SCN_WRAP16 SCN_BASE16
------------ ------------ ------------ ---------- ----------
 15677703057            3   2792801169          3   a676c391

--//kcvfh.kcvfhbcp.kcvcpscn的信息发生了变化.这样恢复实际上从2792801169开始恢复需要读取的归档大大减少.

转载于:https://www.cnblogs.com/lfree/p/10910950.html

RMAN学习测试整理1 20121219 by Apollo 一、 Oracle数据库的备份分为物理备份和逻辑备份。今天测试整理下物理备份Rman,也就是oracle的恢复管理器(Recovery Manager)。 毕竟逻辑备份是不能实现时间点恢复的,所以生产数据库肯定用物理备份来保证灾难时能够恢复。 二、 Rman备份的前提条件:数据库需要运行在归档模式下 (1) 查看oracle数据库的archivelog mode的方式 sqlplus / as sysdba ##需要as sysdba登录,不然即使有dba权限也fail archive log list ##方式一 select name,log_mode from v$database; ##方式二 (2) 由非归档切换到归档模式 shutdown immediate startup mount alter database archivelog; alter database open; (3) 反之由归档切换到非归档模式 shutdown immediate startup mount alter database noarchivelog; ##切换到非归档 alter database open; (4) 其实oracle安装好后会默认运行在非归档模式下(安装时有开关勾选),其配置文件为init.ora,可以通过修改init.ora来调整。 sqlplus oracle/oracle show parameter spfile ##spfile和init.ora一般在一个路径下 exit cd $ORACLE_HOME/dbs vi init.ora (5) init.ora关于archive的参数 log_archive_start = true 启动自动归档 log_archive_dest = disk$rdbms:[oracle.archive] 归档日志路径 log_archive_format = “T%TS%S.ARC” 归档日志格式 三、 启用数据库备份模式 (1) 查看当前情况 select * from v$backup; select * from v$log select * from v$datafile_header (2) 整库开启备份模式alter database begin backup; 哦,忘记开启归档了。奔3的人老了呀。(非一致性备份必须开启归档) (3) 指定某个表空间开启备份模式 alter tablespace tablespace_name begin backup; 先建个tbs_apollo_backup的表空间吧: 靠,/opt下剩余只有649M,先给个200M吧,回头再从根目录划分一些出来。 create tablespace tbs_apollo_backup datafile '/opt/oracle/oradata/orcl/tbs_apollo_backup.dbf' size 200M 因为之前做了database begin backup,所有表空间都处于backup状态了。将database的backup停掉重新指定tablespace备份。 再次查看各个tablespace的backup情况 select a.tablespace_name,b.status as backup_status,a.file#, a. ts#,a.recover,a.status as on_off_status,a.name from v$datafile_header a ,v$backup b where a.file# = b.file# 四、 RMAN相关使用 1、 RMAN连接到Target Database (1) 分步进行 rman nocatlog(nocatalog会将相关备份信息即元数据放在Contronfile里面) connect target / (不像DB2那样connect to,就connect就OK了) (2) 一步到位 rman nocatlog target system/manger 权限不足,使用rman连接target的话需要sysdba权限而不是dba。 I 查看是否拥有sysdba权限 select * from v$pwfile_users; 备注:常用的查看权限视图 select * from dba_users where username='SYSTEM' select * from dba_role_privs where grantee='SYSTEM'; select * from v$pwfile_users; ii 用sys用户授予system用户sysdba权限(其实是一个角色) iii 用system用户再次连接target database (3) 可以在rman里面停起数据库(停库状态需要隐式登录,不能带网络服务名) (4) DataFile tbs_apollo_backup.dbf异常了,先解决下 alter database datafile ‘datafile_name’ offline; recover datafile ‘datafile_name’ alter database datafile ‘datafile_name’ online; alter database open; 再次在Rman里面操作停起数据库(sql_statement用单引号或双引号括起) 2、 List命令查看备份集(在数据库控制文件或恢复目录中查询备份的历史信息的方法) (1) 查看数据库所有的备份集合 list backupset; (2) 查看指定TableSpace的备份 list copy of tablespace “TBS_APOLLO_BACKUP” list backupset of tablespace "TBS_APOLLO_BACKUP"; (3) 查看指定DataFile的备份 list backupset of datafile "/opt/oracle/oradata/orcl/users01.dbf"; (4) 查看备份汇总 list backup summary; (5) 3、 Report命令报告备份情况(判断数据库当前可恢复状态和提供数据库备份的信息) (1) report schema;(报告数据库结构) (2) report need backup;(报告需要备份的内容) (3) report obsolete(Which backups can be deleted ?)报告过期备份 (4) report unrecoberable(Which files are unrecoverable ?) 4、 CONFIGURE配置Rman参数 (1) show all命令查看所有配置 (2) CONFIGURE命令修改配置 ControlFile太重要了,一般都设置备份它 五、 准备下数据库对象 1、 临时表空间 create temporary tablespace apollo_temp tempfile ‘/opt/app/oracle/oradata/orcl_apollo/Apollo_temp.dbf’ size 200m autoextend on next 50m maxsize 2048m extent management local; 2、 创建数据表空间 create tablespace apollo_data logging datafile ‘/opt/app/oracle/oradata/orcl_apollo/apollo_data.dbf’ size 1g autoextend on next 50m maxsize 4096m extent management local; 备注:引用的字符串如这里的单引号在copy时异常。 3、 创建用户并指定表空间 create user rman identified by rman default tablespace apollo_data temporary tablespace apollo_temp; 4、 给用户授权 grant connect ,resource to rman; 5、 其他如table、index、function、procedure、view、sequence等。 六、 Rman备份的对象(主要包括Database、Tablespace、Datafile、Controlfile和Archivelog) Rman不能备份口令文件和初始化参数文件(也就是前面提到的init.ora)。 1、 备份DataBase backup database; backup database是一次全备份,其实省略的很多参数,相当于用的默认的。而备份好的备份集放在哪里呢? 在sqlplus里面执行show parameter db_recovery_file_dest; 查看备份后情况: list backupset; 2、 备份Tablespace backup tablespace apollo_data; RMAN-06554: WARNING: file 5 is in backup mode 该警告提示file5也就是这个表空间的备份其实已经存在了,因为刚做过full backup了嘛。 查看备份集合新增了3和4两个备份集 3、 备份Datafile backup datafile '/opt/app/oracle/oradata/orcl_apollo/system01.dbf'; 也可backup datafile 4 这里的4对应第四个datafile,可由report schema报告得知是:user01.dbf 测试备份的有点多,那么可以删除一些过期的备份。 (1) 通过删除备份集删除 (2) 通过删除备份片删除 (3) 当然直接删除全部过期更加直接 delete obsolete; (4) 删除后无过期备份存在 4、 备份Controlfile (1) 自动备份控制文件如前面示例show all后修改的参数 CONFIGURE CONTROLFILE AUTOBACKUP ON; 那么每次备份会自动备份控制文件。 (2) 手动备份控制文件 backup current controlfile; (3) 列出备份过的controlfile list backup of controlfile; 有14、15、16三个备份集里面有,那么肯定有过期的了,再验证下 report obsolete; 14和15作为过期的报告出来,16为最新的备份。 5、 备份Archivelog (1) 备份数据库时使用参数plus archivelog自动备份 backup database plus archivelog;(我们清空所有备份delete backup后重头来) (2) 手工备份 backup archivelog all; 6、 备份spfile (1) 备份时自动备份spfile CONFIGURE CONTROLFILE AUTOBACKUP ON在备份控制文件时页备份spfile (2) 手动备份 备份的spfile同样放到backupset目录下面 7、 七、 恢复数据库 1、 模拟datafile丢失或损坏进行恢复 cd $ORACLE_BASE/oradata/orcl_apollo mv ./apollo_data.dbf /home/oracle/backup/apollo_data.dbf 重启数据库看看 看来破坏了datafile正常停库都不行,需要abort才行。 起库就更不用说了 那么开始真正恢复吧,思路是这样的:由报错可见起库的实例nomount和控制文件的mount都成功了,但是在open database时报错,就需要在mount和open之间恢复。先将datafile置于offline状态,restore和recover后在online,最后在open database就OK了。 (1) 将数据库处于mount模式 (2) 将datafile 1 (即system01.dbf)置于offline (3) restore和recover(所有的铺垫都是为了这两步) restore datafile 1; recover datafile 1; (4) 将datafile 1 置于online (5) alter database open; alter database datafile 2 offline; 2、 模拟tablespace丢失或损坏进行恢复 (1) backup tablespace apollo_data (2) drop tablespace apollo_data 提示表空间非空,查看下里面的内容,是建的一些测试表。 select * from dba_segments where tablespace_name='APOLLO_DATA' and segment_name=’ AMIS_IC_MEMBER’ ; 没关系那就加上including contents选项删除吧 (3) 停库起到mount模式 (4) 进入sqplus将表空间offline alter tablespace apollo_data offline; (5) 进入rman使用restore和recover恢复表空间 restore tablespace apollo_data; recover tablespace apollo_data; 备注:从(4)、(5)开始的执行都没有成功,因为drop表空间后即使在系统表里 面也不再有改表空间的信息,模拟失败待后续研究! (1) 在rman里面备份表空间apollo_data (2) 模拟表空间里面的对象破坏进行恢复吧 select * from dba_segments where tablespace_name='APOLLO_DATA' and (3) alter tablespace apollo_data offline; (4) restore tablespace apollo_data; (5) recover tablespace apollo_data (6) alter tablespace apollo_data online; (7) apollo_data.已经恢复 备注:其实datafile和tablespace的恢复步骤是一样的。 3、 模拟controlfile丢失或损坏进行恢复 (1) 丢失controlfile (2) startup nomount; (3) restore controlfile from $BACKUP_CONTROLFILE_PATH; 如果开启CONFIGURE CONTROLFILE AUTOBACKUP ON;就可以 restore controlfile from autobackup; (4) alter database mount; (5) recover database; (6) alter database open resetlog; 4、 模拟spfile丢失或损坏进行恢复 (1) startup nomount; (2) set dbid 1330128391; (3) store spfile from autobackup; (4) shutdown immediate; (5) set dbid 1330128391; (6) startup; 5、 模拟整个database恢复 (1) startup nomount; (2) restore controlfile form autobakcup; (3) alter database mount; (4) restore database; (5) recover database; (6) alter database open resetlogs 6、 模拟redolog file恢复(其实下面操作在sqlplus里面,不在rman执行) (1) shutdown immediate; (2) startup mount; (3) recover database until cancel; (4) alter database resetlog;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值