oracle小记:dba_data_files
今天给表空间扩展的时候,使用了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数据文件会导致这一现象。
![](https://img2018.cnblogs.com/i-beta/1359484/201911/1359484-20191122093804460-238489240.png)
步骤2:修改该数据文件大小为50M
![](https://img2018.cnblogs.com/i-beta/1359484/201911/1359484-20191122093817304-1817495317.png)
此时出现bytes>maxbytes情况
![](https://img2018.cnblogs.com/i-beta/1359484/201911/1359484-20191122093831132-1769188507.png)
提示无法扩展
![](https://img2018.cnblogs.com/i-beta/1359484/201911/1359484-20191122093850208-403428481.png)
下面是一个示例:
解释:
当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的值。