[20161115]11G pre-allocation.txt

[20161115]11G pre-allocation.txt

--11GR2有1个pre-allocation的新特性,通过SMCO进程swap出Wnnn进程,来对空间进行预分配。
--在windows下遇到1次ora-00445,当然不一定是这个问题,可能数据库其他问题死机,导致无法建立后台进程。
--链接:
http://blog.itpub.net/267265/viewspace-2120811/

在这里有2个隐含参数:
1. _enable_space_preallocation 在11g中默认值是3,它可以使表空间在接近100%进行扩展,。
2. _kttext_warning 默认值为5。表示扩展的大小为当时表空间大小的5%
--摘自https://oracleblog.org/working-case/big-file-tablespace-cause-issue-when-pre-allocation/

--在我的生产系统,我个人喜欢设置最大不扩展,空间不足增加数据文件。
--没有看到alert*.log的相关提示,做一些测试看看。
--前面做实验时,链接http://blog.itpub.net/267265/viewspace-2128006/。发现数据文件增加很多,才想起来忽略了这个因素。
--通过例子来说明:

1.环境:
SYS@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> @ &r/hide _enable_space_preallocation
NAME                         DESCRIPTION                  DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE
---------------------------- ---------------------------- ------------- ------------- ------------
_enable_space_preallocation  enable space pre-allocation  TRUE          3             3

SYS@book> @ &r/hide _kttext_warning
NAME                         DESCRIPTION                                              DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE
---------------------------- -------------------------------------------------------- ------------- ------------- ------------
_kttext_warning              tablespace pre-extension warning threshold in percentage TRUE          5             5

CREATE TABLESPACE SUGAR DATAFILE
  '/mnt/ramdisk/book/sugar01.dbf' SIZE 40M AUTOEXTEND ON MAXSIZE 40M
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

create table zz tablespace sugar as select rownum id from dual connect by level<=2;
ALTER TABLE zz MINIMIZE RECORDS_PER_BLOCK ;

SCOTT@book> insert into zz select rownum id from dual connect by level<=9810;
9810 rows created.

--//多次测试插入9810条记录正好。
insert into zz select rownum id from dual connect by level<=9812
            *
ERROR at line 1:
ORA-01653: unable to extend table SCOTT.ZZ by 16 in tablespace SUGAR

2.修改数据文件属性:
SCOTT@book> select * from dba_tablespaces where TABLESPACE_NAME='SUGAR';
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS   MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS    CONTENTS  LOGGING   FOR EXTENT_MAN ALLOCATIO PLU SEGMEN DEF_TAB_ RETENTION   BIG PREDICA ENC COMPRESS_FOR
--------------- ---------- -------------- ----------- ----------- ----------- ---------- ------------ ---------- --------- --------- --------- --- ---------- --------- --- ------ -------- ----------- --- ------- --- ------------
SUGAR                 8192         131072      131072           1  2147483645 2147483645            0     131072 ONLINE    PERMANENT LOGGING   NO  LOCAL      UNIFORM   NO  AUTO   DISABLED NOT APPLY   NO  HOST    NO

SCOTT@book> select * from dba_data_files where TABLESPACE_NAME='SUGAR';
FILE_NAME                     FILE_ID TABLESPACE_NAME      BYTES     BLOCKS STATUS    RELATIVE_FNO AUT   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_
----------------------------- ------- --------------- ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- -------
/mnt/ramdisk/book/sugar01.dbf       6 SUGAR             41943040       5120 AVAILABLE            6 YES   41943040       5120            1   40894464        4992 ONLINE

--//NEXT_EXTENT=131072=128K
--//而数据文件INCREMENT_BY=1,也就是每次增加8K。

ALTER DATABASE DATAFILE '/mnt/ramdisk/book/sugar01.dbf' AUTOEXTEND ON NEXT 8K MAXSIZE UNLIMITED;

$ ls -l /mnt/ramdisk/book/sugar01.dbf
-rw-r----- 1 oracle oinstall 41951232 2016-11-15 08:21:50 /mnt/ramdisk/book/sugar01.dbf

--当前数据文件大小 40*1024*1024+8192=41951232。(注意数据文件前有8K OS块)。

3.增加1条记录看看。

SCOTT@book> insert into zz select rownum+9810 id from dual connect by level<=1;
1 row created.

SCOTT@book> commit ;
Commit complete.

$ ls -l /mnt/ramdisk/book/sugar01.dbf
-rw-r----- 1 oracle oinstall 44179456 2016-11-15 08:24:19 /mnt/ramdisk/book/sugar01.dbf

SCOTT@book> select * from dba_data_files where TABLESPACE_NAME='SUGAR';
FILE_NAME                     FILE_ID TABLESPACE_NAME      BYTES     BLOCKS STATUS    RELATIVE_FNO AUT   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_
----------------------------- ------- --------------- ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- -------
/mnt/ramdisk/book/sugar01.dbf       6 SUGAR             44171264       5392 AVAILABLE            6 YES 3.4360E+10    4194302            1   43122688        5264 ONLINE

--44179456-41951232=2228224
--2228224/1024/1024=2.125M,可以发现增加2.125M。
-- 5392-5120=272块

--可以发现我仅仅增加1条记录,数据文件扩展了2.125M,增加了272块。 而不是原来的慢慢增加,我设置NEXT_EXTENT=131072=128K。
SCOTT@book> select * from dba_free_space where TABLESPACE_NAME='SUGAR';
TABLESPACE_NAME                   FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
------------------------------ ---------- ---------- ---------- ---------- ------------
SUGAR                                   6       5136    2097152        256            6

-- dba=6,5136后面有256块没有使用。

SYS@book> @ &r/hide _kttext_warning
NAME                         DESCRIPTION                                              DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE
---------------------------- -------------------------------------------------------- ------------- ------------- ------------
_kttext_warning              tablespace pre-extension warning threshold in percentage TRUE          5             5

-- 40*0.05=2.00M,基本符合要求,不过我的alert*文件,没有相关信息。

4.优缺点:
--//这种特性既有好处也有缺点,链接里面https://oracleblog.org/working-case/big-file-tablespace-cause-issue-when-pre-allocation/
--//如果是大文件,或者数据文件很大,比如20G,这样20*0.05=1G,一下增加1G,或者像链接里面提到的使用大数据文件,这样可能出现问题。

--//从我个性讲我喜欢在生产系统增加文件一次性增加好几个,每个大小都是32G-8K,选择不自动扩展。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值