默认情况下创建的表空间使用的数据块大小是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
相关推荐
相比于之前的**字典管理表空间**,它采用了更加高效的空间管理机制,主要通过在每个数据文件的头部添加位图来追踪空间的使用情况,而非依赖数据字典表。 ##### 1.1 字典管理表空间的工作原理 在字典管理表空间中,...
- **非标准数据块大小**:默认情况下,Oracle数据库使用8KB作为数据块大小。如果需要创建使用其他大小(如4KB或16KB)数据块的表空间,则需要使用此选项。 **4. LOGGING/NOLOGGING选项** - **LOGGING**:表示...
- **BLOCKSIZE**:为表空间指定非标准的数据块大小。 - **LOGGING|NOLOGGING**:指定是否记录日志信息。 - **ONLINE|OFFLINE**:设定表空间的状态,即在线或离线状态。 - **PERMANENT|TEMPORARY**:定义表空间是永久...
本章主要讲解了如何管理和操作Oracle数据库中的表空间,包括创建、设置状态、重命名、数据文件管理、临时表空间、大文件表空间、非标准数据块表空间、撤销表空间以及与之相关的数据字典。 首先,基础表空间在Oracle...
DB_BLOCK_SIZE的可选值包括标准块大小4KB、8KB、16KB、32KB、64KB等,以及非标准块大小的2KB、2048KB(即2MB)。在实际操作中,系统能支持的物理文件大小由操作系统决定,最大可达到4194304个数据块。因此,表空间...
其中,Tablespace 是要创建的表空间的名称,DATAFILE 指定组成表空间的一个或多个数据文件,MINIMUM EXTENT 确保表空间内每个占用区的大小是整数的倍数,BLOCKSIZE 指定表空间的非标准块大小,LOGGING 指定在缺省...
- **BLOCKSIZE**:为该表空间指定非标准块大小。 - **LOGGING|NOLOGGING**:指定是否记录重做日志。 - **DEFAULT 存储子句**:指定表空间的默认存储选项。 - **ONLINE|OFFLINE**:指定表空间的在线或离线状态。 - **...
1. 创建多个非系统表空间,满足不同用户需求。 2. 设置用户表空间配额,限制资源使用。 9.7 在OEM(Oracle企业管理器)中管理表空间 OEM提供了图形化界面,方便管理员进行表空间的创建、修改、删除和查询等操作,...
非标准数据块表空间则允许使用不同于数据库默认块大小的数据块,以适应不同应用场景的需求。 总的来说,理解并熟练掌握Oracle表空间的管理是数据库管理员必备的技能,这不仅涉及到数据库的正常运行,也关乎到系统的...
3. 按文件大小和数量划分:大文件表空间(Bigfile Tablespace)适合大型数据库,数据文件可包含大量数据块,最大可达32TB;小文件表空间则允许更多的数据文件,更适合小型到中型数据库。 表空间的管理包括对区...
7. **创建非标准块大小** - **命令格式**: ```sql show parameter db_16k_cache_size; alter system set db_16k_cache_size = 8M; ``` - **解释**:显示和设置16KB块缓存的大小,设置为8MB。 8. **将表空间...
数据块的大小可以通过初始化参数DB_BLOCK_SIZE设定,并且可以支持非标准块。数据区(Extent)是由一组连续的数据块组成,用于保存特定类型的数据,是分配存储空间的最小单位。当段(Segment)中的数据区用完,Oracle...
8. **创建非标准数据块表空间** - 非标准数据块表空间意味着使用不同于系统默认的db_block_size。但一旦确定了初始化参数`db_block_size`,就不能直接设置`db_16k_cache_size`,因为这两个参数互相依赖。要创建非...
BLOCKSIZE 设置用于指定一个非标准的块大小。这个参数可以设置,但是必须设置 db_block_size,至少一个 db_nk_block_size,并且声明的 integer 值必须等于 db_nk_block_size。注意:在临时表空间不能设置这个参数。 ...
数据块的大小由初始化参数`DB_BLOCK_SIZE`设定,标准大小的块称为标准块,非标准大小的则称为非标准块。Oracle的数据块大小通常是操作系统块的整数倍,以确保高效的I/O操作。 数据块的格式包括以下五个部分: - ...