RMAN in DG

本文介绍RMAN在Oracle Data Guard配置中的使用方法,包括文件管理、配置建议及维护等。强调RMAN的优点,如对主库影响小、快速恢复能力及简化DG管理。
1.Using RMAN to Back Up and Restore Files
  RMAN是有很多好处的,它能够在执行备份操作时对主库产生最小的影响,并且能够快速恢复,还可以简化DG的管理。
1.1 About RMAN File Management in a Data Guard Configuration
  RMAN用恢复目录recovery catalog记录数据库文件的所有文件名。Recovery catalog是数据库的schema,存储一个或多个数据库的元数据metadata,同时它也记录一些位置,online redo logs, standby redo logs, tempfiles, archived redo logs, backup sets, and image copies的创建位置。
  1.1.1 Interchangeability
  备份的可交换性interchangeability of backups.使用RMAN能够在physical db上备份一个表空间然后到primary上进行restore and recover。当然也可以反过来由primary到physical。
  还有个interchangeability,是standby的控制文件和primary的控制文件之间的。可以在primary上restore一个standby的控制文件,亦可以反过来。RMAN能够在restore和recover过程中自动更新数据库文件的文件名。
  1.1.2 Association
  通过DB_UNIQUE_NAME,恢复目录将备份的文件与相应的数据库关联起来。比方说unique name是standby1,那么备份就与standby1相关联。我们可以使用CHANGE...RESET DB_UNIQUE_NAME将备份与另一个数据库相关联。
  1.1.3 Accessibility
  可访问性不同于关联性,在DG环境下,恢复目录只允许数据库访问与其相关联的磁盘备份,但是对于磁带备份,却是所有的数据库都可以访问。如果备份文件没有与任何一个数据库相关联, 那么在恢复目录视图中行所描述的SITE_KEY列值就为NULL。默认情况下,RMAN是把SITE_KEY为NULL的文件与target db相关联的。
  简单描述一下不同类型备份的访问区别。比方有一主一备,分别部署在不同的主机上,同时在主备两库上进行备份操作,都进行两份备份,磁盘和磁带。当使用RMAN连接主库后,就不能使用RMAN的命令操作备库上的磁盘备份文件,但是,RMAN会认为备库上的磁带备份文件是可以合法访问并操作的,这就是区别。
1.2 About RMAN Configuration in a Data Guard Environment
  RMAN是通过DB_UNIQUE_NAME初始化参数来区分同一个DG中的不同数据库的。所以维护DB_UNIQUE_NAME是很重要的一个工作。只有primary才能够在RMAN中明确地使用REGISTER DATABASE命令注册,这一动作可以在用RMAN连接到恢复目录和作为target的primary db后进行。
  使用CONFIGURE命令可以设置RMAN的配置,当这个命令连同FOR DB_UNIQUE_NAME一起使用时,就会设置你所指定的数据库。比方在连接到catalog recovery后,要把BOSTON这个数据库的默认设备类型改成SBT,它的DBID是1625818258。SET DBID命令只在你没有连接到一个数据库作为target时使用。
  RMAN> SET DBID 1625818258;
  RMAN> CONFIGURE DEFAULT DEVICE TAPE TO SBT SET FOR DB_UNIQUE_NAME BOSTON;
1.3 Recommended RMAN and Oracle Database Configurations
  在进行下面的内容之前,先做一些假定。
  A.备库是physical而非logical,并且备份只在physical上面进行;
  B.使用recovery catalog作为RMAN repository,而非只是使用控制文件,这样主库就不会因为备份是在备库上执行的而导致自己没有任何关于备份的信息了;
  C.所有的数据库都是用11g R1;
  D.配置了Oracle Secure Backup或者其他第三方介质管理软件,以使RMAN能够备份至磁带;
  1.3.1 Oracle Configurations on Primary and Standby Databases
  开启闪回恢复区,设置DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE;
  使用spfile参数文件;
  开启闪库;
  1.3.2 RMAN configurations on primary database
大致有以下几步:
1.连接到primary db and recovery catalog
2.配置保留策略RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n days;
3.指定归档删除时间RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;或者RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
4.暂时了解就行Configure the connect string for the primary database and all standby databases, so that RMAN can connect remotely and perform resynchronization when the RESYNC CATALOG FROM DB_UNIQUE_NAME command is used. When you connect to the target instance, you must provide a net service name. This requirement applies even if the other database instance from where the resynchronization is done is on the local host. The target and remote instances must use the same SYSDBA password, which means that both instances must already have password files. You can create the password file with a single password so you can start all the database instances with that password file. For example, if the TNS alias to connect to a standby in Boston is boston_conn_str, you can use the following command to configure the connect identifier for the BOSTON database site:
  RMAN> CONFIGURE DB_UNIQUE_NAME BOSTON CONNECT IDENTIFIER 'boston_conn_str';
Note that the 'boston_conn_str' does not include a username and password. It contains only the Oracle Net service name that can be used from any database site to connect to the BOSTON database site.
After connect identifiers are configured for all standby databases, you can verify the list of standbys by using the LIST DB_UNIQUE_NAME OF DATABASE command.
1.3.3 RMAN Configurations at a Standby Database Where Backups are Performed
连接到备库,把备库作为target,并且连接catalog
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;(这条策略会在备份时,掠过备份那些已经被备份,具有相同SCN并且有效的文件)
RMAN> CONFIGURE CHANNEL DEVICE TYPE SBT PARMS ‘<channel parameters>’;
指定归档日志的删除策略。
1.3.4 RMAN Configurations at a Standby Where Backups Are Not Performed
  The following RMAN configurations are recommended at a standby database where backups are not done:
  Connect RMAN to the standby database as target, and to the recovery catalog.
  Enable automatic deletion of archived logs once they are applied at the standby database:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
 
1.4 Registering and Unregistering Databases in a Data Guard Environment
只有主库才能使用REGISTER DATABASE命令,而备库是自动注册到recovery catalog中的,或者使用CONFIGURE DB_UNIQUE_NAME命令去配置连接标识符(connect identifier)也可以。
要是想注销备库信息的话,使用UNREGISTER DB_UNIQUE_NAME命令。当standby从DG中完全移除时,在你连接到同一DG环境中的别的数据库后,此被移除的standby的信息也将从recovery catalog中移除。但是它的备份还是可以被其他数据库所用的。这些备份可以重新关联到别的库上,只需要使用CHANGE BACKUP RESET DB_UNIQUE_NAME。如果在注销数据库UNREGISTER DB_UNIQUE_NAME命令后还加了INCLUDING BACKUPS选项的话,那么数据库和其备份都会被干掉。
1.5 Performing Backup Maintenance in a Data Guard Environment
在整个DG维护过程中,DB_UNIQUE_NAME都是非常重要的。
1.5.1 changing metadata in the recovery catalog
使用CHANGE...RESET DB_UNIQUE_NAME改变备份文件的关联。当磁盘备份或者归档日志从一个数据库传输到另一个数据库后,在被传输的库上使用CHANGE命令会很有用,因为它能够改变备份文件所关联的DB_UNIQUE_NAME。这样就不需要直接连到传输库上再使用FOR DB_UNIQUE_NAME和RESET DB_UNIQUE_NAME TO选项了。
如果一个数据库的DB_UNIQUE_NAME改变了,那么DG中也需要改变。RMAN的恢复目录在连接到那个库的时候会了解到DB_UNIQUE_NAME的旧值和新值。要在恢复目录中将旧值和新值的信息进行整合,就需要用到RMAN的CHANGE DB_UNIQUE_NAME。如果RMAN没有连接到改变了DB_UNIQUE_NAME值的实例,CHANGE DB_UNIQUE_NAME也能够改变恢复目录中记录的DB_UNIQUE_NAME。比方说,一个数据库的实例参数值从BOSTON_A变成了BOSTON_B,那么就需要在RMAN连接到target和recovery catalog后使用命令再次进行修改:
RMAN> CHANGE DB_UNIQUE_NAME FROM BOSTON_A TO BOSTON_B;
CHANGE命令有很多选项,比方说AVAILABLE, UNAVAILABLE, KEEP, UNCATALOG,比如可以让备份不可用或者移除他们的元数据。
 
<think>首先,用户的问题是:“我想查询OracleRMAN在执行duplicate命令时如何检查进度”。用户想了解在OracleRMAN中执行duplicate命令时如何监控进度。回顾系统级指令:-所有行内数学表达式必须使用$...$格式。-独立公式必须使用$$...$$格式并单独成段。-LaTeX语法正确。-使用中文回答。-生成相关问题。-在回答中引用的段落末尾自然地添加引用标识,例如[^1]。-回答结构清晰,帮助用户逐步解决问题。-参考站内引用,但用户提供的引用是关于Oracle的其他内容,如RMAN、V$MANAGED_STANDBY、事件诊断等。我需要基于这些引用,但用户真正的需求是RMANduplicate的进度检查。用户提供的引用:-[^1]:关于RMAN命令的示例。-[^2]:查询V$MANAGED_STANDBY视图的输出。-[^3]:Oracle事件诊断代码。-[^4]:Oracle补丁信息。这些引用可能与RMAN相关,但不直接针对duplicate进度检查。我需要专注于用户的问题。关键点:用户想检查RMANduplicate命令的进度。在OracleRMAN中,duplicate命令用于创建一个数据库的副本。要监控其进度,可以使用以下方法:1.使用RMAN命令本身提供的输出。2.查询Oracle动态性能视图(如V$SESSION_LONGOPS)。3.使用操作系统工具监控进程。具体步骤:-在RMAN会话中,执行duplicate命令时,它会显示进度信息。-可以查询V$SESSION_LONGOPS视图,该视图显示长时间运行的操作进度。-对于duplicate,特别是涉及DataGuard或备用数据库时,V$MANAGED_STANDBY可能相关(如引用[^2]所示)。引用[^2]提到了V$MANAGED_STANDBY,这用于DataGuard环境。duplicate命令常用于创建备用数据库,所以这可能相关。标准方法:-在RMAN中,执行duplicate后,可以打开另一个会话查询V$SESSION_LONGOPS。-例如:SELECTsid,serial#,context,sofar,totalwork,round(sofar/totalwork*100,2)"%Complete"FROMV$SESSION_LONGOPSWHEREopnameLIKE'RMAN%'ANDtotalwork!=0ANDsofar!=totalwork;用户引用[^2]展示了查询V$MANAGED_STANDBY,这用于归档日志应用等,但对于duplicate进度,V$SESSION_LONGOPS更直接。回答结构:1.**介绍方法**:简要说明如何检查进度。2.**步骤分解**:-方法1:使用RMAN输出(实时查看)。-方法2:查询动态性能视图(如V$SESSION_LONGOPS)。-方法3:操作系统级别监控(如ps命令)。3.**示例代码**:提供SQL查询或RMAN命令示例。4.**注意事项**:提醒用户可能的延迟或视图更新频率。5.**生成相关问题**:在末尾添加。使用中文回答。参考引用:-引用[^1]:RMAN命令示例,可能涉及日志输出。-引用[^2]:V$MANAGED_STANDBY查询,相关但可能不直接。-其他引用不太相关,但可忽略。在回答中,自然地添加引用标识。例如,如果提到V$MANAGED_STANDBY,可以引用[^2]。最终回答:-开头:直接回答问题。-主体:分步骤解释。-结尾:相关问题。生成相关问题:-基于主题,如RMAN优化、错误处理等。确保LaTeX:用户问题中没有数学内容,所以可能不需要LaTeX。但如果涉及计算,如进度百分比,使用行内$...$。例如:进度百分比计算:$\text{百分比}=\frac{\text{sofar}}{\text{totalwork}}\times100$现在,草拟回答。</think>### Oracle RMAN 检查 duplicate 命令进度的方法 在 Oracle RMAN 中执行 `duplicate` 命令时(例如创建备用数据库或克隆数据库),监控进度是关键。RMAN 本身不提供实时进度条,但可通过以下方法检查进度。这些方法基于 Oracle 动态性能视图和日志输出,确保您逐步解决问题。 #### 方法1: 直接查看 RMAN 输出日志 当您执行 `duplicate` 命令时,RMAN 会在日志文件中输出阶段性进度信息(如数据文件复制、归档日志应用等)。您可以通过以下方式实时查看: - 在 RMAN 命令中添加日志记录,如引用[^1]所示:执行时指定日志文件路径。 - 示例命令: ```bash rman target sys/password@primary_db auxiliary sys/password@standby_db log=/home/oracle/duplicate.log append <<EOF duplicate target database for standby from active database; EOF ``` - **如何检查进度**: - 打开另一个终端会话,使用 `tail -f` 命令实时跟踪日志: ```bash tail -f /home/oracle/duplicate.log ``` - RMAN 会输出类似信息: ``` Starting backup at 2023-10-01 12:00:00 channel ORA_DISK_1: starting datafile copy copying datafile 00001 to /u01/oradata/standby/system01.dbf ... Finished backup at 2023-10-01 12:05:00 ``` - 关注关键阶段:`datafile copy`(数据文件复制)、`archived log application`(归档日志应用)等,这些步骤显示操作进度[^1]。 #### 方法2: 查询 Oracle 动态性能视图 Oracle 提供了动态性能视图(如 `V$SESSION_LONGOPS`),用于监控长时间运行的操作。`duplicate` 命令通常注册为 RMAN 作业,可通过 SQL 查询进度。 - **步骤**: 1. 在 RMAN 执行 `duplicate` 命令的同时,打开另一个 SQL*Plus 会话。 2. 运行以下查询,计算进度百分比: ```sql SELECT sid, serial#, opname, context, sofar, totalwork, ROUND(sofar / totalwork * 100, 2) AS "% Complete" FROM v$session_longops WHERE opname LIKE 'RMAN:%' AND totalwork > 0 AND sofar < totalwork; ``` - `sofar`: 已完成工作量(例如复制的数据块数)。 - `totalwork`: 总工作量。 - `% Complete`: 进度百分比,计算公式为 $ \frac{\text{sofar}}{\text{totalwork}} \times 100 $。 3. 查询结果示例: ``` SID SERIAL# OPNAME CONTEXT SOFAR TOTALWORK % Complete ---- ------- ------------------ -------- ------ ---------- ---------- 123 456 RMAN: duplicate 1 500 1000 50.00 ``` - 如果进度停滞,检查 `V$SESSION` 视图确认会话状态。 - **注意事项**: - 对于 Data Guard 环境(如创建物理备用数据库),可结合 `V$MANAGED_STANDBY` 视图监控归档日志应用进度[^2]。示例查询: ```sql SELECT PROCESS, STATUS, SEQUENCE#, BLOCK#, BLOCKS, DELAY_MINS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%'; -- MRP 进程负责日志应用 ``` 输出如引用[^2]所示,`SEQUENCE#` 和 `BLOCK#` 显示当前应用的日志序列和块号。 #### 方法3: 操作系统级别监控 在 Linux/Unix 系统上,使用 OS 工具监控 RMAN 进程活动。 - **步骤**: - 查找 RMAN 相关进程: ```bash ps -ef | grep rman ``` 输出示例: ``` oracle 12345 1 0 12:00 ? 00:00:01 rman target sys/... ``` - 监控 I/O 活动(例如使用 `iostat` 或 `top`),确保磁盘读写正常。 - 对于归档日志应用,检查 MRP(Managed Recovery Process)进程: ```bash ps -ef | grep mrp ``` 如引用[^2]所示,确认进程是否运行。 #### 注意事项 - **进度更新延迟**:`V$SESSION_LONGOPS` 视图可能每 3-5 分钟更新一次,非实时。 - **常见问题**: - 如果进度不更新,检查 RMAN 日志是否有错误(如网络中断或空间不足)。 - 在 Oracle 11g/12c 中,`duplicate` 命令可能涉及补丁兼容性问题,参考引用[^4]确保环境一致。 - **最佳实践**:在低峰时段执行操作,并预先测试环境。 通过以上方法,您可以有效监控 `duplicate` 命令的进度。如果操作失败,使用 Oracle 事件诊断工具分析错误(如引用[^3]所示)[^3]。 ### 相关问题 1. 如何优化 Oracle RMAN `duplicate` 命令的性能? 2. RMAN `duplicate` 命令失败时如何排查常见错误? 3. 在 Data Guard 环境中,如何验证备用数据库的同步状态? 4. Oracle 动态性能视图(如 `V$SESSION_LONGOPS`)的工作原理是什么? [^1]: /u01/oracle/app/11.2.0/bin/rman target sys/password@orcldb auxiliary sys/password@orcldb_dg log=/home/oracle/$LOG append <<eof</eof<> [^2]: 节点2 SQL> SELECT PROCESS, STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM V$MANAGED_STANDBY; PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS DELAY_MINS --------- ------------ ---------- ---------- ---------- ---------- ---------- ARCH CLOSING 1 206 10240 1861 0 ARCH CLOSING 1 215 1 696 0 ARCH CONNECTED 0 0 0 0 0 ARCH CLOSING 1 216 2048 1053 0 SQL> !ps -ef|grep mrp oracle 53581 52552 0 21:06 pts/0 00:00:00 /bin/bash -c ps -ef|grep mrp oracle 53583 53581 0 21:06 pts/0 00:00:00 grep mrp [^3]: Oracle事件诊断列表。DECLARE err_msg VARCHAR2(120); BEGIN dbms_output.enable(1000000); FOR err_num IN 0..20000 LOOP err_msg := SQLERRM(-err_num); IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN dbms_output.put_line (err_msg); END IF; END LOOP; END; / spool off [^4]: oracle 11.2.0.4 补丁集CVE漏洞修复对照表。APPLIES TO: Oracle Server - Enterprise Edition - Version: 11.2.0.4 to 11.2.0.4 - Release: 11.2 to 11.2 Information in this document applies to any platform. Bugs fixed in each 11.2.0.4 Patch Set Update SeeNote:854428.1for information about Patch Set UpdatesSeeNote:1562139.1for Support Status and Alerts affecting 11.2.0.4 releases。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值