Oracle

maxbytes 和字節之間的不一致。甲骨文

  • May 24, 2021

詢問:

Select ROUND (SUM (d.bytes) / (1024 * 1024 * 1024)) AS size1, 
ROUND (SUM (d.maxbytes) / (1024 * 1024 * 1024)) AS size2
From dba_data_files d where tablespace_name = 'TABLESPACE_NAME'

輸出:

尺寸1:70,尺寸2:64

如您所見,特定表空間的數據文件允許的最大字節數僅為 64GB,但它已以某種方式擴展到 70GB!

場景:在給定的時間點,表空間被完全填滿(64GB),我看到在我的一次例行檢查中使用了 100%。所以我繼續並暫時截斷了一些不需要的表以釋放一些空間。我在我的任何程序中都沒有遇到cannot extend error任何地方(儘管它可能已經發生),但讓我煩惱的是表空間的總大小剛剛從應該停止的 64GB(最大)增加到 70(GB) .

請告知它是如何發生的或我錯過的任何選擇!額外的 6 GB 儲存在哪裡。

提前致謝。

編輯:

輸出:

select bytes,maxbytes,autoextensible 
 from dba_data_files
where tablespace_name = 'TABLESPACE_NAME';

15728640000 4294967296  YES

30303846400 32212254720 YES

28626124800 32212254720 YES

MAXBYTES對於不可自動擴展但BYTES大於 0 的數據文件,為 0。使用此:

Select ROUND (SUM (d.bytes) / (1024 * 1024 * 1024)) AS size1, 
ROUND (SUM (decode(d.maxbytes, 0, d.bytes, d.maxbytes)) / (1024 * 1024 * 1024)) AS size2
From dba_data_files d where tablespace_name = 'TABLESPACE_NAME';

但是可以手動調整上面的數據文件的大小maxbytes

SQL> select file_id, bytes, maxbytes from dba_data_files;

  FILE_ID      BYTES   MAXBYTES
---------- ---------- ----------
        1  954204160 3.4360E+10
        3 1142947840 3.4360E+10
        5  608174080 3.4360E+10
        7    5242880   10485760

SQL> alter database datafile 7 resize 20M;

Database altered.

SQL> select file_id, bytes, maxbytes from dba_data_files;

  FILE_ID      BYTES   MAXBYTES
---------- ---------- ----------
        1  954204160 3.4360E+10
        3 1142947840 3.4360E+10
        5  608174080 3.4360E+10
        7   20971520   10485760

我更新了查詢:

Select ROUND (SUM (d.bytes) / (1024 * 1024 * 1024)) AS size1, 
ROUND (SUM (greates(d.bytes, d.maxbytes)) / (1024 * 1024 * 1024)) AS size2
From dba_data_files d where tablespace_name = 'TABLESPACE_NAME';

引用自:https://dba.stackexchange.com/questions/208585