ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 外部表比对

外部表比对

原创 Linux操作系统 作者:yhj20041128001 时间:2011-06-04 00:19:05 0 删除 编辑

一、创建外部表以及产生dmp文件
1、创建directory,需要有 create any directory权限:
CREATE DIRECTORY admin AS '/oracle/admin';

或者创建了diretory后授权read权限:
GRANT READ ON DIRECTORY admin TO scott;


2、创建外部表:
SQL> CREATE  TABLE emp_xt
    ORGANIZATION EXTERNAL
    (
      TYPE ORACLE_DATAPUMP
      DEFAULT DIRECTORY admin
      LOCATION ('emp_xt.dmp')
    )
    AS SELECT * FROM emp;

Table created.

3、验证表的正确性:
SQL> select * from emp minus select * from emp_xt;
no rows selected


二、使用已产生的pump文件创建外部表

1、把产生的dmp文件复制到其它主机上
 CREATE  TABLE emp_xt
    ORGANIZATION EXTERNAL
    (
      TYPE ORACLE_DATAPUMP
      DEFAULT DIRECTORY admin
      LOCATION ('emp_xt.dmp')
    )
    AS SELECT * FROM emp;


2、创建directory,需要有 create any directory权限:
SQL> create directory ext_dir as '/oracle/ext_dir';

3、创建外部表:
SQL> CREATE TABLE emp_xt2
    (
  EMPNO NUMBER(4),
 ENAME VARCHAR2(10),
 JOB VARCHAR2(9),
 MGR NUMBER(4),
 HIREDATE DATE,
 SAL NUMBER(7,2),
 COMM NUMBER(7,2),
 DEPTNO NUMBER(2)
    )
    ORGANIZATION EXTERNAL
    (
      TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY ext_dir
     LOCATION ('emp_xt.dmp')
   );

三、如果基表发生改变,如何更新数据源:
1、先删除原数据库的外部表以及创建外部表产生的dmp文件。
2、重新创建外部表。
3、把新产生的dmp文件复制到远程主机上即可。

四、Create an external table with three dump files and with a degree of parallelism of three.
1、创建三个dump文件的外部表,并行度3的意思是把emp的数据导出到3个文件,以后如果1个文件丢失,则查询的时候会丢失这个文件里面记录的数据:
SQL> CREATE TABLE emp_xt3
    ORGANIZATION EXTERNAL
    (                  
      TYPE ORACLE_DATAPUMP
      DEFAULT DIRECTORY admin
      LOCATION ('emp_xt1.dmp', 'emp_xt2.dmp', 'emp_xt3.dmp')
    )                  
    PARALLEL 3         
    AS SELECT * FROM emp;

2、Compare the data unload against emp. There should be no differences.

SQL> SELECT * FROM emp MINUS SELECT * FROM emp_xt3;

五、Create an external table containing some rows from table emp.

1、创建包含有部分数据的外部表,主要目的产生dmp文件:
SQL> CREATE TABLE emp_part_xt
    ORGANIZATION EXTERNAL
    (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY admin
    LOCATION ('emp_p1_xt.dmp')
    )
    AS SELECT * FROM emp WHERE empno < 7654;
  
2、Create another external table containing the rest of the rows from emp.

SQL> drop table emp_part_xt;
 
Table dropped.
 
SQL> CREATE TABLE emp_part_xt
    ORGANIZATION EXTERNAL
    (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY admin
    LOCATION ('emp_p2_xt.dmp')
    )
    AS SELECT * FROM emp WHERE empno >= 7654;
 
 3、Create an external table that uses the two dump files created in Steps 1 and 2.

SQL> CREATE TABLE emp_part_all_xt
    (
  EMPNO NUMBER(4),
 ENAME VARCHAR2(10),
 JOB VARCHAR2(9),
 MGR NUMBER(4),
 HIREDATE DATE,
 SAL NUMBER(7,2),
 COMM NUMBER(7,2),
 DEPTNO NUMBER(2)
    )
    ORGANIZATION EXTERNAL
    (
   TYPE ORACLE_DATAPUMP
   DEFAULT DIRECTORY admin
   LOCATION ('emp_p1_xt.dmp','emp_p2_xt.dmp')
   );

4、比较两张表:
SQL> select * from emp minus select * from emp_part_all_xt;

no rows selected

 

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

下一篇: oracle 学习笔记
请登录后发表评论 登录
全部评论

注册时间:2010-09-17

  • 博文量
    163
  • 访问量
    360735