概述
[20121227]v$datafile访问是从数据文件获取信息吗.txt
记得以前开始学习oracle的时候,被问及访问v$datafile从哪里获取信息,当时想都没想,从数据文件.
虽然当时对方并没有告诉答案,显然认为水平不再同一档次上.
直到有一次看一篇blog:
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 3010736324file in controlfile /u01/app/oracle11g/oradata/test/users01.dbf 3010736324
--如果v$datafile从数据文件获得,已经文件改名,应该无法获取信息,而现在可以查询到,至少说明不是从数据文件获取的.
--实际上数据文件的SCN是从v$datafile_header获取的.
SQL> column name format a50SQL> select file#,status, CHECKPOINT_CHANGE#,name from v$datafile_header;FILE# STATUS CHECKPOINT_CHANGE# NAME---------- ------- ------------------ --------------------------------------------------1 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/system01.dbf2 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/sysaux01.dbf3 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/undotbs01.dbf4 ONLINE 05 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/example01.dbf6 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/rman01.dbf7 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/tools01.dbf8 ONLINE 3010736324 /u01/app/oracle11g/oradata/test/test01.dbf8 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 30107363242 1 2 ONLINE /u01/app/oracle11g/oradata/test/sysaux01.dbf 30107363243 2 3 ONLINE /u01/app/oracle11g/oradata/test/undotbs01.dbf 30107363244 4 4 ONLINE /u01/app/oracle11g/oradata/test/users01.dbf 30107363245 6 5 ONLINE /u01/app/oracle11g/oradata/test/example01.dbf 30107363246 7 6 ONLINE /u01/app/oracle11g/oradata/test/rman01.dbf 30107363247 8 7 ONLINE /u01/app/oracle11g/oradata/test/tools01.dbf 30107363248 9 8 ONLINE /u01/app/oracle11g/oradata/test/test01.dbf 30107363248 rows selected.
最后
以上就是追寻老鼠为你收集整理的linux读取.data文件,[20121227]v$datafile访问是从数据文件获取信息吗.txt的全部内容,希望文章能够帮你解决linux读取.data文件,[20121227]v$datafile访问是从数据文件获取信息吗.txt所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复