[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,选择不自动扩展。

时间: 2024-07-30 11:01:53

[20161115]11G pre-allocation.txt的相关文章

[20170628]11g修改用户名.txt

[20170628]11g修改用户名.txt --//昨天看了链接,提到修改用户名: http://www.oratea.com/2017/06/26/oracle-11g%e4%bf%ae%e6%94%b9%e7%94%a8%e6%88%b7%e5%90%8d/ --//自己也测试看看. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING         VERSION    BANNER ------------------- ---------- -----

[20170313]11G use_large_pages参数.txt

[20170313]11G use_large_pages参数.txt --11G 增加参数use_large_pages,可以灵活使用hugepages. 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- --------------------------------------------

[20151221]11g设置db_flash_cache_file.txt

[20151221]11g设置db_flash_cache_file.txt --11GR2下可以设置db_flash_cache_file与db_flash_cache_size参数,提高数据库的性能. --我曾经通过例子,快速建立测试数据库,在里面使用ram盘,今天测试使用该参数看看. http://blog.itpub.net/267265/viewspace-1845062/ 1.环境: SYS@book> @ &r/ver1 PORT_STRING                 

[20141111]11G redo暴涨.txt

[20141111]11G redo暴涨.txt --新上线生产系统日志出现暴涨,当天达到了400G,正常业务每天7G上下,导致dataguard,备份出现问题,磁盘空间不足 --自己做一些调查: SYS@xxxx> @ ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -----------------------------------

[20111221]关于11G Virtual columns.txt

11G以前Virtual columns的建立是通过建立函数索引的方式.而且在11G以前Virtual columns是"隐藏"的,11G以后可以定义以及显示在表中定义: 做一个测试,以scott的emp表为例子说明: 1. 10G下的测试: SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g E

[20141029]10g和11G视图DBA_CONSTRAINTS

[20141029]10g和11G视图DBA_CONSTRAINTS.txt --上午同事讲一下表从10g导入11g时,一些约束没有导入,感觉不可能出现这种情况,我在10g下查看一些约束的状态是是disabled,但是 --type显示的是问号(在toad下).想起来我以前遇到的问题, --[20140131]toad看constraints的问题.txt http://blog.itpub.net/267265/viewspace-1076597/ --很容易明白这些表是没有主键,不过在11g

20160822Oracle 11g Temporary Tablespace

[20160822]Oracle 11g Temporary Tablespace.txt 1.11G改进了Temporary Tablespace管理,可以回收临时表空间. alter tablespace temp shrink space; alter tablespace temp shrink space keep 10m; --也可以单独回收一个临时表空间数据文件. alter tablespace temp shrink tempfile  '/u01/app/Oracle/ora

0927hugepages与nr_overcommit_hugepages

[20170927]hugepages与内核参数nr_overcommit_hugepages.txt /proc/sys/vm/nr_overcommit_hugepages specifies how large the pool of huge pages can grow, if more huge pages than /proc/sys/vm/nr_hugepages are requested by applications. Writing any non-zero value

[20170825]11G备库启用DRCP连接3.txt

[20170825]11G备库启用DRCP连接3.txt --//昨天测试了11G备库启用DRCP连接,要设置alter system set audit_trail=none scope=spfile ; --//参考链接http://blog.itpub.net/267265/viewspace-2144036/. --//在测试过程中我遇到1个奇怪问题,就是如果主库没有打开drcp,备库执行exec dbms_connection_pool.start_pool();失败. --//今天分