• 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数据文件会导致这一现象。

    实验:
    步骤1:新建数据文件,初始化5M,最大20M,自动扩展YES

     步骤2:修改该数据文件大小为50M

    alter database datafile '/opt/ora11/product/oradata/dms/data02.dbf' resize 50M;

     此时出现bytes>maxbytes情况

    步骤三:插入数据测试是否能自动扩展

     提示无法扩展

    步骤四:查询DATA表空间剩余大小
    结论:
    autoextend=NO时:maxbytes为0,bytes即为该数据文件的初始化大小,也为该文件最大大小。
    autoextend=YES时:如果bytes>maxbytes,则说明该数据文件进行了resize,resize即为该数据文件可使用的最大大小,即使没有达到32G,也无法自动扩展
                                       如果bytes=maxbytes,则该数据文件可使用大小为bytes的值,无法扩展(受maxbytes限制)
                                  
    tips: 还看到一个网上的案例:

    下面是一个示例:

    解释:
    当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	st01.dbf' size 5m autoextend on;
     
       Tablespace created.
     
       SQL> select file_name, bytes, maxbytes, autoextensible from dba_data_files;
     
       FILE_NAME                                     BYTES   MAXBYTES AUT
       ---------------------------------------- ---------- ---------- ---
       D:ORACLETST01.DBF                         5242880 1.7180E+10 YES
     
       1 rows selected.
     
    Step-2: Alter the MAXSIZE value from default value
    ======  ==========================================
     
       SQL> alter database datafile 'd:oracle	st01.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:ORACLETST01.DBF                         5242880   10485760 YES
     
       1 rows selected.
     
     
    Step-3: Resize the datafile to a value higher than MAXBYTES
    ======  ===================================================
     
       SQL> alter database datafile 'd:oracle	st01.dbf' resize 20m;
     
       Database altered.
     
     
       SQL> select file_name, bytes, maxbytes, autoextensible from dba_data_files;
     
       FILE_NAME                                     BYTES   MAXBYTES AUT
       ---------------------------------------- ---------- ---------- ---
       D:ORACLETST01.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:ORACLETST01.DBF)能达到的最大大小是dba_data_files.bytes的值。

  • 相关阅读:
    hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
    OpenCV中OpenCL模块函数
    基于年纪和成本(Age & Cost)的缓存替换(cache replacement)机制
    POJ 1637 混合图求欧拉回路 最大流实现
    Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}
    uboot环境变量与内核MTD分区关系
    nor flash 和nand flash 的区别
    NAND Flash大容量存储器K9F1G08U的坏块管理方法
    嵌入式学习之Nand Flash
    s3c2440对nandflash的操作
  • 原文地址:https://www.cnblogs.com/jianshuai520/p/9768648.html
Copyright © 2020-2023  润新知