oracle11g,18存储结构:暂时表,手工条带化,表/索引迁移表空间,删除表,外部表

Posted gavanwanggw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle11g,18存储结构:暂时表,手工条带化,表/索引迁移表空间,删除表,外部表相关的知识,希望对你有一定的参考价值。

一. 暂时表
暂时表放在暂时表空间,不生成redo,仅仅有undo。
在暂时表中能够创建索引、视图及触发器,还能够使用“Export and Import(导出和导入)”或“Data Pump(数据泵)”导出和导入暂时表的定义。可是。即使使用了ROWS 选项,也不会导出数据。
有基于事务(默认)和基于session两种。其它的会话不能訪问到
在暂时表中。DML锁永远不须要。

1.创建默认的(基于事务的)暂时表:(on commit delete rows:提交时清空数据)

SQL> create global temporary table temp_emp1 on commit delete rows as select * from scott.emp where 1=2;

Table created.

SQL> insert into temp_emp1 select * from scott.emp;

14 rows created.

SQL> select * from temp_emp1;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

14 rows selected.
#提交
SQL> commit;

Commit complete.

SQL> select * from temp_emp1;

no rows selected

2.创建另外一种基于session的暂时表(on commit preserve rows:提交时保留数据。但在退出session时会清空数据) 
SQL> create global temporary table temp_emp2 on commit preserve rows as select * from scott.emp where 1=2;

Table created.

SQL> insert into temp_emp2 select * from scott.emp;

14 rows created.

SQL> 
SQL> commit;

Commit complete.

SQL>  select * from temp_emp2;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

14 rows selected.

 

二.手工条带化:
#分析表
SQL> analyze table scott.emp compute statistics;
Table analyzed.
SQL> select table_name,tablespace_name,blocks,empty_blocks from dba_tables where owner=‘SCOTT‘;

TABLE_NAME TABLESPACE     BLOCKS EMPTY_BLOCKS
---------- ---------- ---------- ------------
DEPT       USERS
EMP        USERS               5            3
BONUS      USERS
SALGRADE   USERS

SQL> col name for a50
SQL> select file#,name from v$datafile;

     FILE# NAME
---------- --------------------------------------------------
         1 /u01/app/oracle/oradata/PROD/disk3/system01.dbf
         2 /u01/app/oracle/oradata/PROD/disk4/undotbs01.dbf
         3 /u01/app/oracle/oradata/PROD/disk4/sysaux01.dbf
         4 /u01/app/oracle/oradata/PROD/disk3/users01.dbf
         5 /u01/app/oracle/oradata/PROD/disk3/lxtbs01.dbf
         6 /u01/app/oracle/oradata/PROD/disk4/lxtbs02.dbf

6 rows selected.

SQL> alter table scott.emp allocate extent(size 20m datafile ‘/u01/app/oracle/oradata/PROD/disk3/system01.dbf‘);
alter table scott.emp allocate extent(size 20m datafile ‘/u01/app/oracle/oradata/PROD/disk3/system01.dbf‘)
*
ERROR at line 1:
ORA-03284: datafile /u01/app/oracle/oradata/PROD/disk3/system01.dbf is not a member of tablespace
USERS

#分配数据块给EMP表
SQL> alter table scott.emp allocate extent(size 20m datafile ‘/u01/app/oracle/oradata/PROD/disk3/users01.dbf‘);

Table altered.

SQL> analyze table scott.emp estimate statistics;

Table analyzed.

SQL> select table_name,tablespace_name,blocks,empty_blocks from dba_tables where owner=‘SCOTT‘;

TABLE_NAME TABLESPACE     BLOCKS EMPTY_BLOCKS
---------- ---------- ---------- ------------
DEPT       USERS
EMP        USERS               5         2563
BONUS      USERS
SALGRADE   USERS
#收回空块
SQL> alter table scott.emp deallocate unused;

Table altered.

SQL> analyze table scott.emp estimate statistics;

Table analyzed.

SQL> select table_name,tablespace_name,blocks,empty_blocks from dba_tables where owner=‘SCOTT‘;

TABLE_NAME TABLESPACE     BLOCKS EMPTY_BLOCKS
---------- ---------- ---------- ------------
DEPT       USERS
EMP        USERS               5            3
BONUS      USERS
SALGRADE   USERS


三.把表/索引迁移到其它表空间:

#把表迁移到其它表空间
SQL> alter table scott.emp move tablespace system;

Table altered.

SQL> select table_name,tablespace_name,blocks,empty_blocks from dba_tables where owner=‘SCOTT‘;

TABLE_NAME TABLESPACE     BLOCKS EMPTY_BLOCKS
---------- ---------- ---------- ------------
DEPT       USERS
BONUS      USERS
SALGRADE   USERS
EMP        SYSTEM              5            3
#把索引迁移到其它表空间
SQL> alter index scott.pk_emp rebuild tablespace system;

Index altered.


四.删除表:
SQL> drop table scott.dept;
drop table scott.dept
                 *
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys

#
SQL> drop table scott.dept cascade constraints;

Table dropped.
五.外部表:
详见: 【dba。34】外部表。


六.查询表的视图:
SQL> select object_id,object_name,object_type from dba_objects where owner=‘SCOTT‘;

 OBJECT_ID OBJECT_NAM OBJECT_TYP
---------- ---------- ----------
     10241 EMP        TABLE
     10242 PK_EMP     INDEX
     10243 BONUS      TABLE
     10244 SALGRADE   TABLE

SQL> col table_name for a10
SQL> col tablespace_name for a10
SQL> select table_name,tablespace_name,blocks,empty_blocks from dba_tables where owner=‘SCOTT‘;

TABLE_NAME TABLESPACE     BLOCKS EMPTY_BLOCKS
---------- ---------- ---------- ------------
BONUS      USERS
SALGRADE   USERS
EMP        SYSTEM              5            3



SQL> select segment_name,segment_type,tablespace_name,bytes/1024 k,extents,blocks,initial_extent/1024 init,next_extent/1024 next,pct_increase from dba_segments where owner=‘SCOTT‘;



SEGMENT_NA SEGMENT_TY TABLESPACE          K    EXTENTS     BLOCKS       INIT       NEXT PCT_INCREASE
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------------
EMP        TABLE      SYSTEM             64          1          8         64
PK_EMP     INDEX      SYSTEM             64          1          8         64
BONUS      TABLE      USERS              64          1          8         64
SALGRADE   TABLE      USERS              64          1          8         64






































































以上是关于oracle11g,18存储结构:暂时表,手工条带化,表/索引迁移表空间,删除表,外部表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11g R2 存储结构

oracle 11g ocp 笔记-- oracle存储结构

Oracle 11g R2 体系结构

Oracle 11g R2 体系结构

Oracle 11g 学习3——表空间操作

oracle 11g 手工建库