Oracle之创建表与修改表详解(二)

2014-11-24 16:47:22 · 作者: · 浏览: 5
ength of thecolumn in bytes
CHAR_LENGTH NUMBER Y The maximum length of thecolumn in characters
CHAR_USED VARCHAR2(1) Y C is maximum length given incharacters, B if in bytes
V80_FMT_IMAGE VARCHAR2(3) Y Is column data in 8.0 imageformat
DATA_UPGRADED VARCHAR2(3) Y Has column data been upgradedto the latest type version format
HISTOGRAM VARCHAR2(15) Y
SQL>
三)创建表指定表空间;
Eg:
create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02 unique(b_id)
5 ) tablespace users,temporary temp;
) tablespace users;
四)创建表指定存储参数
Storage (Initial [nk,nm] next [nk,nm]minextents n)
Initial:表示创建表的时候分配第一个盘区的大小,next表示如需要新盘区,哪分配下一个盘区的大小,minextents表示至少有几个盘区。
注意:next和minextents参数在表空间是本地管理方式的时候,参数不起作用。
如果在创建表空间的时候使用手段管理方式manual并且制定了uniform size那么storage参数不起作用了,因为这个每个盘区的大小都是统一的。
Eg:
SCOTT@orcl#r
1 create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02unique(b_id)
5*) storage (initial 20K)
表已创建。
SCOTT@orcl#R
1*select INITIAL_EXTENT,table_name from user_tables where table_name='BOOKS_01'
INITIAL_EXTENT TABLE_NAME
--------------------------------------------------------------------------
24576 BOOKS_01
SCOTT@orcl#
Notes:可以看到我虽然指定了盘区为20K,但是真正是24k,这是因为我db_block_size为8k,所以无论你指定多少都必须是8的整数倍。
SQL> SHOW PARAMETER BLOCK_SIZE
NAME TYPE VALUE
------------------------------------ -----------------------------------------
db_block_size integer 8192
SQL>
五)设置数据块管理参数:
数据块结构:
数据块头部
表目录
行目录
空闲空间
存储数据空间
数据块头部:包含本数据的一些信息,如scn信息,事务访问信息等等
表目录:包含该数据块所属表的相关信息
行目录:包含该数据所有表的行目录的信息
自由空间:表示该数据块可以的空闲空间
存储数据空间:表示该数据块已经使用的空间大小:
在设置表的数据块相关属性的时候需要注意四个参数:pctfree,pctused,initrans,maxtrans.
PCT_FREE NUMBER Y Minimum percentage of freespace in a block
PCT_USED NUMBER Y Minimum percentage of usedspace in a block
注意:当段的管理方式为:segment space manager manual手动管理的时候,那么可以设置pctfree和pctused来管理数据块的空间使用比例。
Pctfree:该参数设置数据块可以保持的空闲空间比率。如设置为20,那么当该数据块的空闲空间达到20%的时候,就不允许进行insert操作了。在进行update操作,并会产生数据条目的时候。可以增大该参数的设置,但是过大的设置pctfree,就不能够存储很大的数据了。推荐设置pctfree为20.pctused为40
Pctused:用于设置数据块可以使用的临界点.如,当该数据块中的数据使用设置为pctused 30,那么当该数据块使用低于30%的时候,该数据块还可以被使用,当达到30%的时候,本数据块就不能被使用了。当尽心delete和insert数据比较多的时候,可以考虑将该数据块的pctused设置为稍微大点。但是pctfree+prcused<=100.推荐设置为pctfree为5,pctused为60.
Eg:
SCOTT@orcl#r
1 create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02 unique(b_id)
5* ) pctfree 5pctused 60
表已创建。
Initrans和maxtrans