linux读取.data文件,[20121227]v$datafile访问是从数据文件获取信息吗.txt
[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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白酒个性语录30句
- 下一篇: linux md5加密文件,Linux下