oracle-表结构分析
表结构分析
建表语句
CREATE TABLE table_name(table_name VARCHAR2(10),table_name1 int(5),)
ALTER语句
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name MODIFY (column_name datatype)
oracle ddl
CREATE TABLE "CS_GDBZDATA"."ACCT_WORK_REGISTER" ( "CURDATE" VARCHAR2(10) NOT NULL ENABLE, "MWORKBEGINTIME" VARCHAR2(8), "MWORKENDTIME" VARCHAR2(8), "AWORKBEGINTIME" VARCHAR2(8), "AWORKENDTIME" VARCHAR2(8), "NWORKBEGINTIME" VARCHAR2(8), "NWORKENDTIME" VARCHAR2(8), "WEEK" VARCHAR2(1), "WORKFLAG" VARCHAR2(10), "AREATYPE" VARCHAR2(10), "WORKFLAGHK" VARCHAR2(10), "WORKFLAGMC" VARCHAR2(10) ) SEGMENT CREATION IMMEDIATE 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 FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "CS_GDBZDATATBS" ; ALTER TABLE "CS_GDBZDATA"."ACCT_WORK_REGISTER" MODIFY ("CURDATE" NOT NULL ENABLE);
这些参数涉及到存储过程
一般就默认
可根据业务需求相应变更
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
关键字段解释
这时候 PCTFREE 代表着设定为 10 ,意思就是说,当 BLOCK 使用到达 90% 的时候,就不可以在使用了,
这个 BLOCK 应该从 FREELIST 列表中移除 (un-link) 。
为何要保留 10% 的空间呢?
这是为了提供 update 数据时所可能增加的空间使用,如果空间保留的太小,就容易发生 row chaining 。
假设 PCTUSED 为 40 ,代表当我们把水杯的水喝到剩下 40% 以下时,侍者就会知道需要加水了。
如果说 PCTUSED 设的太大,例如70 隐含的意义是,这个杯子的利用率增加,但是侍者频繁的服务造成了负荷 (I/O Overhead) 。
喝水( 如同 DELETE 事务操作 ) ,放回 FREELIST ,加水 ( 如同 INSERT 事务操作 ) 。
INITRANS 指的是一个 BLOCK 上初始预分配给并行交易控制的空间 (ITLs)
MAXTRANS 指的是如果 INITRANS 空间不够用了,就会自动扩展 ITL ,直到最大值也就是 MAXTRANS 值为止
如果你建库的时候写上LOGGING,表时你想在建库及随后的操作语句中记录日志log.
NOCOMPRESS LOB是对大对象字段LOB不压缩