1Z0-052 · Question #74
You have executed this command to change the size of the database buffer cache: SQL> ALTER SYSTEM SET DB_CACHE_SIZE=2516582; System altered. To verify the change in size, you executed this command…
The correct answer is A. Because 4194304 is the granule size. Oracle allocates SGA memory in fixed units called granules; any requested size is rounded up to the nearest granule boundary, which is why the resulting value differs from the requested value.
Question
You have executed this command to change the size of the database buffer cache:
SQL> ALTER SYSTEM SET DB_CACHE_SIZE=2516582; System altered. To verify the change in size, you executed this command:
SQL> SHOW PARAMETER DB_CACHE_SIZE NAME TYPE VALUE -------------- ------------ ------------ db_cache_size big integer 4194304 Why is the value set to 4194304 and not to 2516582?
Options
- ABecause 4194304 is the granule size
- BBecause 4194304 is the standard block size
- CBecause 4194304 is the largest nonstandard block size defined in the database
- DBecause 4194304 is the total size of data already available in the database buffer cache
How the community answered
(20 responses)- A75% (15)
- B15% (3)
- C5% (1)
- D5% (1)
Why each option
Oracle allocates SGA memory in fixed units called granules; any requested size is rounded up to the nearest granule boundary, which is why the resulting value differs from the requested value.
Oracle's SGA is divided into contiguous units called granules, and the size of each granule is determined at instance startup based on total SGA size (typically 4 MB for SGAs under 128 MB, and 16 MB for larger SGAs). When DB_CACHE_SIZE is set to 2,516,582 bytes, Oracle cannot allocate a partial granule, so it rounds up to the nearest full granule boundary, resulting in 4,194,304 bytes (one 4 MB granule). This granule-based allocation is fundamental to how Oracle manages and resizes all dynamic SGA components.
The standard block size (typically 8,192 bytes or 8 KB) is the unit for data storage within datafiles and the buffer cache, not the unit of SGA memory allocation.
Nonstandard block sizes are defined by parameters like DB_2K_CACHE_SIZE and refer to alternate block size buffer pools, which are unrelated to how Oracle rounds SGA component sizes.
The amount of data currently cached in the buffer cache is a runtime metric and has no bearing on how Oracle rounds a parameter value to a granule boundary during an ALTER SYSTEM command.
Concept tested: Oracle SGA granule-based memory allocation rounding
Source: https://docs.oracle.com/cd/E11882_01/server.112/e40402/memory003.htm
Topics
Community Discussion
No community discussion yet for this question.