Oracle資料庫資料檔案small file的最大值

mengzhaoliang發表於2009-03-31

/*
*時間:2009-03-31
*環境:WindowsXP   Oracle10g10.2.0.1.0
*標題:Oracle資料庫資料檔案small file的最大值
*/

1、獲取建立表空間的sql語句
SQL>set   long    10000   (在sqlplus設定變數,不然顯示的內容不全)
SQL> select   dbms_metadata.get_ddl('TABLESPACE','SYSTEM')   from   dual;

DBMS_METADATA.GET_DDL('TABLESPACE','SYSTEM')
--------------------------------------------------------------------------------


  CREATE TABLESPACE "SYSTEM" DATAFILE
  'E:\PROGRAMFILES\ORACLE\PRODUCT\10.2.0\ORADATA\MZL\SYSTEM01.DBF' SIZE 314572800
  AUTOEXTEND ON NEXT 10485760 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL
   ALTER DATABASE DATAFILE
  'E:\PROGRAMFILES\ORACLE\PRODUCT\10.2.0\ORADATA\MZL\SYSTEM01.DBF' RESIZE 503316

發現建立的資料檔案大小都不能大於32GB?

預設建立資料庫有5個表空間:
系統表空間system,預設的資料檔案為480MB
輔助表空間sysaux,預設的資料庫檔案為240MB
回滾表空間undotbs1,預設的資料庫檔案為25MB
臨時表空間temp,預設的資料庫檔案為,20MB
使用者預設使用的表空間:users,預設的資料庫檔案為5M

2、檢視各表空間的資料檔案的位置、大小
SQL> select   file_name,tablespace_name,bytes/1024/1024   "bytes MB",
  2  autoextensible,maxbytes/1024/1024 "maxbytes MB" from dba_data_files;

臨時表空間的位置、大小
SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",
  2  autoextensible,maxbytes/1024/1024 "maxbytes MB" from dba_temp_files;

3、建立一個自動擴充套件的表空間
SQL> l
  1  create tablespace test
  2  datafile 'E:\PROGRAMFILES\ORACLE\PRODUCT\10.2.0\ORADATA\MZL\test.dbf'
  3* size 2M autoextend on
SQL> /

表空間已建立。


SQL> select   dbms_metadata.get_ddl('TABLESPACE','TEST')   from   dual;

DBMS_METADATA.GET_DDL('TABLESPACE','TEST')
--------------------------------------------------------------------------------


  CREATE TABLESPACE "TEST" DATAFILE
  'E:\PROGRAMFILES\ORACLE\PRODUCT\10.2.0\ORADATA\MZL\TEST.DBF' SIZE 2097152
  AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

 

剛才建立了一個自動擴充套件的表空間:檢視只能最大MAXSIZE 32767M,大約32GB(31.999GB),
原來資料庫的db_block_size為8192位元組,也就是8KB,但為什麼最大隻能小於32GB。
Oracle中每個small file資料檔案最多隻能包含2的22次方 - 1 個資料塊,所以資料庫最大為8KB*(2^22-1)=32GB-8KB
所以資料庫的db_block_size為8KB時,資料檔案的最大值為32GB-8KB,
如果Oracle的db_block_size為16KB時,資料檔案的最大值為64GB-16KB(16KB*(2^22-1))


注:檢視資料庫表空間的各引數:資料塊大小、初始化區大小、遞增區大小、狀態、區管理、段管理、是否大檔案
select *   from   dba_tablespaces;

 


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-582453/,如需轉載,請註明出處,否則將追究法律責任。

相關文章