一.段的类型:
1.什么是段:段是存储单元。
1.段的类型有:
表 分区表 簇表 索引 索引组织表(IOT表) 分区索引 临时段 undo段 lob段(blob ,clob) 内嵌表(record类型,table类型) 启动段 :打开数据库时要装入的数据字典系统信息,故在系统表空间内。
注意:smon 回收不用的临时段和undo段。
2.表:
表是存储数据的逻辑单位。 表的功能: 存储、管理数据的基本单元, 表的类型: 普通表:堆表,
例:查询表的行的平均长度 AVG_ROW_LEN 平均长度 avg_space 平均空间 SQL> select table_name,tablespace_name,blocks,pct_free,pct_used,avg_space,AVG_ROW_LEN from dba_tables where table_name like 'EMP%';
TABLE_NA TABLESPACE_N BLOCKS PCT_FREE PCT_USED AVG_SPACE AVG_ROW_LEN -------- ------------ ---------- ---------- ---------- ---------- ----------- EMP1 SYSTEM 44 10 40 0 38 EMP USERS 1 10 40 0 38 EMPLX LXTBS2 10 10 40 1322 38
例:查询表默认的pctfree 和pctused 以及修改 SQL> select table_name,tablespace_name,blocks,pct_free,pct_used from dba_tables where table_name like 'EMP%';
TABLE_NA TABLESPACE_N BLOCKS PCT_FREE PCT_USED -------- ------------ ---------- ---------- ---------- EMP1 SYSTEM 44 10 40 EMPLX LXTBS2 10 10 40 EMP USERS 1 10 40
SQL> alter table emplx pctfree 12;
Table altered.
SQL> alter table emplx pctused 42;
Table altered.
3.分区表:
比如一个表尺寸大于2g,oracle建议分区,一个分区内的数据量一般不超过50w左右性能最好,最多不要超过100万。 range分区方式,按照指定范围分区,比如按时间分区或值大小分区。 list分区方式,是一种列举方式进行分区 哈数分区方式, 根据hash算法分区,有oracle管理。
①.分区表的使用详见:【dba,32】分区表:
②.案例:创建分区索引:
#创建分区表 SQL> CREATE TABLE sales_history 2 (id number(8),name varchar2(30),sales_date date) 3 PARTITION BY RANGE (sales_date) 4 (PARTITION p1 VALUES LESS THAN ( TO_DATE('01-JAN-1999','DD-MON-YYYY')) tablespace users, 5 PARTITION p2 VALUES LESS THAN ( TO_DATE('01-JAN-2000','DD-MON-YYYY')) tablespace users, 6 PARTITION p3 VALUES LESS THAN ( TO_DATE('01-JAN-2001','DD-MON-YYYY')) tablespace users, 7 PARTITION p4 VALUES LESS THAN ( TO_DATE('01-JAN-2002','DD-MON-YYYY')) tablespace users, 8 PARTITION p5 VALUES LESS THAN (MAXVALUE) tablespace users 9 );
Table created. #插入数据 SQL> insert into sales_history values(1,'PC1',to_date('17-FEB-2000','DD-MON-YYYY')); SQL> insert into sales_history values(2,'PC2',to_date('17-FEB-2001','DD-MON-YYYY')) SQL> insert into sales_history values(3,'PC3',to_date('17-FEB-2002','DD-MON-YYYY')); SQL> insert into sales_history values(4,'PC4',to_date('17-FEB-1999','DD-MON-YYYY'));
SQL> insert into sales_history values(5,'PC5',to_date('15-FEB-2000','DD-MON-YYYY')); SQL> insert into sales_history values(6,'PC6',to_date('12-FEB-2001','DD-MON-YYYY')); SQL> insert into sales_history values(7,'PC7',to_date('11-FEB-1998','DD-MON-YYYY')); SQL> insert into sales_history values(8,'PC8',to_date('13-FEB-2002','DD-MON-YYYY'));
SQL> insert into sales_history values(8,'PC8',to_date('13-FEB-2013','DD-MON-YYYY'));
#查询数据 SQL> select * from sales_history;
ID NAME SALES_DAT ---------- ---------- --------- 7 PC7 11-FEB-98 4 PC4 17-FEB-99 1 PC1 17-FEB-00 5 PC5 15-FEB-00 2 PC2 17-FEB-01 6 PC6 12-FEB-01 3 PC3 17-FEB-02 8 PC8 13-FEB-02 8 PC8 13-FEB-13
9 rows selected. #查询分区表数据 SQL> select * from sales_history partition(p1);
ID NAME SALES_DAT ---------- ---------- --------- 7 PC7 11-FEB-98
SQL> select * from sales_history partition(p2);
ID NAME SALES_DAT ---------- ---------- --------- 4 PC4 17-FEB-99
SQL> select * from sales_history partition(p3);
ID NAME SALES_DAT ---------- ---------- --------- 1 PC1 17-FEB-00 5 PC5 15-FEB-00
SQL> select * from sales_history partition(p4);
ID NAME SALES_DAT ---------- ---------- --------- 2 PC2 17-FEB-01 6 PC6 12-FEB-01
SQL> select * from sales_history partition(p5);
ID NAME SALES_DA