oracle+buffer_pool,create table中的buffer pool 设置 KEEP 及CACHE 参数的联系及区别

CREATE TABLESPACE LOG_DATA DATAFILE

'/ocfs_data/mxdell/log_data01.dbf' SIZE 4001M AUTOEXTEND OFF,

'/ocfs_ctrl_redo/mxdell/log_data2.dbf' SIZE 2048064K AUTOEXTEND OFF

LOGGING

ONLINE

PERMANENT

EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 20M

BLOCKSIZE 16K

SEGMENT SPACE MANAGEMENT AUTO    -- ASSM

FLASHBACK ON;

----------------------

CREATE TABLE DFMS.EDIBTO850_MAIN

(

CONTROLNUMBER     VARCHAR2(40 BYTE)  NOT NULL,

ISA06             VARCHAR2(50 BYTE),

CREATE_TIME       DATE        DEFAULT sysdate

)

TABLESPACE LOG_DATA

PCTUSED    0

PCTFREE    10

INITRANS   1

MAXTRANS   255

STORAGE    (

INITIAL          10M

NEXT             20M

MINEXTENTS       1

MAXEXTENTS       UNLIMITED

PCTINCREASE      0

BUFFER_POOL      DEFAULT

)

LOGGING

NOCOMPRESS

NOCACHE

NOPARALLEL

MONITORING;

解释:

-- create ablespace 中的flashback on 及 flashback off .

对于crate tablesapce中的FLASHBACK ON,默认情况下创建tablespace就是

启动flashback, 指定将tablespace放在FLASHBACK模式下,Oracle会为这个

tablespace保存闪回日志数据,那么在做FLASHBACK DATABASE 的时候,能够

应用到此表空间上,如果我们不设置flashback模式,默认是FLASHBACK ON.

指定FLASHBACK OFF将使对应的tablespace不在FLASHBACK模式下,Oracle将

不会为它保存任何的闪回日志数据,在做FLASHBACK DATABASE之前,我们必

须先将这个表空间中的数据文件offline或者drop他们,或者还有一种方式

就是,你可以将整个tablespace offline, 在以上任何一种情况下,数据库

不删除存在的闪回日志 。

-- create table

log_data表空间启用了ASSM, 那么建表的时候,没有明确指定pctused, 默认

pctused是0,pctfree默认还是10,INITRANS 1, MAXTRANS 255 表示表的数据

块头部最小和最大的ITL槽(Interested Transaction List), 一般为了优化ITL,

可以设置INITRANS为3或4即可(足够)。关于ITL可以参考下面的链接。PCTINCREASE

在autoallocate下起作用,表示下一个extent大小为前一个的(1+pctincrease%)倍 ,

在uniform. size设置的tablespace下不起作用,Oracle 建议使用PCTINCREASE

的零设置 .

BUFFER POOL -----

包括DEFAULT、KEEP、RECYCLE三个POOL,其大小分别对应三个参数:DB_CACHE_SIZE,

DB_KEEP_CACHE_SIZE, DB_RECYCLE_CACHE_SZIE,这三个POOL相互独立,没有包含的关系。

语法如下:

create/alter table ...... storage(buffer_pool  keep);

default -- 普通的buffer cache .

recycle -- 通常将偶尔访问的大表放入recycle pool中,这样做是为了防止它的一次访问

就将那些频繁使用且应该长时间留在buffer cache中的对象清除出内存。

keep -- 当表被读入的时候,放入keep pool,keep pool 中的数据会尽量长时间的保留,

保留的时间长短依据keep pool的负载而定。对于放入KEEP POOL中的表数据,要么全表放

入,要么全表都out,不会只放入一部分数据。通常将经常访问的对象放入keep pool中。

KEEP POOL 及 CACHE 参数的联系及区别 -----

create/alter table ...... cache;

设置表为cache时,当全表扫描时,将对象数据放入default pool的LRU热端(备注:

如果是nocache,则放入LRU冷端,很快就会被age out),cache适合频繁使用的小

表, 如果有太多的表cache, LRU链表会很拥挤,LRU机制也会受影响,所以该把表

放入keep pool,而且cache子句也不适合大表,因为有可能这个大表会占据整个

LRU链表。

当BUFFER_POOL和CACHE同时使用时,KEEP比NOCACHE有优先权。BUFFER_POOL用来指

定存贮的缓冲池,而CACHE/NOCACHE指定存储的方式。建表时候不注明的话,NOCACHE

是默认值。

CACHE

For data that is accessed frequently, this clause indicates that the blocks

retrieved for this table are placed at the most recently used end of the

least recently used (LRU) list in the buffer cache when a full table scan

is performed. This attribute is useful for small lookup tables.

NOCACHE

For data that is not accessed frequently, this clause indicates that the

blocks retrieved for this table are placed at the least recently used end

of the LRU list in the buffer cache when a full table scan is performed.

NOCACHE is the default for LOB storage.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值