Oracle OCP认证考试题目详解082系列第53题
一、考察的知识点摘要
本题主要考察在Oracle数据库中创建非标准块大小(Non-standard Block Size)表空间的前提条件和配置要求。核心知识点包括:
- SGA内存结构配置:必须为每个非标准块大小配置独立的缓冲区缓存(Buffer Cache)子池,且其大小需在SGA可容纳范围内。
- 文件系统空间要求:创建数据文件必须确保目标文件系统有足够的可用空间。
- 块大小的独立性:数据库块大小(Block Size)与操作系统块大小(Operating System Block Size)无关。
- 缓存参数的关系:不同块大小对应的缓存池大小(如
DB_CACHE_SIZE
与DB_32K_CACHE_SIZE
)是相互独立的,不存在大小比较的强制要求。
二、英文题目与答案
题目:You must create a tablespace of non-standard block size in a new file system and plan to use this command. The standard block size is 8k but other non-standard block sizes will also be used. Which two are requirements for this command to succeed?
CREATE TABLESPACE ns_tbs
DATAFILE '/u02/oracle/data/nstbs_f01.dbf'
SIZE 100G
BLOCKSIZE 32K;
A. DB_32K_CACHE_SIZE must be set to a value that can be accommodated in the SGA
B. DB_32K_CACHE_SIZE should be set to a value greater than DB_CACHE_SIZE
C. DB_32K_CACHE_SIZE must be less than DB_CACHE_SIZE
D. The operating system must use a 32k block size
E. DB_CACHE_SIZE must be set to a size that is smaller than DB_32K_CACHE_SIZE
F. The /u02 file system must have at least 100g space for the datafile
正确答案:A 和 F
三、题目翻译
你必须在一个新的文件系统中创建一个非标准块大小的表空间,并计划使用以下命令。标准块大小为8k,但也将使用其他非标准块大小。此命令成功执行的两个要求是什么?
CREATE TABLESPACE ns_tbs
DATAFILE '/u02/oracle/data/nstbs_f01.dbf'
SIZE 100G
BLOCKSIZE 32K;
A. DB_32K_CACHE_SIZE 必须设置为一个能被SGA容纳的值
B. DB_32K_CACHE_SIZE 应设置为大于 DB_CACHE_SIZE 的值
C. DB_32K_CACHE_SIZE 必须小于 DB_CACHE_SIZE
D. 操作系统必须使用32k的块大小
E. DB_CACHE_SIZE 必须设置为小于 DB_32K_CACHE_SIZE 的大小
F. /u02 文件系统必须为数据文件预留至少100g的空间
四、题目解析
- 选项A解析:正确。
DB_nK_CACHE_SIZE
(此处n=32)初始化参数用于在SGA中为指定非标准块大小的数据分配独立的缓冲区缓存(Buffer Cache)。这个缓存池的大小必须是有效的,并且其总值(加上SGA中其他组件的大小)必须在整个SGA的最大容量限制之内,否则实例无法启动或无法分配内存,导致创建表空间失败。 - 选项B解析:错误。
DB_32K_CACHE_SIZE
(用于32K块)和DB_CACHE_SIZE
(用于标准块,此处为8K)是两个独立配置的缓存池。它们服务于不同块大小的数据,其大小之间没有直接的比较关系。一个可以比另一个大,也可以比另一个小,完全取决于实际的工作负载需求。 - 选项C解析:错误。同选项B解析,两者大小无必然联系。
- 选项D解析:错误。数据库的块大小(Database Block Size) 和操作系统的块大小(Operating System Block Size) 是两个完全不同的概念。Oracle数据库块是数据库I/O的最小单位,由数据库自身管理。操作系统块是文件系统或磁盘I/O的单位。数据库可以使用任何支持的块大小(如32K),而完全不需要操作系统块大小与之匹配。
- 选项E解析:错误。同选项B和C解析,两者大小无必然联系。
DB_CACHE_SIZE
是标准块大小的默认缓存,DB_32K_CACHE_SIZE
是为32K块专门分配的缓存,它们之间没有大小依赖关系。 - 选项F解析:正确。
SIZE 100G
子句指定了要创建的数据文件大小为100GB。这是一个硬性要求。如果文件系统/u02
的可用空间不足100GB,CREATE TABLESPACE
命令将因“无法分配空间”或“磁盘空间不足”的错误而失败。
五、考察的知识点详情
-
SGA与多块大小缓存池:
- SGA (System Global Area):是Oracle实例的一块共享内存区域,用于存储数据库信息,供所有服务器进程共享。其中缓冲区缓存(Buffer Cache) 是SGA的重要组成部分,用于缓存从数据文件读取的数据块。
- 标准块大小缓存:参数
DB_CACHE_SIZE
定义了标准块大小(由DB_BLOCK_SIZE
指定)的缓冲区缓存大小。 - 非标准块大小缓存:参数
DB_nK_CACHE_SIZE
(n可以是2, 4, 8, 16, 32,但不能等于标准块大小)用于为非标准块大小的表空间分配独立的缓冲区缓存。这是使用非标准块大小表空间的先决条件。例如,要使用32K块大小的表空间,必须设置DB_32K_CACHE_SIZE
。
-
创建非标准块大小表空间的完整流程:
- 规划与配置:确定非标准块大小(如32K)和所需缓存大小。
- 修改参数文件:在初始化参数文件(如
spfile.ora
)中设置DB_32K_CACHE_SIZE = [size]
(例如DB_32K_CACHE_SIZE=100M
)。 - 重启数据库(如需):如果参数是静态参数或需要生效,可能需要重启数据库实例。
- 确保存储空间:确认目标文件系统有足够空间存放数据文件。
- 执行创建命令:执行
CREATE TABLESPACE ... BLOCKSIZE 32K ...
命令。
-
应用场景:
- 不同类型的应用或表可能适合不同的块大小。例如,执行大量全表扫描或存储大型对象(LOBs)的数据仓库应用可能更适合更大的块大小(如32K),而OLTP系统可能更适合较小的块大小(如8K)。
- 在一个数据库中可以同时存在多种块大小的表空间,为不同的应用需求提供灵活性。