[20121227]v$datafile访问是从数据文件获取信息吗.txt

[20121227]v$datafile访问是从数据文件获取信息吗.txt

记得以前开始学习oracle的时候,被问及访问v$datafile从哪里获取信息,当时想都没想,从数据文件.
虽然当时对方并没有告诉答案,显然认为水平不再同一档次上.

直到有一次看一篇blog:
http://avdeo.com/2008/05/29/oracle-database-recovery-details/

SELECT 'controlfile' "SCN location", 'SYSTEM checkpoint' NAME, checkpoint_change#
  FROM v$database
UNION
SELECT 'file in controlfile', NAME, checkpoint_change#
  FROM v$datafile
 WHERE NAME LIKE '%users01%'
UNION
SELECT 'file header', NAME, checkpoint_change#
  FROM v$datafile_header
 WHERE NAME LIKE '%users01%';

实际上当我拿这个问题问初学者,许多的回答跟我当时一样.为了加强理解自己做一些例子来说明:

测试很简单,关闭数据库,将表空间users对应的数据文件改名,启动数据库到mount状态,执行前面的脚本:
$ mv users01.dbf users01.dbf.xxx

SQL> startup mount
ORACLE instance started.

Total System Global Area 2137886720 bytes
Fixed Size                  2215064 bytes
Variable Size            1728054120 bytes
Database Buffers          402653184 bytes
Redo Buffers                4964352 bytes
Database mounted.

SQL> column name format a50
SQL> SELECT 'controlfile' "SCN location", 'SYSTEM checkpoint' NAME, checkpoint_change#
UNION
SELECT 'file header', NAME, checkpoint_change#
  FROM v$database
UNION
SELECT 'file in controlfile', NAME, checkpoint_change#
  FROM v$datafile
 WHERE NAME LIKE '%users01%'
UNION
SELECT 'file header', NAME, checkpoint_change#
  FROM v$datafile_header
WHERE NAME LIKE '%users01%';

SCN location        NAME                                               CHECKPOINT_CHANGE#
------------------- -------------------------------------------------- ------------------
controlfile         SYSTEM checkpoint                                          3010736324
file in controlfile /u01/app/oracle11g/oradata/test/users01.dbf                3010736324

--如果v$datafile从数据文件获得,已经文件改名,应该无法获取信息,而现在可以查询到,至少说明不是从数据文件获取的.

--实际上数据文件的SCN是从v$datafile_header获取的.

SQL> column name format a50
SQL> select file#,status, CHECKPOINT_CHANGE#,name from v$datafile_header;
     FILE# STATUS  CHECKPOINT_CHANGE# NAME
---------- ------- ------------------ --------------------------------------------------
         1 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/system01.dbf
         2 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/sysaux01.dbf
         3 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/undotbs01.dbf
         4 ONLINE                   0
         5 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/example01.dbf
         6 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/rman01.dbf
         7 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/tools01.dbf
         8 ONLINE          3010736324 /u01/app/oracle11g/oradata/test/test01.dbf
8 rows selected.

--如果你把数据文件全部移走.依旧可以访问v$datafile视图.

SQL> select file#,TS#, RFILE#, STATUS ,NAME, CHECKPOINT_CHANGE# from v$datafile ;
     FILE#        TS#     RFILE# STATUS  NAME                                               CHECKPOINT_CHANGE#
---------- ---------- ---------- ------- -------------------------------------------------- ------------------
         1          0          1 SYSTEM  /u01/app/oracle11g/oradata/test/system01.dbf               3010736324
         2          1          2 ONLINE  /u01/app/oracle11g/oradata/test/sysaux01.dbf               3010736324
         3          2          3 ONLINE  /u01/app/oracle11g/oradata/test/undotbs01.dbf              3010736324
         4          4          4 ONLINE  /u01/app/oracle11g/oradata/test/users01.dbf                3010736324
         5          6          5 ONLINE  /u01/app/oracle11g/oradata/test/example01.dbf              3010736324
         6          7          6 ONLINE  /u01/app/oracle11g/oradata/test/rman01.dbf                 3010736324
         7          8          7 ONLINE  /u01/app/oracle11g/oradata/test/tools01.dbf                3010736324
         8          9          8 ONLINE  /u01/app/oracle11g/oradata/test/test01.dbf                 3010736324
8 rows selected.
时间: 2024-10-25 07:11:21

[20121227]v$datafile访问是从数据文件获取信息吗.txt的相关文章

[20171115]恢复数据文件块头3补充.txt

[20171115]恢复数据文件块头3补充.txt --// 昨天做了恢复数据文件块头,通过备份文件直接取出文件块头,覆盖原来的数据块,然后修复. --//补充几点: --1.文件头损坏,无法使用rman的块恢复功能. --2.文件头损坏,dbv检查发现都是坏块.我感觉主要文件块头损坏,dbv无法定位其它剩下的块. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------

[20170221]数据文件与文件系统缓存.txt

[20170221]数据文件与文件系统缓存.txt --昨天探究磁盘之间拷贝文件时很慢,发现一个小工具nocache,发现这个可以用来探究数据文件与文件系统缓存的问题,自己测试看看. 1.环境以及构造测试数据: --//首先说明我的测试数据库在安装在内存盘中,使用cachesats看数据库安装与否都是缓存的. $ cachestats book/system01.dbf book/system01.dbf                    pages in cache: 194562/194

Oracle 表空间与数据文件

--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                      回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(sys

[20151028]linux下删除数据文件的恢复细节4

[20151028]linux下删除数据文件的恢复细节4 --前几天一直在做删除数据文件的恢复测试,中间遇到许多问题自己无法解决,从我个人讲我不主张使用句柄的方式来恢复,而更愿意 --使用rman的方式,这种情况仅仅适合非归档模式. --前几天的测试非常混乱,我自己都不知道为什么在删除数据文件的情况下有时候执行alter system checkpoint数据库会直接crash,有 --时候为什么有不会.我再把整个恢复过程做一个总结: 1.测试环境: SCOTT@test> @ &r/ver

[20130116]ASM未正常启动,使用dd找回数据文件.txt

[20130116]ASM未正常启动,使用dd找回数据文件.txt 参考链接:http://www.xifenfei.com/3025.html,自己为了加强理解,重做一次. SQL> column name format a50 SQL> select file#,ts#,status,enabled,checkpoint_change#,name,bytes  from v$datafile;      FILE#        TS# STATUS  ENABLED    CHECKPO

迁移数据文件到ASM【转】

1.迁移数据文件到ASM 1)数据库一致性情况下迁移: 将数据库启动到mount状态,生成rman copy 语句,然后在rman中执行: SQL> startup mount SQL> select q'(copy datafile ')'||name||q'(' to '+oradata';)' from v$datafile; Q'(COPYDATAFILE')'||NAME||Q'('TO'+ORADATA';)' -----------------------------------

Oracle恢复实验一:使用添加数据文件之前的控制文件

oracle|恢复|控制|数据 --------------------------------------------- 实验平台:windows + Oracle 10.1.0.2.0 Author:NinGoo  2005-03-26 --------------------------------------------   在备份控制文件之后,在数据库中又添加了数据文件,然后当前控制文件损坏,需要使用之前的备份控制文件来做恢复.   1.备份控制文件   SQL> alter data

数据文件、表空间offline用法及区别

对数据库的脱机包括数据文件的脱机和对表空间的脱机,表空间脱机实际就是表空间对应的所有数据文件脱机. 1.         数据文件OFFLINE 数据文件添加到表空间之后不能够被删除的,没有语法支持这么做,如果想不使用该数据文件,唯一是将数据文件设置为OFFLINE状态.执行以下步骤将数据文件设置为OFFLINE状态: 1)         如果是归档模式可以执行如下SQL设置数据文件的状态为OFFLINE: ALTER DATABASE DATAFILE 'XXXX.DBF' OFFLINE;

Android 之 使用File类在SD卡中读取数据文件

Android 之 使用File类在SD卡中读取数据文件 一.File 类读写文件 :  如果需要在程序中使用sdcard进行数据的存储,那么需要在AndroidMainfset.xml文件中 进行权限的配置:  <!-- 在sd中创建和删除文件的权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 向SD卡中的写入权限 --&