打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
与备份有关的动态性能视图
《涂抹Oracle——三思笔记之一步一步学Oracle》作为一本创作之初就定位于技术应用的实践参考书,虽然前前后后串联了Oracle数据库中十余个常用特性或工具,但在章节的设计上完全遵循这一理念。第8章讲述RMAN说,我能备份。本节说的是V$BACKUP_CORRUPTION视图。
8.7.7  RMAN备份相关的动态性能视图
虽然使用LIST、REPORT等RMAN命令时也能显示备份信息,不过使用那些命令后看到的都是结果,而通过Oracle数据库中的一些动态性能视图,不仅仅能够看到备份信息,甚至还能在备份过程中监控备份进度,查看当前进行的操作等。
提 示
什么是动态性能视图?
可以将其理解成由Oracle提供的存在于内存中的虚拟视图。这批视图由Oracle的后台进程自行维护,访问的时候与普通表或视图一样,但用户只能读取而无法插入、修改或删除这些视图中的内容。这一系列视图在数据库调优方面具有重要的、不可替代的作用,而且功能完善、数量庞大。关于动态性能视图的全面介绍超出本书内容,感兴趣的朋友请参考相关书籍或阅读官方文档,本小节中仅介绍部分与RMAN备份恢复相关的常用动态性能视图。
8.7.7.1  V$ARCHIVED_LOG视图
本视图包含了归档重做日志文件的信息,如归档文件的名称、归档路径等。该视图中数据来自于控制文件,一般是当一个Online Redologs完成归档后,就会在控制文件中插入一条记录,如果归档目录有多个的话,则同时插入对应数量的记录(当然路径肯定不同),另外当通过RMAN恢复归档文件或复制归档文件时,也会插入对应的记录。
通过DESC命令查看可以看到该视图包括的列有很多:
SQL> DESC V$ARCHIVED_LOG   Name                       Null?   Type   -----------------------------------------------------------   RECID                              NUMBER   STAMP                              NUMBER   NAME                               VARCHAR2(513)   DEST_ID                            NUMBER   THREAD#                            NUMBER   SEQUENCE#                          NUMBER   RESETLOGS_CHANGE#                  NUMBER   RESETLOGS_TIME                     DATE  RESETLOGS_ID                       NUMBER   FIRST_CHANGE#                      NUMBER   FIRST_TIME                         DATE  NEXT_CHANGE#                       NUMBER   NEXT_TIME                          DATE  BLOCKS                             NUMBER   BLOCK_SIZE                         NUMBER   CREATOR                            VARCHAR2(7)   REGISTRAR                          VARCHAR2(7)   STANDBY_DEST                       VARCHAR2(3)   ARCHIVED                           VARCHAR2(3)   APPLIED                            VARCHAR2(3)   DELETED                            VARCHAR2(3)   STATUS                             VARCHAR2(1)   COMPLETION_TIME                    DATE  DICTIONARY_BEGIN                   VARCHAR2(3)   DICTIONARY_END                     VARCHAR2(3)   END_OF_REDO                        VARCHAR2(3)   BACKUP_COUNT                       NUMBER   ARCHIVAL_THREAD#                   NUMBER   ACTIVATION#                        NUMBER   IS_RECOVERY_DEST_FILE              VARCHAR2(3)   COMPRESSED                         VARCHAR2(3)   FAL                                VARCHAR2(3)   END_OF_REDO_TYPE                   VARCHAR2(10)
一般情况下并不是每一列都需要关注,通常你需要看下列字段的值:
NAME:记录归档文件路径和名称。
THREAD#:归档线程号,RAC环境下适用。
SEQUENCE#:归档文件序号。
FIRST_TIME:等同于创建时间。
CREATOR:该条记录的创建者(告诉你究竟是哪个进程干的)。
APPLIED:是否被应用,Data Guard环境下适用。
STATUS:该条记录的状态。
其中,CREATOR列标识该条记录的创建者,有下列几个值:
ARCH:表示由归档进程创建。
FGRD:表示由前台进程创建。
RMAN:表示由RMAN创建。
SRMN:表示由Standby端的RMAN创建。
LGWR:表示由Logwriter进程创建。
STATUS列标识该条记录的状态,有下列几个值:
A:指正常归档状态。
D:指该记录指向的归档文件已被删除。
U:指该记录指向的归档已不存用。
X:指该条记录失效,通常是当你在RMAN中执行了CROSSCHECK ARCHIVELOG后有可能出现。
其他字段理解起来比较简单,按照字面意义理解即可。
8.7.7.2  V$BACKUP_SET视图
V$BACKUP_SET视图中显示当前创建的备份集信息,该视图比较简单,通过DESC命令查看结构:
SQL> DESC V$BACKUP_SET;   Name                   Null?   Type   ------------------------------------------------   RECID                           NUMBER   STAMP                           NUMBER   SET_STAMP                       NUMBER   SET_COUNT                       NUMBER   BACKUP_TYPE                    VARCHAR2(1)   CONTROLFILE_INCLUDED           VARCHAR2(3)   INCREMENTAL_LEVEL             NUMBER   PIECES                          NUMBER   START_TIME                      DATE  COMPLETION_TIME                DATE  ELAPSED_SECONDS               NUMBER   BLOCK_SIZE                      NUMBER   INPUT_FILE_SCAN_ONLY          VARCHAR2(3)   KEEP                            VARCHAR2(3)   KEEP_UNTIL                      DATE  KEEP_OPTIONS                    VARCHAR2(10)
该视图查看的信息与RMAN中命令LIST BACKUP类似,只不过表示形式不同。其中BACKUP_TYPE列标记该备份集中包含的文件类型,有下列几个值:
L:表示包含归档重做日志文件;
D:表示数据文件完全备份;
I:表示增量备份。
还有一个常用的关联视图V$BACKUP_SET_DETAILS,该视图除了包含V$BACKUP_SET中的数据外,还额外记录了备份集的详细信息,比如备份集大小、备份集所在设备等。额外的列也都比较简单,用字面意义理解列定义即可。另外还有一个显示所有备份集统计信息的视图V$BACKUP_SET_SUMMARY,该视图中只有一条记录(统计自所有备份集的数据),不过并不常用,这里就不介绍了。
8.7.7.3  V$BACKUP_PIECE视图
V$BACKUP_PIECE中显示备份片段的信息,通过SET_STAMP列可以与V$BACKUP_SET.SET_STAMP视图关联,从而获得备份集的信息。
使用DESC命令查看该视图,会发现列还是有点儿多的:
SQL> DESC V$BACKUP_PIECE;   Name                 Null?   Type   -------------------------------------------------   RECID                           NUMBER   STAMP                           NUMBER   SET_STAMP                       NUMBER   SET_COUNT                       NUMBER   PIECE#                          NUMBER   COPY#                           NUMBER   DEVICE_TYPE                     VARCHAR2(17)   HANDLE                          VARCHAR2(513)   COMMENTS                       VARCHAR2(64)   MEDIA                           VARCHAR2(65)   MEDIA_POOL                     NUMBER   CONCUR                          VARCHAR2(3)   TAG                             VARCHAR2(32)   STATUS                          VARCHAR2(1)   START_TIME                      DATE  COMPLETION_TIME                DATE  ELAPSED_SECONDS               NUMBER   DELETED                         VARCHAR2(3)   BYTES                           NUMBER   IS_RECOVERY_DEST_FILE          VARCHAR2(3)   RMAN_STATUS_RECID             NUMBER   RMAN_STATUS_STAMP              NUMBER   COMPRESSED                      VARCHAR2(3)
不过通常情况下需要我们关注的并不多,如下所示:
SET_STAMP:用来关联V$BACKUP_SET列。
PIECE#:该备份片段在对应备份集中的序号,默认是从1开始。
DEVICE_TYPE:备份片段对应文件存储的设备类型。
HANDLE:备份片段对应的文件。
STATUS:备份片段状态,有三个状态值:A(可用);D(已删除);或X(文件存在)。
BYTES:该备份片段大小。
与V$BACKUP_SET一样,V$BACKUP_PIECE也有一个对应的记录详细信息的视图V$BACKUP_PIECE_DETAILS,该视图中除了包含V$BACKUP_PIECE中的列外,还提供了一些额外的信息。
8.7.7.4  V$BACKUP_CORRUPTION视图
这个视图中记录了备份集中发现的损坏的数据块,通常是当你在RMAN中执行了BACKUP VALIDATE命令对备份集进行检查后,如果发现有操作的数据块,就会向该视图中插入记录。注意不包括控制文件或归档文件,因为这两类文件都是独立个体,一旦损坏就表示彻底完蛋,不可修复,不像数据块,就算某个数据块坏了也没关系,还可以用其他备份集中匹配的数据进行修复。
通过DESC查看:
SQL> DESC V$BACKUP_CORRUPTION;   Name                  Null?   Type   ----------------------------------------------   RECID                          NUMBER   STAMP                          NUMBER   SET_STAMP                      NUMBER   SET_COUNT                      NUMBER   PIECE#                         NUMBER   FILE#                          NUMBER   BLOCK#                         NUMBER   BLOCKS                         NUMBER   CORRUPTION_CHANGE#             NUMBER   MARKED_CORRUPT                 VARCHAR2(3)   CORRUPTION_TYPE               VARCHAR2(9)
该视图的列定义都比较简单,字面意义理解即可,就不过多描述了。
8.7.7.5  V$SESSION视图和V$PROCESS视图
不仅仅局限于RMAN,在整个数据库运行过程中V$SESSION和V$PROCESS都是非常重要并且常用的视图。
1.V$SESSION视图对应"会话"信息
每一个连接到Oracle数据库的会话都能在该视图中对应一条记录,根据该视图中的信息可以查询该会话使用的用户,正在执行或者刚刚执行的SQL语句,连接者的信息等。
V$SESSION视图中的列很多,常用到的会有如下几列:
SID:会话的标识,具有唯一性,通常要对某个会话进行分析前,首先就需要获得该会话的SID。
SERIAL#:会话的序号。
PADDR:会话所属进程的地址,关联V$PROCESS视图即可查到该会话的所属进程,然后再通过V$PROCESS视图得到对应的操作系统进程号(Windows对应的是线程号)。
USERNAME:创建该会话的用户名。
CLIENT_INFO:还记得SET COMMAND ID命令吗?该命令设置的值就会在V$SESSION.CLIENT_INFO中体现。
OSUSER:客户端操作系统的用户名。
MACHINE:客户端的机器名。
TERMINAL:客户端运行的终端名。
PROGRAM:客户端执行的程序名。
SQL_ADDRESS:执行SQL的地址。
SQL_HASH_VALUE:执行SQL的HASH值,与SQL_ADDRESS关联查询其他SQL相关视图后即可查询会话当前正在执行的SQL语句。
EVENT:当前会话的等待事件。
例如:已知设置的client_info值,查询会话的相关信息:
SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS    FROM V$SESSION WHERE client_info like '%id=rman%';
2.V$PROCESS视图对应"连接"信息
V$PROCESS视图中的一条记录对应操作系统中的一个进程(Windows中为线程),该视图中的SPID即操作系统中的进程号,通过该视图就可以将Oracle中的会话、连接与操作系统中的进程关联起来。
例如:通过下列SQL语句,通过关联查询V$PROCESS和V$SESSION获得执行RMAN操作的进程的SID与SPID信息:
SELECT S.SID, S.SERIAL#, P.SPID, S.CLIENT_INFO    FROM V$PROCESS P, V$SESSION S   WHERE P.ADDR = S.PADDR     AND CLIENT_INFO LIKE '%id=rman%'
8.7.7.6  V$SESSION_LONGOPS视图
V$SESSION_LONGOPS视图本意是记录Oracle数据库中执行时间超过6秒的操作,由于RMAN备份操作涉及大量I/O读写,多数情况下肯定会超过6秒,因此通过该视图查询RMAN操作正合适。
该视图中的列并不是很多,需要我们关注的主要有下列几个:
SID:会话的标识,具有唯一性,通常要对某个会话进行分析前,首先就需要获得该会话的SID。
SERIAL#:会话的序号。
OPNAME:操作描述信息,如RMAN: full datafile backup或RMAN: full datafile restore。
SOFAR:已完成的工作量。
TOTALWORK:要完成的工作总量。
MESSAGE:当前操作的统计信息。
SQL_ADDRESS:执行SQL的地址。
SQL_HASH_VALUE:执行SQL的HASH值,与SQL_ADDRESS关联查询其他SQL相关视图后即可查询会话当前正在执行的SQL语句。
可以通过如下SQL语句获得正在进行的镜像复制操作的状态信息:
SELECT SID,         SERIAL#,         CONTEXT,         SOFAR,         TOTALWORK,         ROUND(SOFAR / TOTALWORK * 100, 2) "%_COMPLETE"   FROM V$SESSION_LONGOPS   WHERE OPNAME LIKE 'RMAN:%'    AND OPNAME NOT LIKE '%aggregate%'    AND TOTALWORK != 0     AND SOFAR <> TOTALWORK;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
浅谈Oracle10G闪回恢复区
[Oracle 10g] 闪回恢复区 (Flash Recovery Area)
查询oracle的所有parameter参数
Oracle备份与恢复案例
RMAN命令详解 非常好的文章
mssql数据库异地备份的两种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服