数据库的物理结构(以下简称物理结构),是在线日志路径、数据文件路径、表空间信息及备份文件信息的汇总。物理结构可以通过查询相关的动态视图获得,这些视图在实例启动到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>