ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE 表

ORACLE 表

原创 Linux操作系统 作者:tomshenhao 时间:2011-09-15 16:37:50 0 删除 编辑
 

表分类:堆表、分区表、IOT表、cluster表

堆表:无序性,存储放表(普通表)

修改表结构:使用"SET UNUSED"将一个或多个列改成不使用,select和desc均无法查询到这些列,操作不可恢复;
可以在user_unused_col_tabs查询到不使用列数量。
写法:alter table dept set unused (ABC);
然后使用如下脚本来删除不使用列
写法:alter table dept drop unused columns;

使用DROP删除表时:
1.表的数据,结构均被删除;
2.表的所有索引均被删除;
3.表的视图,同义词保留,但不再有效;
4.不可恢复

RENAME:更改表,视图,序列或同义词名称
写法:RENAME DEPT TO DEPT_1

COMMENT:向表或者列添加备注
写法:COMMENT ON TABLE dept IS 'ABCD';
查询效果:ALL_COL_COMMENTS;USER_COL_COMMENTS;ALL_TAB_COMMENTS;USER_TAB_COMMENTS

Partition 分区表:

物理上分割表,逻辑上仍是一个完整表

性能上:

1. 直接prun,减少查询数据源,缩短时间

2. 可以实现wise join

管理上:

1. 维护成本降低,rebuild时间缩短;

2. 可以单独处理一个分区内数据;

什么时候使用分区表:

1、表的大小超过2GB。

2、表中包含历史数据,新的数据被增加都新的分区中。

创建:

分类方式:

1. range:时间,数字为标准;

CREATE TABLE sales_history
(
   sal_date   DATE NOT NULL,
   sal_id     NUMBER NOT NULL,
   sal_row    NUMBER (12) NOT NULL
)
PARTITION BY RANGE (sal_date)
   (PARTITION sal_11
       VALUES LESS THAN (TO_DATE ('2012-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_12
       VALUES LESS THAN (TO_DATE ('2013-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_13
       VALUES LESS THAN (TO_DATE ('2014-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_14
       VALUES LESS THAN (TO_DATE ('2015-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_15
       VALUES LESS THAN (TO_DATE ('2016-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_16
       VALUES LESS THAN (TO_DATE ('2017-01-01', 'YYYY-MM-DD')) tablespace users,
    PARTITION sal_other
       VALUES LESS THAN (maxvalue) tablespace users)
NOLOGGING;

2. list:文本,字符串为标准;

3. hash:没有明显分割,主要平均分配

4. range+hash

5. range+list

建立索引:

1. 本地分区索引local partition index

2. 全局分区索引global partition index:

create index in_date on sales_history (sal_date)
global PARTITION BY RANGE (sal_date)
   (PARTITION sal_11
       VALUES LESS THAN (TO_DATE ('2012-01-01', 'YYYY-MM-DD')),
    PARTITION sal_12
       VALUES LESS THAN (TO_DATE ('2013-01-01', 'YYYY-MM-DD')),
    PARTITION sal_13
       VALUES LESS THAN (TO_DATE ('2014-01-01', 'YYYY-MM-DD')),
    PARTITION sal_14
       VALUES LESS THAN (TO_DATE ('2015-01-01', 'YYYY-MM-DD')),
    PARTITION sal_15
       VALUES LESS THAN (TO_DATE ('2016-01-01', 'YYYY-MM-DD')),
    PARTITION sal_16
       VALUES LESS THAN (TO_DATE ('2017-01-01', 'YYYY-MM-DD')),
    PARTITION sal_other
       VALUES LESS THAN (maxvalue)) ;

堆表与分区表转换:

SQL> CREATE TABLE p_emp
 (sal NUMBER(7,2))
 PARTITION BY RANGE(sal)
 (partition emp_p1 VALUES LESS THAN (2000),
 partition emp_p2 VALUES LESS THAN (4000));
 Table created.
 
SQL> CREATE TABLE dummy_y as SELECT sal
 FROM emp WHERE  sal<2000;
 Table created.
 
SQL> CREATE TABLE dummy_z as SELECT sal FROM emp WHERE sal
 BETWEEN 2000 AND 3999;
 Table created.
 
SQL> alter table p_emp exchange partition emp_p1
 with table dummy_y;
 Table altered.

SQL> alter table p_emp exchange partition emp_p2
 with table dummy_z;
 Table altered.

IOT表 索引组织表:

作用:1. 数据有序;2. 有利查询;3. I/O比较多

特点:

1. 存储rowheader / key / non-key(实际值) 由于non-key内容较多,可以选择overflow参数,将内容存储到某个特定表空间中

2. 在IOT表非key列做index,用的是logical rowid,不是用rowid,否则容易引起index invalid

创建:

 CREATE TABLE iot
(
   x  varchar2(10),
   y   DATE,
   z   CHAR (2000),
   CONSTRAINT iot_pk PRIMARY KEY (x)
)
ORGANIZATION INDEX
   TABLESPACE users
   INCLUDING y
   OVERFLOW TABLESPACE mytbs3;

CLUSTER表

作用:将主表+副表(总表+明细)组合;

特点:

1. 两表内查询省时;

2. 关联其他表,或者进行DML 费时间 

分类:

1. Index cluster 创建时不分配空间;

2. hash cluster 创建是直接分配空间

创建:

create cluster emp_dept_cluster
( deptno number(2) )
size 8192;

create table dept 
( deptno number(2) primary key, 
dname  varchar2(14), 
loc    varchar2(13) 

cluster emp_dept_cluster(deptno) ;

create table emp 
( empno    number primary key, 
   ename    varchar2(10), 
    job      varchar2(9), 
    mgr      number, 
   hiredate date, 
    sal      number, 
   comm     number, 
   deptno number(2) references dept(deptno) ;

cluster emp_dept_cluster(deptno) ;

表迁移 table movement

1. 导入导出,但是会影响DML;

2. 在EM管理端中,选择table,在reorganize动作,设置set attribute进行迁移。可以在线做,不影响DML

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24751738/viewspace-707529/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORACLE 约束
下一篇: ORACLE 子查询返回
请登录后发表评论 登录
全部评论

注册时间:2011-07-14

  • 博文量
    260
  • 访问量
    398711