2.3 数据库的物理结构

数据库的物理结构(以下简称物理结构),是在线日志路径、数据文件路径、表空间信息及备份文件信息的汇总。物理结构可以通过查询相关的动态视图获得,这些视图在实例启动到mount状态(在线日志和数据文件不必打开)即可查询,因为这个特性对恢复操作意义重大,比较重要的有v$database、v$archived_log、v$datafile、v$tempfile、v$log、v$logfile、v$recover_file,这是视图的基表是x$kccdi、x$kccdi2、x$kccal、x$kccfe、x$kccfn、x$kcvfh、x$kcvfhmrr等固定表,当然,此类固定表及其之上的动态视图只是查看控制文件内容的SQL友好接口而已。

管理员可以仅将实例启动到mount状态,此时在线日志与数据文件均未打开,这些视图已经可以访问了:

SQL> startup mount
ORACLE instance started.

Total System Global Area 2137886720 bytes
Fixed Size                  2254952 bytes
Variable Size             973080472 bytes
Database Buffers         1157627904 bytes
Redo Buffers                4923392 bytes
Database mounted.
SQL> 

使用v$logfile视图查看所有的在线日志的路径与属组:

SQL> col member for a80
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                                           IS_
---------- ------- ------- -------------------------------------------------------------------------------- ---
         1         ONLINE  /u01/app/oracle/oradata/lypdb1/redo01.log                                        NO
         2         ONLINE  /u01/app/oracle/oradata/lypdb1/redo02.log                                        NO
         3         ONLINE  /u01/app/oracle/oradata/lypdb1/redo03.log                                        NO
         4         STANDBY /u01/app/oracle/oradata/lypdb1/htzstandby4.log                                   NO
         5         STANDBY /u01/app/oracle/oradata/lypdb1/htzstandby5.log                                   NO
         6         STANDBY /u01/app/oracle/oradata/lypdb1/htzstandby6.log                                   NO
         7         STANDBY /u01/app/oracle/oradata/lypdb1/htzstandby7.log                                   NO

7 rows selected.

SQL> 

利用v$log查看日志文件组的当前状态,既然现在实例不是OPEN状态,在这里应该解释为上一次实例关闭是的状态更为恰当。从命令输出可以发现最近一次实例关闭时后台进程正在写入2号日志组,序号为213。最旧的在线日志序列号为211(SEQUENCE#字段),且1号和3号组已完成归档(ARC字段):

SQL> select group#,status,thread#,sequence#,archived from v$log;

    GROUP# STATUS              THREAD#  SEQUENCE# ARC
---------- ---------------- ---------- ---------- ---
         1 INACTIVE                  1        211 YES
         3 CURRENT                   1        213 NO
         2 INACTIVE                  1        212 YES

SQL>

v$archived_log能够揭示控制文件已知的归档日志路径。从命令输出得知,现在磁盘上最旧的归档日志序列号是190,最新的是212:

SQL> select name,sequence# from v$archived_log where dest_id=1 and name is not null;

NAME                                                                              SEQUENCE#
-------------------------------------------------------------------------------- ----------
/home/oracle/arch/arch_1_190_986575246.dbf                                              190
/home/oracle/arch/arch_1_191_986575246.dbf                                              191
/home/oracle/arch/arch_1_192_986575246.dbf                                              192
/home/oracle/arch/arch_1_193_986575246.dbf                                              193
/home/oracle/arch/arch_1_194_986575246.dbf                                              194
/home/oracle/arch/arch_1_195_986575246.dbf                                              195
/home/oracle/arch/arch_1_196_986575246.dbf                                              196
/home/oracle/arch/arch_1_197_986575246.dbf                                              197
/home/oracle/arch/arch_1_198_986575246.dbf                                              198
/home/oracle/arch/arch_1_199_986575246.dbf                                              199
/home/oracle/arch/arch_1_200_986575246.dbf                                              200
/home/oracle/arch/arch_1_201_986575246.dbf                                              201
/home/oracle/arch/arch_1_202_986575246.dbf                                              202
/home/oracle/arch/arch_1_203_986575246.dbf                                              203
/home/oracle/arch/arch_1_204_986575246.dbf                                              204
/home/oracle/arch/arch_1_205_986575246.dbf                                              205
/home/oracle/arch/arch_1_206_986575246.dbf                                              206
/home/oracle/arch/arch_1_207_986575246.dbf                                              207
/home/oracle/arch/arch_1_208_986575246.dbf                                              208
/home/oracle/arch/arch_1_209_986575246.dbf                                              209
/home/oracle/arch/arch_1_210_986575246.dbf                                              210
/home/oracle/arch/arch_1_211_986575246.dbf                                              211
/home/oracle/arch/arch_1_212_986575246.dbf                                              212

23 rows selected.

SQL> 

查看v$datafile,得到数据文件的路径

SQL> select file# ,name from v$datafile;

     FILE# NAME
---------- --------------------------------------------------------------------------------
         1 /u01/app/oracle/oradata/lypdb1/system01.dbf
         2 /u01/app/oracle/oradata/lypdb1/sysaux01.dbf
         3 /u01/app/oracle/oradata/lypdb1/undotbs01.dbf
         4 /u01/app/oracle/oradata/lypdb1/users01.dbf
         5 /home/oracle/enmo/lyp01.dbf
         6 /home/oracle/enmo/lyp02.dbf

6 rows selected.

SQL> 

你可能感兴趣的:(数据库恢复技术)