表类型:Regular table(堆表),Partitioned table,Index-organized table,Cluster
Regular table:插入的时候从segment里面找合适的空间插入,因此不能保证按插入循序排序。
Partitioned table:分区表。
Index-organized table:索引结构表,叶子节点是有序的。
Cluster:集群表,放在一个block里面。
create table t(
a int,
b varchar2(4000) default rpad('*',4000,'*'),
c varchar2(4000) default rpad('*',4000,'*'));
insert into t(a) values(1);
insert into t(a) values(2);
insert into t(a) values(3);
数据类型
Scalar:标量
标量分四大类:文本型,数字型,日期型,二进制型
一个表最多有1000列
表、索引都不限制
ROWID:唯一确定一行的标识,快速定位一条记录最快的方法,base64编码
ROWID结构:10个字节,4个部分,数据对象num,相对文件num,bolock num,row num
一个block放多条记录,一条记录包含三部分row header, column length,column value
create tablespace assm datafile 'u01/oradata/denver/assm_1.dbf' size 100M extent management local
uniform size 128K segment space management auto;
create tablespace mssm datafile 'u01/oradata/denver/assm_1.dbf' size 100M extent management local
uniform size 128K segment space management manual;
create user as1 identified by as1 default tablespace assm;
create user ms1 identified by ms1 default tablespace mssm;
col segment_name format 130
select segment_name,segment_type from user_segment;
create table t(
id int,
name char(10)
)
storage(initial 128K next 128K pctincrease 0 minextents 1 maxextends 5)
tablespace assm;
FREELIST:
PCTFREE:块预留空闲空间
PCTUSED:手动管理
INITRANS:
表和索引放在不同的表空间上。表空间放在不同的磁盘上
create global temporary table s as select * from emp;
临时表的生命周期可以在一次事务或一个session里,临时表可以创建索引、视图和触发器
临时表产生的redo信息少,速度快。临时表放在临时表空间里
创建临时表不分配segment.插入记录时,才分配segment。
临时表可以预先定义,在数据字典里挂个号,用时才生成。
产生redo主要是为产生undo信息的。插入和查询不进行修改和删除,redo可以忽略
会话级: create global temporary table tmp_session on commit preserve rows as select * from t where 1=0;
事务级:create global temporary table tmp_transaction on commit delete rows as select * from t where 1=0;
数据库重新启动了,临时表定义还在,数据没了。
行迁移(Row Migration):如果PCTFREE被设置得小,一条记录修改了变大,在块里面没足够空间,只有从一个空间移到另外一个块里,在老的地方留个指针指向新的位置。后果,性能下降。太大,磁盘利用率就小。
行链接(Row Chainning):超过254列或者某些列太大。块变大。
DBA_TABLES,DBA_OBJECTS,DBA_EXTENDS
alter table orders allocate extent;
不释放表空间:truncate table orders reuse storage;
alter table orders set unused column data_of_delay casade constraints;
alter table orders drop unused columns checkpoint 1000;