[20121227]v$datafile访问是从数据文件获取信息吗.txt-阿里云开发者社区

开发者社区> lfreeali> 正文

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

简介: [20121227]v$datafile访问是从数据文件获取信息吗.txt记得以前开始学习oracle的时候,被问及访问v$datafile从哪里获取信息,当时想都没想,从数据文件.
+关注继续查看
[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.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH
这种报错一般是因为nginx用户权限不足引起的。 1. 查看日志 打开nginx.conf 配置文件,查看日志位置。 2. 访问让它报错: 3. 修改目录权限 我们看到了它报错无权限,因为我的nginx用户是ftpuser,所以我在/var/lib下执行chown -R ftpuser:ftpuser nginx/修改目录所属用户。
1349 0
获取MySql每一列的数据类型和长度默认值等信息
如何获取MySql表中各个列的数据类型? show columns from tablename 返回结果如下: id    int(11)     NO  PRI         auto_increment uid  varchar(255)   NO  UNI         p...
903 0
[20121127]rman备份数据文件大小与truncate.txt
[20121127]rman备份数据文件大小与truncate.txt记得以前看rman的书,rman仅仅备份已经格式话的块,如果这样一个表被truncate后,即使空间回收了。
836 0
UIDevice获取设备数据以及如何获取应用信息
<h1 id="codeintro" style="margin:15px 0px 0px; padding:0px; color:rgb(54,46,43); line-height:26px; border:0px; width:740px; font-size:13px; font-weight:normal; font-family:'Helvetica Neue','Luxi S
1380 0
MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格
数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据。 元数据是描述数据仓库内数据的结构和建立方法的数据。 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.
1295 0
[20130104]快速移动数据文件.txt
[20130104]快速移动数据文件.txt如果要快速移动数据文件,对业务的影响最小,可以使用rman的backup as copy功能,先拷贝文件到需要移动的目录,然后再追加增量变化,再利用增量备份来恢复copy文件,再切换数据文件。
642 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
2122
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载