Oracle基础(二):表管理

来源:互联网 发布:美萍软件价格 编辑:程序博客网 时间:2024/05/29 18:16
 

1.--DataType分为User-defined和Built-in
##Built-in分为Scalar,Collection,Relationship
##Scalar(标量):文本,数字,时间,二进制
##CHAR(N),NCHAR(N),VARCHAR2(N),NVARCHAR2(N),
##NUMBER(P,S),
##DATE,TIMESTAMP,
##RAW(N),BLOB,CLOB,NLOB,BFILE,LONG,LONG RAW,ROWID,UROWID

2.--表的通用信息
##一个表最多有1000列,如果超过254列则oracle会将列拆分为存储在block中

3.--ROWID Format
##10个字节采用base64编码以18个字符来显示
##Data object number:可以定位该记录位于哪个tablespace
##Relative file number:可以定位该记录位于哪个file
##Block number:定位该记录位于哪个block
##Row number:

4.--row记录包含有Row header,column length,column content

5.--ASSM,MSSM
ASSM:PCTUSED,INITRANS
MSSM:FREELIST,PCTUSED,PCTUSED,INITRANS

6.--Create table主要考虑storage字句和pctused,initrans等块利用的参数

7.--创建临时表(transaction和session生命周期)
create global temporary table
employee_temp
as select * from employees;
##可以静态声明临时表,但在每个session中必须放入数据
##创建transaction生命周期
create global temporary table tmp on commit delete rows

##创建session生命周期
create global temporary table tmp on commit preserve rows

8.--临时表一旦创建即在数据库数据表中进行记录可以一直使用只到drop掉

9.--Row Migration & Chaining(行迁移和链接)
##Row Migration是因为pctfree太小,当某行值需要更新却在块中找不着合适的空间,就只能用其他块的空间
##Row Chaining是因为列太大,一个block放不下

10.--修改storage参数
alter table employees
pctfree 30
pctused 50
storage(next 500K,minextents 2,maxextents);

11.--手动的给表分配extent
alter table employees allocate extent(size 500K datafile '/disk3/data01.dbf');
##用在均匀分配数据在不同的文件上
##对于大规模插数据一次性分配好extent

12.--非分区表(或分区表的一个分区)的reorganized
alter table employees move tablespace data1

13.--获取表的完整信息
select dbms_metadata.get_ddl('table','T')from dual;

14.--删除表的某列
alter table employees drop column comments
cascade constraints checkpoint 1000
##没删除1000行的某列写发生一次checkpoint

15.--给列打上used标签(可以是列暂时对用户不可见,在服务器压力小时再进行删除0
alter table employees
set unused column comments
cascade constraints

alter table employees
drop unused columns checkpoint 1000;
##一次性删除used columns

alter table employee
drop unused columns continue checkpoint 1000
##删除过程中数据库重新启动了还可以继续删除

原创粉丝点击