日期:2014-05-16  浏览次数:20478 次

oracle学习笔记1:表空间、表的管理

1.表空间管理:永久、临时、撤销三种类型
? ①准则
??? 使用多个表空间:不同空间/分区存不同数据,防磁盘损坏相互影响,提高I/O;将不同的用户数据从数据字典中分离,减少数据文件的数据字典对象和模式对象竞争
??? 指定表空间的存储参数
??? 为表空间指定限额:防资源浪费
? ②可进行的操作
??? 新建表空间,调整数据文件大小,添加数据文件到表空间;
??? 设置和修改缺省的数据段存储设置;
??? 使表空间变为只读或读写状态;
??? 设置表空间为临时或永久;
??? 删除表空间。
? ③语法格式
??? CREATE TABLESPACE tablespace_name
??? DATEFILE 'path/filename' [SIZE integer [K|M]][REUSE]
??? [AUTOEXTEND[OFF|ON [NEXT integer[K|M]]??? /*OFF/ON禁止或允许自动扩展数据文件,NEXT指定下次分配给数据文件的磁盘空间*/
??????? [MAXSIZE UMLIMITED|integer[K|M]]]]??? /*允许分配给数据文件的最大磁盘空间,UMLIMITED没有限制*/
??? [DEFAULT STORAGE storage_clause]??? /*为在该表空间创建的对象指定默认的存储参数*/
??? [ONLINE|OFFLINE]??? /*空间的可用/不可用设置*/
??? [LOGGING|NOLOGGING]??? /*将来的表、索引等是否进行日志处理*/
??? [PERMANENT|TEMPORARY]??? /*表空间的状态,永久或临时*/
??? [EXTENT MANAGEMENT[DICTIONARY|??? /*如何管理表空间的盘区*/
??? LOCAL[AUTOALLOCATE|UNIFORM[SIZE integer[K|M]]]]]
? ④例
??? 创建表空间:
??? CREATE TABLESPACE tablespace_name
??? DATAFILE '/home/oracle/oradata/tablespace_name01.dbf'
??? SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 20M;
??? 指定系统缺省时表空间:
??? ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
??? 表空间离线(不能访问):
??? ALTER TABLESPACE tablespace_name OFFLINE;??? /*ONLINE恢复*/
??? 表空间只读:
??? ALTER TABLESPACE tablespace_name READ ONLY;??? /*READ WRITE 读写*/
??? 删除表空间:
??? DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
??? 添加数据文件到表空间:
??? ALTER TABLESPACE tablespace_name ADD DATAFILE '/home/oracle/oradata/tablespace_name02.dbf' size 1M;
??? 设置表空间数据文件的缺省位置:
??? ALTER SYSTEM SET DB_CREATE_FILE_DEST '/home/oracle/oradata';
??? 获得表空间和数据文件信息:
??? SELECT * FROM v$tablespace;
??? SELECT * FROM v$datafile;
2.表管理
? ①表完整性:防止不合法数据进入基表
??? 域完整性:列完整性,指定某个数据集对某列是否有效并确定是否允许为空,CHECK
??? 实体完整性:行完整性,主关键字约束,PRIMARY KEY(一个,值非空)、UNIQUE(可多个,值可空),自动产生索引
??? 参照完整性:引用完整性,保证主从表数据的一致性,主键外键,PRIMARY KEY、FOREIGN KEY
??? 如果定义了两个表间的参照完整性,则:从表不能引用不存在的键值;主表键值变,从表随着变;主表无关联记录,从表不能插入记录;删从表后删主表
??? 查看视图:
??? SELECT * FROM user_constraintS WHERE table_name='EMP';?? /*或all_constraints*/
? ②创建表语法格式
??? CREATE TABLE [schema.]table_name
??? (column_name datatype [DEFAULT expression][column_constraint],...n)
??? [PCTFREE integer]? /*指定表或分区的每个数据块为将来更新表行所保留的空间百分比*/
??? [PCTUSED integer]? /*指定每个数据块易用空间的最小百分比*/
??? [INITRANS integer]? /*指定分配给表的每一数据块中事务条目的初值*/
??? [MAXTRANS integer]? /*指定可更新分配给表的数据块的最大并发事务数*/
??? [TABLESPACE tablespace_name]? /*指定表空间*/
??? [STORGE storage_clause]? /*指定表的存储特征*/
??? [CLUSTER cluster_name(cluster_column,...n)]? /*指定表作为簇的一部分*/
??? [AS subquery]? /*子查询返回的行插入所创建的表中,后创建约束,如果同时有AS subquery 和CONSTRAINT子句,忽略AS subquery*/
??? 完整性约束语法格式
??? CONSTRAINT constraint_name
??? [NOT] NULL
??? [UNIQUE]
??? [PRIMARY KEY
??? [REFERENCES [schema.] table_name(column_name)]
??? [CHECK(condition)]
? ③例
??? CREATE TABLE KC
??? (KCH CHAR(8) NOT NULL,
???? KCM CHAR(20) NOT NULL,
???? XS NUMBER(2) NOT NULL,
???? KKXQ NUMBER(1) NOT NULL,
???? XF NUMBER(2),
???? CONSTRAINT CH_KKXQ CHECK(KKXQ between 1 and 8),
???? CONSTRAINT "PK_KCH" PRIMARY KEY(KCH),
???? CONSTRAINT "FK_XS" FOREIGN KEY(XS) REFERENCES XS(XH) )
???? PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
???? TABLESPACE "MYTS"
???? STORAGE (INITIAL 64K MINEXTENTS 1 PCTINCREASE 40 FREELISTS 1 FREELIST GROUPS 1);
??? )
? ④修改表语法格式
??? ALTER TABLE [schema.] table_name
??? [ADD (column_name datatype [DEFAULT expression][column_constraint],...n)]
??? [MODIFY([datatype][DEFAULT expression] [column_constraint],...n]
??? [STORAGE storage_clause]??? /*修改存储个正*/
??? [DROP drop_clause]??? /*删除列或约束*/
??? DROP子句语法格式:
??? DROP
??? COLUMN column_name|? /*删除列*/
??? PRIMARY|??? /*删主键约束*/
??? UNIQUE|??? /*删唯一性约束*/
??? (column_name,...n)|??
??? CONSTRAINT|??? /*删名为column_name的完整性约束*/
??? [CASCADE]??? /*删除所有其他的完整性约束,这些约束依赖于被删除的完整性