DBA_DATA_FILES中bytes的值要比maxbytes的值要大
来源于:
Value in BYTES Column Greater than MAXBYTES Column in DBA_DATA_FILES (文档 ID 197244.1)
目的:
本文解释了DBA_DATA_FILES中bytes的值要比maxbytes的值要大的原因。
描述:
当一个datafile 手工resize到一个大于maxsize(maxbytes)的值之后,DBA_DATA_FILES中bytes的值要比maxbytes的值要大
当该datafile被设置为autoextend on之后,dba_data_files中的maxbytes 值被自动结算为一个非零值。
dba_data_files中的bytes是该datafile的当前的大小(以bytes为单位)
下面是一个示例:
解释:
当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的值。