适用于:
Oracle OLAP - Version: 10.2 and later [Release: 10.2 and later ]
本文档的信息适用于任何平台。、
目地:
提出了一种分析洞察力如何工作空间是储存在数据库中。
范围和应用
这篇文档被用于DBAs,管理Oracle OLAP,Oracle Olap。
解析工作区(AW)储存在一张表Oracle数据库。
依据逻辑存储结构,一张表格是由数据块,范围和片段组成。
创建一张表和多个表空间,表空间的数据存储在磁盘中的物理文件中。
逻辑数据块的最小单元数据在数据库的存储空间管理丢失,这是为单位和交换数据从缓存内存缓冲区。
可以创建一个表空间与大小的块标准数据库以外的数据库的大小的块的价值db_block_size参数的数据库提供缓冲缓存配置成具有相应的subcache大小的块。
逻辑存储结构的细节在数据库中,可以发现,在Oracle的数据库概念。
当你创建一个AW(例如在解析工作区经理),一张表是创造的背景。
分析工作空间的名称表始于AW,紧随其后的是名字AW。
e.g. AW named GLOBAL is stored in table AW$GLOBAL.
一个AW有一个BLBO类型的列,那里有所有目标的定义和数据的存储。
不论什么时候一张表有一个LOB列,创建两个人片段来保存指定LOB列。这些片段都是LOB指针和LOB片段类型。
LOB指针片段用来访问LOB大块都存储在LOB片段中。
大块的最小单元配置LOB片段。一般来说,它是一种多重区块大小的表参与。默认是一块表大小块,最大块32768字节大小值(32 K)。
AW表为我们要求大块大小等于一个确切的数据块,后者也被称为页,所以在续集里,我们使用术语大块,页面的数据块互换。
AW表格的定义
我们可以取回的定义DBMS_METADATAAW表。GET_DDL功能。这个函数返回类型CLOB数据,因此,如果您执行SQL *,另外,然后确定你设定SQL *加上适当的系统变量长价值,使你看到整个定义的对象。
详细资料请看:DBMS_METADATA.GET_DDL in Note 188838.1. (Several tools, like Oracle SQL Developer, have handy feature to get the definition of a table.)
e.g.
GLOBAL@orcl> SET LONG 100000
GLOBAL@orcl> SELECT DBMS_METADATA.GET_DDL('TABLE', 'AW$GLOBAL', 'GLOBAL') FROM DUAL;
CREATE TABLE "GLOBAL"."AW$GLOBAL"
( "PS#" NUMBER(10,0),
"GEN#" NUMBER(10,0),
"EXTNUM" NUMBER(8,0),
"AWLOB" BLOB,
"OBJNAME" VARCHAR2(256 BYTE),
"PARTNAME" VARCHAR2(256 BYTE)
) PCTFREE 10 PCTUSED 40 INITRANS 4 MAXTRANS 255
STORAGE(BUFFER_POOL DEFAULT) TABLESPACE "GLOBAL" LOB ("AWLOB") STORE AS ( DISABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 0 CACHE STORAGE( BUFFER_POOL DEFAULT))
PARTITION BY RANGE ( "GEN#")
SUBPARTITION BY HASH ( "PS#","EXTNUM")
SUBPARTITIONS 8
(PARTITION "PTN1" VALUES LESS THAN (1) PCTFREE 10 PCTUSED 40 INITRANS 4 MAXTRANS 255 STORAGE(BUFFER_POOL DEFAULT) TABLESPACE "GLOBAL" LOB ("AWLOB") STORE AS (DISABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 0 CACHE READS LOGGING STORAGE( BUFFER_POOL DEFAULT))
(SUBPARTITION "SYS_SUBP14677" LOB ("AWLOB") STORE AS ( TABLESPACE "GLOBAL" ) TABLESPACE "GLOBAL",
...
SUBPARTITION "SYS_SUBP14684" LOB ("AWLOB") STORE AS ( TABLESPACE "GLOBAL" ) TABLESPACE "GLOBAL"),
PARTITION "PTNN" VALUES LESS THAN (MAXVALUE) PCTFREE 10 PCTUSED 40 INITRANS 4 MAXTRANS 255 STORAGE( BUFFER_POOL DEFAULT) TABLESPACE "GLOBAL" LOB ("AWLOB") STORE AS ( DISABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 0 CACHE STORAGE(BUFFER_POOL DEFAULT))
(SUBPARTITION "SYS_SUBP14685" LOB ("AWLOB") STORE AS (TABLESPACE "GLOBAL" ) TABLESPACE "GLOBAL",
...
SUBPARTITION "SYS_SUBP14692" LOB ("AWLOB") STORE AS (TABLESPACE "GLOBAL" ) TABLESPACE "GLOBAL") ) ;
The executed CREATE TABLE statement is captured via SQL Trace (see Note 21154.1 for details) can be seen below. The DBMS_METADATA.GET_DDL output is more verbose as it writes out all the defaults.
create table GLOBAL.AW$GLOBAL
(ps# number(10),
gen# number(10),
extnum number(8),
awlob blob, objname varchar2(256),
partname varchar2(256)
) initrans 4 lob(awlob) store as ( disable storage in row cache pctversion 0 freepools 1)
partition by range (gen#) subpartition by hash (ps#, extnum) subpartitions 8
(partition ptn1 values less than (1) lob(awlob) store as (cache reads),
partition ptnN values less than (MAXVALUE)
)
详细解释在上面看Oracle参考和Oracle数据库SQL数据库应用程序开发者指南-大型物体。
在这里,我们的焦点集中在以下几个特点。
LOB存储子句包含DISABLE STORAGE IN ROW,这就意味着LOB的数据被存储在块大块大小的LOB段以外的其他列的数据AW表的(也称为不一致的存储),而不是LOB定位器是储存在AWLOB表片段部分。
UNDO数据生成只有LOB 测定仪、LOB 指数的变化
没有UNDO可以块段LOB阅读的一致性是达到使用大块(也称为页)的版本(PCTVERSION 0不会引起的快照太老了“错误,因为一个特定的OLAP具体的方法用来保养读取数据的一致性,看下面一代以及注375047.1)
REDO是整整一大块产生/页在那里有一个改变(除非NOLOGGING中指定的LOB存储条款)
我们使用LOB定位查找索引,找到LOB范围大块的/网页地址,使用这些地址我们读数据段。
缓存存储参数引起的LOB,均是可读/可写通过缓冲缓存。
LOB从磁盘读取的缓存显示为缓冲等事件的db文件顺序读’。
有大量的大小和大量的小AW物体空间效果都浪费在了显著LOB皆然, 有大块尺寸16 k和一个AW对象是6 KB,那么相应的LOB会分配一个16 k块6 k的地方将被使用,10 KB会白白浪费。另一方面在访问机型的一大笔是比较有效的,我们需要那块大小等于一个确切的数据块,我们让词块大小的blocksize违约的表在我们创建表<AW 表>声明,大块大小是不能改变的一个现有的AW表(而不是通过改变变表)。
如果分割选择是存在于数据库、AW表将被分割。
在每个分区PTN1和PTNN有8 subpartitions,所以在一个默认的生成16分区表AW
subpartitions的数量在每个分区可以指定在OLAP DML语句命令'AW CREATE':
AW CREATE workspace [position] [UNPARTITIONED|PARTITIONS n]
在预设值是8 n,n指定数量的subpartitions为每个2的分区。
AW表分割意味着每个分区都有它自己的LOB段和LOB指数段,所以每个分区能不断更新过程由一个单独的奴隶,从而降低了likelyhood的争论在LOB指数(更新指标均无)。弧形指数和吊球区段可以被扩展到了几个tablespaces I / O负载平衡。所有的分区(默认)在同一个表。所有分区的划分tablespaces对象必须居住在一个单一的大小的块。
结果表明,以下查询AW表中有16个表,索引和吊球弧形段的分区。/一排排的那张桌子AWLOB定位柱的LOB)是被存储于表分区表
select segment_name, segment_type, count(*)
from dba_segments
where segment_type like '%SUBPARTITION%'
and owner = 'GLOBAL' group by segment_type, segment_name order by segment_name;
SEGMENT_NAME SEGMENT_TYPE COUNT(*)
------------------------------ -------------------- ----------
AW$GLOBAL TABLE SUBPARTITION 16
SYS_IL0000065161C00004$$ INDEX SUBPARTITION 16
SYS_LOB0000065161C00004$$ LOB SUBPARTITION 16
每个对象分析工作空间是储存在一个或更多的页面空间。一个页面空间相关联的数据分组的页面。AW页面大小源于CHUNK块的大小。
AW的页面大小无法收回的DML语句(AW和OLAP功能:
AW(PAGESIZE [aw_name])
E.G. the command SHOW AW(PAGESIZE 'GLOBAL') gives the following page size values in bytes depending on the block size of the tablespace where the GLOBAL AW is located:
Tablespace Block/Chunk Size AW Page size
4,096 4,032
8,192 8,128
16,384 16,320
32,768 32,704
注意,这并不是一个完整的列表,在数据库的合法值的大小的块从2 K到32 K。
AW的页面大小是可用的空间内的词块,所以它不含块开销包括块头部,斑头,块校验。
AW 表的列
一个AW表列如下:
PS# - Page space number.
每个对象被储存在至少一页的空间。
GEN# - Generation number
一代(一张快照,页面的空间)是维持每一个读者来确保一个一致的观点分析的工作一整个会话,每个Olap DML语句(命令创建一个新一代更新,每一个命令非常重视Olap DML语句(对一个特定的一代。
EXTNUM - Extension number
分析工作空间都存储在物理机型(称为延伸),它有一个默认的产品尺寸500 MB的容量。第一个扩展是0,第二个是1,等等。
AWLOB - Analytic workspace LOB
OBJNAME - Object name
对象的名字解析的工作空间。
PARTNAME – 分区的名字
一个(通常)所产生的名字OLAP-level隔断。它没有名称的特定页面上的空间,但是,是一个object-level的名字。
每个对象被储存在自己的页面空间。变量是一个分割空间储存使用一个页面每个分区。我们定义是否和如何分割解析工作区立方体的实现细节标签的立方体定义对话框解析工作区经理。
AW表中的行
有两个存储方法,取决于多少页是在pagespace: 一个“小”pagespace(< = 16页)是储存在它的全部排与非零的一代号码。有可能是也可能不是一个零代;如果有,但人们并不使用,一旦一个pagespace生长超过16页,我们有一个“正规”的pagespace。这有一个更复杂的内部结构(本文档的范围之外), 与实际数据储存在排和零一代人,而非零的一代用于代理记帐。
例如,让我们假定我们已经UNITS_CUBE措施成本、销售的定义和维护和装在全球AW如果非压缩和无立方体是分区(即没有一个复选框的使用压缩”和“隔断立方体的选择是实现细节标签的立方体工作区经理分析定义对话框),那么它的价值观的每一个步骤都贮存在一个变量,例如在可变UNITS_CUBE_COST_STORED测量成本。
在当前视图的AW餐桌UNITS_CUBE_COST_STORED AW变量贮存在一个行
PS# GEN# EXTNUM OBJNAME PARTNAME
---------- ---------- ---------- ------------------------- -------------------------
7999 0 0 UNITS_CUBE_COST_STORED UNITS_CUBE_COST_STORED
如果我们重新定义将被划分UNITS_CUBE及非压缩,然后至少有一个行每个分区:
PS# GEN# EXTNUM OBJNAME PARTNAME
---------- ---------- ---------- ------------------------- ------------------------------
36621 47 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED
36621 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED
36622 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED
36622 47 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED
36620 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P0
36620 47 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P0
36539 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P1
...
36614 54 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P26
36614 55 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P26
36614 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P26
36617 0 0 UNITS_CUBE_COSTS_STORED UNITS_CUBE_COSTS_STORED:P27
如果UNITS_CUBE压缩和非分割,然后我们目前看到三行存储为变量的数据的措施。
变量存储在空间两页,让页2代空间。
PS# GEN# EXTNUM OBJNAME PARTNAME
---------- ---------- ---------- ------------------------- ------------------------------
40463 0 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR
40464 0 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR
40464 3 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR
如果UNITS_CUBE压缩和分割,输出看起来像下面,至少有一个行每个分区:
PS# GEN# EXTNUM OBJNAME PARTNAME
---------- ---------- ---------- ------------------------- ------------------------------
21178 3 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR
21177 3 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P0
21176 0 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P0
21176 3 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P0
...
21966 5 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P27
21966 0 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P27
21967 0 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P27
21967 4 0 UNITS_CUBE_PRT_TOPVAR UNITS_CUBE_PRT_TOPVAR:P27