今天給表空間擴展的時候,使用了dba_data_files進行查詢。查閱了網上的資料。
該系統系統中含有以下字段
每個字段的含義如下:
2019/11/22號更新:
今天發現了一個問題。我查閱表空間的時候,發現MAXBYTES 比 BYTES 的空間要小。 字段含義的翻譯:MAXBYTES 為‘如果可以擴展,最大可以到多大’。 然后我發現了BYTES 的容量已經比MAXBYTES大很多了。如下圖:
這時候,難道不是違背了字段的含義了嗎?
這是我查閱了資料和網上的博客,我發現了一個解答
很多人的博客上面都是這樣一句話 :‘DBA_DATA_FILES中bytes的值要比maxbytes的值要大
來源於:
Value in BYTES Column Greater than MAXBYTES Column in DBA_DATA_FILES (文檔 ID 197244.1)’
拜托這么寫,誰知道是啥來源。。。
這是來自oracle官方的一篇文章。
文章里面有這樣的一句話‘The BYTES column in DBA_DATA_FILES has a value greater than MAXBYTES column when a datafile was manually resized to a value GREATER than MAXSIZE (MAXBYTES).’
描述:
當一個datafile 手工resize到一個大於maxsize(maxbytes)的值之后,DBA_DATA_FILES中bytes的值要比maxbytes的值要大,當該datafile被設置為autoextend on之后,dba_data_files中的maxbytes 值被自動結算為一個非零值。dba_data_files中的bytes是該datafile的當前的大小(以bytes為單位)
手動resize數據文件會導致這一現象。

步驟2:修改該數據文件大小為50M

此時出現bytes>maxbytes情況

提示無法擴展

下面是一個示例:
解釋:
當datafile 被resize的時候,dba_data_files中的maxbytes 值 不會被更新,此時被更新的列只是bytes列。
dba_data_files中的maxbytes 值是在使用ALTER DATABASE command with MAXSIZE option 時才會被更新的。
Step-1: Create a New Tablespace ====== ======================= SQL> create tablespace tst 2 datafile 'd:\oracle\tst01.dbf' size 5m autoextend on; Tablespace created. SQL> select file_name, bytes, maxbytes, autoextensible from dba_data_files; FILE_NAME BYTES MAXBYTES AUT ---------------------------------------- ---------- ---------- --- D:\ORACLE\TST01.DBF 5242880 1.7180E+10 YES 1 rows selected. Step-2: Alter the MAXSIZE value from default value ====== ========================================== SQL> alter database datafile 'd:\oracle\tst01.dbf' autoextend on maxsize 10m; Database altered. SQL> select file_name, bytes, maxbytes,a utoextensible from dba_data_files; FILE_NAME BYTES MAXBYTES AUT ---------------------------------------- ---------- ---------- --- D:\ORACLE\TST01.DBF 5242880 10485760 YES 1 rows selected. Step-3: Resize the datafile to a value higher than MAXBYTES ====== =================================================== SQL> alter database datafile 'd:\oracle\tst01.dbf' resize 20m; Database altered. SQL> select file_name, bytes, maxbytes, autoextensible from dba_data_files; FILE_NAME BYTES MAXBYTES AUT ---------------------------------------- ---------- ---------- --- D:\ORACLE\TST01.DBF 20971520 10485760 YES 1 rows selected. The value in BYTES column is GREATER than MAXBYTES.
參考:
Note:182097.1 SYS.FILE$ does not display the correct size for locally managed tablespace files
題話外:此時,該datafile(D:\ORACLE\TST01.DBF)能達到的最大大小是dba_data_files.bytes的值。