oracle variable number,【Oracle ASM】Variable Extent Size 原理

01fac6460a22031b8af8da5848698a70.png

Variable size extents enable support for larger ASM datafiles, reduce SGA memory requirements for very large databases, and improve performance for file create and open operations. The size of the extent map that defines a file can be smaller by a factor of 8 and 64 depending on the file size. The initial extent size is equal to the allocation unit size and it increases by a factor of 8 and 64 at predefined thresholds.This feature is automatic for newly created and resized datafiles when the disk group compatibility attributes are set to Oracle Release 11 or higher. For information about compatibility attributes, see “Disk Group Compatibility”.

For 11.1 shows the ASM file extent relationship with allocation units. Extent size is always equal to AU for the first 20000 extent sets (0 – 19999). Figure 1-4 shows the first eight extents (0 to 7) distributed on four ASM disks. After the first 20000 extent sets, the extent size becomes 8*AU for next 20000 extent sets (20000 – 39999). This is shown as bold rectangles labeled with the extent set numbers 20000 to 20007, and so on. The next increment for an ASM extent is 64*AU (not shown in the figure).

The ASM coarse striping is always equal to the disk group AU size, but fine striping size always remains 128KB in any configuration (not shown in the figure). The AU size is determined at creation time with the allocation unit size (AU_SIZE) disk group attribute. The values can be 1, 2, 4, 8, 16, 32, and 64 MB.

FOR 11.2:

The extent size of a file varies as follows:

Extent size always equals the disk group AU size for the first 20000 extent sets (0 – 19999).

Extent size equals 4*AU size for the next 20000 extent sets (20000 – 39999).

Extent size equals 16*AU size for the next 20000 and higher extent sets (40000+)

92f5d8cd333323161e54fcb10cdfd6a3.gif

如绿字所标记 Variable Extent Size要求DATABASE_COMPATIBILITY 》=11.1,否则不管你构建多大的数据文件 最后其Extent Size总是等于1个AU的。

SQL> select * from x$kffxp where size_kffxp!=1 and rownum<3;

ADDR INDX INST_ID GROUP_KFFXP NUMBER_KFFXP COMPOUND_KFFXP INCARN_KFFXP PXN_KFFXP XNUM_KFFXP LXN_KFFXP DISK_KFFXP AU_KFFXP FLAGS_KFFXP CHK_KFFXP SIZE_KFFXP

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

00007F6FCB2557F0 54983 1 1 6345 16783561 838455287 40000 20000 0 4 17036 0 224 4

00007F6FCB2557F0 54984 1 1 6345 16783561 838455287 40001 20000 1 0 3888 0 21 4

如上述查询 size_kffxp 为Extent的大小(几个AU)。 这些EXTENT对应于FILE NUMBER 6345:

[oracle@mlab2 ~]$ kfed read /dev/asm-disk9 aun=22 blkn=201|less

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 6345 ; 0x004: blk=6345

kfbh.block.obj: 1 ; 0x008: file=1

kfbh.check: 2648198861 ; 0x00c: 0x9dd84ecd

kfbh.fcn.base: 1506490 ; 0x010: 0x0016fcba

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfffdb.node.incarn: 838455287 ; 0x000: A=1 NUMM=0x18fce7fb

kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff

kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0

kfffdb.hibytes: 5 ; 0x00c: 0x00000005

kfffdb.lobytes: 1073750016 ; 0x010: 0x40002000

kfffdb.xtntcnt: 40768 ; 0x014: 0x00009f40

kfffdb.xtnteof: 40768 ; 0x018: 0x00009f40

kfffdb.blkSize: 8192 ; 0x01c: 0x00002000

kfffdb.flags: 17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0

kfffdb.fileType: 2 ; 0x021: 0x02

kfffdb.dXrs: 18 ; 0x022: SCHE=0x1 NUMB=0x2

kfffdb.iXrs: 19 ; 0x023: SCHE=0x1 NUMB=0x3

kfffdb.dXsiz[0]: 20000 ; 0x024: 0x00004e20

kfffdb.dXsiz[1]: 20000 ; 0x028: 0x00004e20

kfffdb.dXsiz[2]: 4294967288 ; 0x02c: 0xfffffff8

kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff

kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000

kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000

kfffdb.xtntblk: 63 ; 0x03c: 0x003f

kfffdb.break: 60 ; 0x03e: 0x003c

kfffdb.priZn: 0 ; 0x040: KFDZN_COLD

kfffdb.secZn: 0 ; 0x041: KFDZN_COLD

kfffdb.ub2spare: 0 ; 0x042: 0x0000

kfffdb.alias[0]: 6998 ; 0x044: 0x00001b56

kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff

kfffdb.strpwdth: 8 ; 0x04c: 0x08

kfffdb.strpsz: 20 ; 0x04d: 0x14

kfffdb.usmsz: 0 ; 0x04e: 0x0000

kfffdb.crets.hi: 32999496 ; 0x050: HOUR=0x8 DAYS=0x2 MNTH=0x2 YEAR=0x7de

kfffdb.crets.lo: 988212224 ; 0x054: USEC=0x0 MSEC=0x1bb SECS=0x2e MINS=0xe

kfffdb.modts.hi: 32999500 ; 0x058: HOUR=0xc DAYS=0x2 MNTH=0x2 YEAR=0x7de

kfffdb.modts.lo: 0 ; 0x05c: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0

kfffdb.dasz[0]: 0 ; 0x060: 0x00

kfffdb.dasz[1]: 2 ; 0x061: 0x02

kfffdb.dasz[2]: 4 ; 0x062: 0x04

kfffdb.dasz[3]: 0 ; 0x063: 0x00

kfffdb.permissn: 0 ; 0x064: 0x00

kfffdb.ub1spar1: 0 ; 0x065: 0x00

kfffdb.ub2spar2: 0 ; 0x066: 0x0000

kfffdb.user.entnum: 0 ; 0x068: 0x0000

kfffdb.user.entinc: 0 ; 0x06a: 0x0000

kfffdb.group.entnum: 0 ; 0x06c: 0x0000

kfffdb.group.entinc: 0 ; 0x06e: 0x0000

/* -------------------------------- kfdasz --------------------------------- */

/*

NAME

kfdasz - Kernel Files Disk Au SiZe.

DESCRIPTION

Enumerates the possible AU size multiples which may be used for

Multi-AU "buddied" extents.

NOTES

The AU size multiple value may be determined by using the

KFDASZ_VALUE macro.

*/

#ifndef KFDASZ_1X

/* 10g had space for four sizes, but only 1x was used. The remaining sizes

* are new in 11, but 10g never references them, so it is safe to change the

* values

*/

#define KFDASZ_1X ((kfdasz)0) /* 1x AU size */

#define KFDASZ_2X ((kfdasz)1) /* 2x AU size */

#define KFDASZ_4X ((kfdasz)2) /* 4x AU size */

#define KFDASZ_8X ((kfdasz)3) /* 8x AU size */

#define KFDASZ_16X ((kfdasz)4) /* 16x AU size */

#define KFDASZ_32X ((kfdasz)5) /* 32x AU size */

#define KFDASZ_64X ((kfdasz)6) /* 64x AU size */

#define KFDASZ_LAST ((kfdasz)7) /* First unused value 11g */

#define KFDASZ_LAST_10 ((kfdasz)4) /* First unused value 10g */

#define KFDASZ_VALUE(x) ((ub1)(1 << (x)))

#endif /* KFDASZ_1X */

An extent is composed of one or more allocation units (AUs). An extent can be 1 AU, 4 AUs, 16 AUs, or 64 AUs. The extent size is encoded in two bits of the flags field as a kfdasz enumeration.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值