oracle db_nk_cache_size
来源:互联网 发布:kmp算法next作用 编辑:程序博客网 时间:2024/06/05 10:52
Note:
(1)32-bit operating systems support a maximum DB_BLOCK_SIZE value of16384(16k)--32位系统,db_block_size最大16k
(2)64-bit operating systems support a maximum DB_BLOCK_SIZE value of32768(32k)--64位系统,db_block_size最大32k
DB_nK_CACHE_SIZE (where n = 2, 4, 8, 16, 32) specifies thesize of the cache for the nK buffers. You can set this parameter onlywhen DB_BLOCK_SIZE has a value other than nK. For example, ifDB_BLOCK_SIZE=4096, then it is illegal to specify the parameterDB_4K_CACHE_SIZE (because the size for the 4 KB block cache is alreadyspecified by DB_CACHE_SIZE).
-- DB_nK_CACHE_SIZE 参数指定nK 的buffer,在指定cache时,要确保有足够的空间。 不能和DB_BLOCK_SIZE参数冲突,n 可以取2,4,8,16,32.
Donot set this parameter to zero if there are any online tablespaces with an nKblock size.
Operating system-specific block size restrictions apply.For example, you cannot set DB_32K_CACHE_SIZE if the operating system's maximumblock size is less than 32 KB. Also, you cannot set DB_2K_CACHE_SIZE if theminimum block size is greater than 2 KB.
-- DB_nK_CACHE_SIZE要操作系统支持,如果n=32,但操作系统支持,也是不行的。
See Also:
Youroperating system-specific Oracle documentation for more information on blocksize restrictions
二. 测试
--查看db_block_size
SYS@anqing2(rac2)> show parameterdb_block_size
NAME TYPE VALUE
------------------------------------ -----------------------------------------
db_block_size integer 8192
--查看操作系统位数
[root@rac2 ~]# cat /proc/cpuinfo | grepflags | grep 'lm' | wc -l
1
结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit。
有关CPU的更多信息参考:
Linux CPU 信息查看
http://blog.csdn.net/tianlesoftware/article/details/5970500
--查看db_32k_cache_size值
SYS@anqing2(rac2)> show parameterdb_32k_cache_size
NAME TYPE VALUE
----------------------------------------------- ------------------------------
db_32k_cache_size big integer 0
-- 指定32k 时,报错,提示系统不支持,看来只能用16k了
SYS@anqing1(rac1)> alter system setdb_32k_cache_size=1M scope=both sid='anqing1';
alter system set db_32k_cache_size=1Mscope=both sid='anqing1'
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-00382: 32768 not a valid block size,valid range [..]
--指定16k 的cachebuffer
SYS@anqing1(rac1)> alter system set db_16k_cache_size=1M scope=bothsid='anqing1';
System altered.
SYS@anqing2(rac2)> alter system set db_16k_cache_size=1M scope=bothsid='anqing2';
System altered.
-- 因为我的测试环境是RAC,所以在2个节点上都指定了参数
--查看cache,虽然指定了1M,但系统使用了默认的最小值
SYS@anqing1(rac1)> show parameter db_16k_cache_size
NAME TYPE VALUE
----------------------------------------------- ------------------------------
db_16k_cache_size big integer 4M
SYS@anqing2(rac2)> show parameter db_16k_cache_size
NAME TYPE VALUE
----------------------------------------------- ------------------------------
db_16k_cache_size big integer 4M
-- 这个最小的默认值,上面的官网说明有解释:
--values greater thanzero are automatically modified to be either the granule size * number ofprocessor groups, or 4 MB * number of CPUs, whichever is greater
--指定了16kcache,我们就可以创建block 为16k的表空间了
SYS@anqing1(rac1)> CREATE TABLESPACETest DATAFILE
2 '+DATA/anqing/datafile/test01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10MMAXSIZE 100M BLOCKSIZE 16K;
Tablespace created.
-- 注意这里指定了Blocksize为16k,和我们之前创建的Cache 大小相对应。
--为了验证不指定cache报的错误,我们创建一个4k的tablespace
SYS@anqing1(rac1)> CREATE TABLESPACE TTDATAFILE '+DATA/anqing/datafile/TT01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10MMAXSIZE 100M BLOCKSIZE 4K;
CREATE TABLESPACE TT DATAFILE'+DATA/anqing/datafile/TT01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE 100MBLOCKSIZE 4K
*
ERROR at line 1:
ORA-29339: tablespaceblock size 4096 does not match configured block sizes
-- 这里提示了我们:ORA-29339的错误,所以在创建Multiple Block Sizes 之前,必须指定对应的Cache buffer。
--创建一个测试表,放到16k的test 表空间
SYS@anqing1(rac1)> create table tt16k tablespace test as select * from dba_objects;
Table created.
--验证一下表tt16k的block 大小
SYS@anqing1(rac1)> selectsegment_name,blocks from dba_segments where segment_name='TT16K';
SEGMENT_NAME BLOCKS
--------------- ----------
TT16K 384
--当表的每个block越大时,那么它里面就能够存放更多的block
--我们使用8k的block 来创建一个相同的表,来查看它使用blocks,从而进行对比
SYS@anqing1(rac1)> create table tt8k as select * from dba_objects;
Table created.
SYS@anqing1(rac1)> select segment_name,blocks from dba_segments wheresegment_name='TT8K';
SEGMENT_NAME BLOCKS
--------------- ----------
TT8K 768
--看到,使用16k是384个blocks,使用8k是768个blocks。
-- 将tt8kmove 到 test(16k)
SYS@anqing1(rac1)> alter table tt8k move tablespace test;
Table altered.
SYS@anqing1(rac1)>select segment_name,blocks from dba_segments wheresegment_name='TT8K';
SEGMENT_NAME BLOCKS
--------------- ----------
TT8K 384
使用的Blocks 就下降下来了。
- oracle db_nk_cache_size
- db_nk_cache_size
- DB_nK_cache_size研究
- OCP-043 DB_nK_CACHE_SIZE
- DB_nK_CACHE_SIZE参数设置与数据库默认块大小之间的限制
- 【参数】DB_nK_CACHE_SIZE参数设置与数据库默认块大小之间的限制
- Oracle???
- oracle
- oracle
- oracle
- oracle
- oracle...
- oracle
- oracle
- ORACLE
- Oracle
- ORACLE
- Oracle
- MSSQLServer将远端数据库保存到本地
- 海康威视DS-4100、4000HC 系列板卡SDK编程指南
- Microsoft.ACE.OLEDB.12.0问题解决方法
- SQL Server 跨数据库查询
- 将Excel2007导入SQL Server2008操作方法
- oracle db_nk_cache_size
- 淘宝海量存储之单机事务面临的问题及解决办法
- oracle rowid学习
- linux top命令
- Linux ps命令
- linux运行级别
- 一位ORACLE DBA大牛离职时候的过往总结
- Oracle在Linux内核参数的修改
- php 自定义错误error_function 的建立