加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何为ORACLE表空间创建大容量数据文件

发布时间:2020-12-12 16:14:43 所属栏目:百科 来源:网络整理
导读:根据网上的查询资料,发现表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×

根据网上的查询资料,发现表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。即:

4k最大表空间为:16384M
8K最大表空间为:32768M
16k最大表空间为:65536M
32K最大表空间为:131072M

64k最大表空间为:262144M

如数据库数据块大小是8192,也就是8K,数据文件最大为32768M,为了有足够大的表空间,可以建多个数据文件,比如先建10个,将来不够再加,再建一个索引表空间,这样表空间就够大了。

==================================================

Oracle 10g 新增的表空间类型:大文件 (Bigfile) 表空间。       大文件表空间从某种角度来说提高了 Oracle 在 VLDB 上的管理能力。 只有自动段空间管理的 LMT (Locally Managed Tablespaces ) 支持 BIGFILE 表空间。 大文件表空间只能包含一个文件,但是文件可以达到 4G 个数据块大小(普通的为4M个数据块)。 BFT基本操作       10g 数据库在创建的时候,会指定默认的表空间类型。 如果不特殊指定的话,默认为 SMALLFILE 类型的表空间。       SQL> SELECT * FROM database_properties WHERE property_name = 'DEFAULT_TBS_TYPE'; 这种情况下,如果我们创建表空间的时候不指定类型,那么默认创建的都是 SMALLFILE 类型的表空间。 修改数据库默认的表空间类型 可以通过 ALTER DATABASE 命令来修改数据库默认的表空间类型:       SQL> ALTER DATABASE SET DEFAULT bigfile TABLESPACE;   Database altered.       SQL> SELECT *  FROM database_properties WHERE property_name = 'DEFAULT_TBS_TYPE';       SQL>    SQL> ALTER DATABASE SET DEFAULT smallfile TABLESPACE;       创建 BIGFILE 类型的表空间,只需指定额外的一个参数 BIGFILE 即可, 其他和原有创建表空间语法类似:       CREATE BIGFILE TABLESPACE bftbs  DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs01.dbf' SIZE 5M;   DBA_TABLESPACES (USER_TABLESPACES)与 V$TABLESPACE 这两个视图可以查看 BIGFILE 表空间的相关信息。 先看看 DBA_TABLESPACES 在 10g 中有了什么变化:       SQL> desc DBA_TABLESPACES          SQL>       和 9i 相比, DBA_TABLESPACES 视图多了两列:RETENTION 和 BIGFILE。 其中 BIGFILE 列说明该表空间是否为 BFT:       SQL> SELECT tablespace_name,bigfile FROM dba_tablespaces; 8 rows selected.      V$TABLESPACE 视图相对 9i 也增加了新的列:   SQL> desc V$TABLESPACE   Name 其中 FlASHBACK_ON 和 BIGFILE 列都是新增的。       BFT 属性       BFT有一些特有的属性。       1.每个表空间只能包含一个数据文件。如果试图添加新的文件,则会报告 ORA-32771 错误:       SQL> ALTER TABLESPACE bftbs   ADD DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M;    ALTER TABLESPACE bftbs   *   ERROR at line 1:    ORA-32771: cannot add file to bigfile tablespace       2.只有自动段空间管理的 LMT (locally managed tablespaces ) 支持 BFT       SQL> CREATE BIGFILE TABLESPACE bftbs02    DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M    EXTENT MANAGEMENT DICTIONARY;    CREATE BIGFILE TABLESPACE bftbs02   *   ERROR at line 1:    ORA-12913: Cannot create dictionary managed tablespace       SQL> CREATE BIGFILE TABLESPACE bftbs02    DATAFILE '/u01/app/oracle/oradata/DEMO/bftbs02.dbf' SIZE 5M   SEGMENT SPACE MANAGEMENT MANUAL;    CREATE BIGFILE TABLESPACE bftbs02   *   ERROR at line 1:    ORA-32772: BIGFILE is invalid option for this type of tablespace       3.相对文件号(RELATIVE_FNO)为1024 ( 4096 on OS/390)       因为BFT只有一个数据文件,所以其相对文件号也是固定的:1024       SQL> SELECT tablespace_name,file_id,relative_fno      FROM dba_data_files;       SQL>       4.rowid的变化       在 BFT 上存储的表的 ROWID 与 smallfile 表空间上的 rowid 结构有些不同的。 要正确得到 rowid 信息,dbms_rowid 包增加了一个新的参数 ts_type_in 来解决这个问题。 参考这个范例:       SQL> SELECT DBMS_ROWID.rowid_block_number (ROWID,'BIGFILE')      FROM foo; 24       SQL>       你可以创建多大的表空间?       我们在前面提及,BFT 还受到操作系统的文件系统的限制。 下面我们以 Linux 操作系统为例:       SQL> SHOW parameters db_block_size         db_block_size  integer   8192    SQL>       也就是说,理论上我们可以创建最大 32T。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读