`

创建非标准块大小表空间

 
阅读更多

 

默认情况下创建的表空间使用的数据块大小是8K,数据库默认的数据块大小由db_block_size参数决定。如果我们想要创建的表空间超出这个藩篱,首先需要调整数据库的参数db_nk_cache_size。以创建数据库块大小为16K的表空间为例,展示一下这个调整过程。

1.查看当前的数据库大小
sys@ora10g> show parameter db_block_size(命令行形式,也可用sql:select value from v$parameter where name='db_block_size'


NAME                  TYPE                 VALUE
--------------------- -------------------- -------------------
db_block_size         integer              8192

2.查看参数db_16k_cache_size系统默认值
sys@ora10g> show parameter db_16k_cache_size(db_nk_cache_size表示nk大小块的缓存区)

NAME                  TYPE                 VALUE
--------------------- -------------------- -------------------
db_16k_cache_size     big integer          0

该参数默认值为0,表示未启用。

3.创建数据库高速缓存区
sys@ora10g> alter system set db_16k_cache_size=1M scope=both;

System altered.

sys@ora10g> show parameter db_16k_cache_size

NAME                 TYPE                 VALUE
-------------------- -------------------- --------------------
db_16k_cache_size    big integer          32M

即使修改时指定的是1M,修改之后系统会自动给出一个最小的32M大小。

4.添加数据库块为16K的非标准块表空间
在前期准备工作完成的情况下,我们便可以使用“blocksize 16k”参数完成表空间的创建。
sys@ora10g> create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform size 4M blocksize 16K;

5.未对db_16k_cache_size参数进行设置的ORA-29339报错信息
如果在创建表空间之前没有对db_16k_cache_size参数进行调整,将会收到如下ORA-29339报错。
sys@ora10g> create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;
create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K
*
ERROR at line 1:
ORA-29339: tablespace block size 16384 does not match configured block sizes

 


附:uniform size作用

简单地说,打个比方。
有一个initial为65M的表,当要分配新的extent时
1,如果所属的表空间为autoallocate,那么,首先,系统会在64K, 1M, 8M, and 64M找出比64M小,且最大的那个大小。这里便是64M,那么,分配完这一个extent后,还未到达指定的initial大小,继续在4个大小中找,这次符合的是1M
因此,会分配2个extent,大小分别为64M和1M
2,如果所属的表空间为uniform 20M
那么,每个extent固定是20M,要分配>=64M,则需要4个20M的extent

分享到:
评论

相关推荐

    Oracle本地管理表空间

    相比于之前的**字典管理表空间**,它采用了更加高效的空间管理机制,主要通过在每个数据文件的头部添加位图来追踪空间的使用情况,而非依赖数据字典表。 ##### 1.1 字典管理表空间的工作原理 在字典管理表空间中,...

    手工创建表空间

    - **非标准数据块大小**:默认情况下,Oracle数据库使用8KB作为数据块大小。如果需要创建使用其他大小(如4KB或16KB)数据块的表空间,则需要使用此选项。 **4. LOGGING/NOLOGGING选项** - **LOGGING**:表示...

    Oracle表空间和数据文件的管理.docx

    - **BLOCKSIZE**:为表空间指定非标准的数据块大小。 - **LOGGING|NOLOGGING**:指定是否记录日志信息。 - **ONLINE|OFFLINE**:设定表空间的状态,即在线或离线状态。 - **PERMANENT|TEMPORARY**:定义表空间是永久...

    Oracle数据库应用教程--管理表空间.pptx

    本章主要讲解了如何管理和操作Oracle数据库中的表空间,包括创建、设置状态、重命名、数据文件管理、临时表空间、大文件表空间、非标准数据块表空间、撤销表空间以及与之相关的数据字典。 首先,基础表空间在Oracle...

    Oracle如何设置表空间数据文件大小

    DB_BLOCK_SIZE的可选值包括标准块大小4KB、8KB、16KB、32KB、64KB等,以及非标准块大小的2KB、2048KB(即2MB)。在实际操作中,系统能支持的物理文件大小由操作系统决定,最大可达到4194304个数据块。因此,表空间...

    ORACLE数据库管理基础8.pptx

    其中,Tablespace 是要创建的表空间的名称,DATAFILE 指定组成表空间的一个或多个数据文件,MINIMUM EXTENT 确保表空间内每个占用区的大小是整数的倍数,BLOCKSIZE 指定表空间的非标准块大小,LOGGING 指定在缺省...

    Oracle表空间与数据文件的管理.docx

    - **BLOCKSIZE**:为该表空间指定非标准块大小。 - **LOGGING|NOLOGGING**:指定是否记录重做日志。 - **DEFAULT 存储子句**:指定表空间的默认存储选项。 - **ONLINE|OFFLINE**:指定表空间的在线或离线状态。 - **...

    专题资料(2021-2022年)8管理表空间.ppt

    1. 创建多个非系统表空间,满足不同用户需求。 2. 设置用户表空间配额,限制资源使用。 9.7 在OEM(Oracle企业管理器)中管理表空间 OEM提供了图形化界面,方便管理员进行表空间的创建、修改、删除和查询等操作,...

    第4章Oracle资料学习.pptx

    非标准数据块表空间则允许使用不同于数据库默认块大小的数据块,以适应不同应用场景的需求。 总的来说,理解并熟练掌握Oracle表空间的管理是数据库管理员必备的技能,这不仅涉及到数据库的正常运行,也关乎到系统的...

    Oracle数据库基础及应用第10章管理表空间和文件.pptx

    3. 按文件大小和数量划分:大文件表空间(Bigfile Tablespace)适合大型数据库,数据文件可包含大量数据块,最大可达32TB;小文件表空间则允许更多的数据文件,更适合小型到中型数据库。 表空间的管理包括对区...

    ORACLE 表空間管理

    7. **创建非标准块大小** - **命令格式**: ```sql show parameter db_16k_cache_size; alter system set db_16k_cache_size = 8M; ``` - **解释**:显示和设置16KB块缓存的大小,设置为8MB。 8. **将表空间...

    oracle第二讲(创建及管理表).pptx

    数据块的大小可以通过初始化参数DB_BLOCK_SIZE设定,并且可以支持非标准块。数据区(Extent)是由一组连续的数据块组成,用于保存特定类型的数据,是分配存储空间的最小单位。当段(Segment)中的数据区用完,Oracle...

    ORACLE_11g教程_数据库应用简明教程

    8. **创建非标准数据块表空间** - 非标准数据块表空间意味着使用不同于系统默认的db_block_size。但一旦确定了初始化参数`db_block_size`,就不能直接设置`db_16k_cache_size`,因为这两个参数互相依赖。要创建非...

    Oracle_create_tablespace语法详解.docx

    BLOCKSIZE 设置用于指定一个非标准的块大小。这个参数可以设置,但是必须设置 db_block_size,至少一个 db_nk_block_size,并且声明的 integer 值必须等于 db_nk_block_size。注意:在临时表空间不能设置这个参数。 ...

    Oracle的逻辑结构、物理结构与实例.docx

    数据块的大小由初始化参数`DB_BLOCK_SIZE`设定,标准大小的块称为标准块,非标准大小的则称为非标准块。Oracle的数据块大小通常是操作系统块的整数倍,以确保高效的I/O操作。 数据块的格式包括以下五个部分: - ...

Global site tag (gtag.js) - Google Analytics