<span style="font-size:18px;">--------------------------------------------------------
-- DDL for Table TEST
--------------------------------------------------------
CREATE TABLE "SERVICE_NAME"."TABLE_NAME" //创建表的方式:create table "service_name"."table_name"
( "Property1" VARCHAR2(2 BYTE), //属性的类型为VARCHAR2</span>
<span style="font-size:18px;"> "LEVEL" VARCHAR2(4 BYTE),
"CREATE_DATE" DATE //属性类型为DATE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "TABLESPACE_NAME" ;
COMMENT ON COLUMN "SERVICE_NAME"."TABLE_NAME"."LEVEL" IS '等级';
COMMENT ON TABLE "SERVICE_NAME"."TABLE_NAME" IS '保存测试数据';</span>
create语句中的各个参数的意义:以下引自http://www.cnblogs.com/luyubin/archive/2009/03/18/1415249.html
创建表时参数PCTFREE和PCTUSED是什么意思?
pctused:为一个百分比数值,当BLOCK中已经使用的空间降低到该数值以下时,该BLOCK才是可用的,达到或是超过这个数值的BLOCK是不可用的。
一般在控制具有独立segment结构的对象时,使用这两个参数来控制BLOCK的存储管理。
initrans:指定可以并发操作该表的事务的数目。
可使用PCTFREE和PCTUSED参数控制数据块何时进入或离开表、索引或簇的可用清单。 使用PCTFREE参数设置最大的阈值,以控制对将来的行的更新操作保留多少数据块空间。当某个数据块使PCTFREE装满时,ORACLE从相应段的可用清单中删除该块。 如果你预计只有很少的更新操作会增加行的大小,则可将PCTFREE设置为较低的值(如5或者10),使得ORACLE填满每个块的更多的空间。但是, 如果你预计更新操作将会经常增加行的大小,则将PCTFREE设置为较高的值(如20或30),使得ORACLE为已有行的更新操作保留更多的块空间;否则,将出现行链。
可使用PCTUSED参数设置最小块的阈值来控制一个数据块应在何时放回到相应段的可用清单中。例如,所有段的缺省PCTUSED设置为40%,因此,当事务处理删除数据块中的行时,如果它只有39%是装满的,ORACLE将该数据块放回到相应段的可用清单中 。如果你预计很少有删除操作,则可设置PCTUSED为较高的值(如60),当偶然的删除操作发生时,使数据块弹出可用清单。但是,如果你预计将PCTUSED 设置为较低的值(如40),使ORACLE不常产生块在表的可用空间中移进或移出的开销。
可使用INITRANS和MAXTRANS参数优化ORACLE如何在表、数据簇或索引的数据块中分配事务处理项。INITRANS参数确定为事务处理项预分配多少数据块头部的空间。当您预计有许多并发事务处理要涉及某个块时,可为相关的事务处理项预分配更多的空间,以避免动态分配该空间的开销。MAXTRANS参数限制并行使用某个数据块的事务处理的数量。当您预计有许多事务处理将并行访问某个小表时,则当创建表时,应设置该表的事务处理项预分配更多的块空间,较高的MAXTRANS 参数值允许许多事务处理并行访问该表INITRANS和MAXTRANS 参数的设置可能相应低一些(如分别为2和5)。使用这样的设置,很少为事务处理项保留窨,使该表数据块的更多空间用于数据。
可使用STORAGE子句的FREELIST GROUPS 参数控制段的可用清单组的数据量。使用FREELISTS 参数设置每组中可用清单的数量。
COMPRESS压缩参数
Compress参数含义很清楚:就是在存储数据表数据的时候是否启用压缩选项。压缩使用的级别是数据块block级别。Oracle对数据块的压缩采用相邻相同值合并的压缩算法。
Compress参数有两个系列参数:
1、OMPRESS FOR DIRECT_LOAD OPERATIONS:作用于Compress相同,适合于数据仓库OLAP系统。只在直接插入过程中在表或者分区上启用压缩技术;
2、COMPRESS FOR ALL OPERATIONS:适合于OLTP系统,针对所有的操作均启用了压缩选项。要求的版本较高。
LOGGING:日志记录
LOGGING参数表示对数据表或者其他对象进行变化性操作的时候,是否计入到REDO日志中。默认情况下,Oracle对数据库对象的任何修改性操作都会计入到redo log中,作为数据库恢复使用。开启logging功能,是保证数据库数据一致性的重要一步。
有一些时候,我们可能会不希望记日志操作。因为logging的时候会存在相当的性能损失,为了避免这种损失,加快操作速度,我们可能会选择暂时性的设置数据表为nologging状态。比如,我们在进行大规模数据加载的时候,可能就会选择这种方式。
先不论nologging的好坏,有几个问题笔者需要说明。首先,启用数据表的nologging绝不意味着说一点重做日志都不书写。在运行过程中,数据表对应的索引对象等内容,都有一个重建的过程,这个过程是需要写入redo log的。第二,不启用redo log,的确会带来一定的性能提升。但是没有日志的数据库是极其危险的,一旦发生实例崩溃或者数据库崩溃这种情况,数据库数据丢失和不一致的情况是可能发生的。这种方法得不偿失。