现在的位置: 首页 > 综合 > 正文

Oracle学习笔记九:表空间、表的管理

2013年05月15日 ⁄ 综合 ⁄ 共 4129字 ⁄ 字号 评论关闭

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]    /*删除所有其他的完整性约束,这些约束依赖于被删除的完整性约束*/
  ⑤例
    ALTER TABLE XS
    MODIFY (DJSM DEFAULT '奖金800');
3.其他
  GRANT UNLIMITED TABLESPACE,DBA TO feifei;    /*给用户授予表空间权限*/
  Oracle项目应用:创建表空间--创建用户--给用户分配默认表空间
  索引:供服务器在表中快速查找一个行的数据库结构,可快速存取数据、改善数据库性能保证列值唯一性、实现参照完整性、使用ORDER BY或GROUP BY时减少排序分组时间。
  使用索引原则
  在表中插入数据后创建索引:提高效率,若之前建立,插入每行时都要更改索引
  索引正确的表和列:若经常检索表中少于15%的行,建议建立索引
  合理安排索引列:通常将最常用列放最前面
  限制表中索引数量、指定索引数据库空间的使用、根据索引大小设置存储参数。
  唯一索引:
  位图索引:将索引作为位图创建,适用于表数据量很大,唯一值很少的表,如性别。
  语法格式:
  CREATE [UNIQUE|BITMAP|INDEX    /*UNIQUE指定索引所基于的列或多列值必须唯一*/
  [schema.] index_name
  ON [schema.] table_name(column_name[ASC|DESC],...n,[column_expression])|    /*column_expression创建基于函数的索引*/
  CLUSTER [schema.] cluster_name    /*创建cluster簇索引*/
  [INTRANS integer]
  [MAXTRANS integer]
  [PCTFREE integer]
  [PCTUSED integer]
  [TABLESPACE tablespace_name]
  [STORAGE storage_clause]
  [NOSORT]    /*数据库中的行以升序保存,在创建索引时不必对行排序*/
  [REVERSE]  
  例:CREATE bitmap INDEX bit_emp ON emp(sex);

抱歉!评论已关闭.