10G數據泵可以單獨導出JOB

SQL> CONN / AS SYSDBA
已連接。
SQL> CREATE USER JOBA IDENTIFIED BY JOBA;
用戶已創建。
SQL> GRANT CONNECT,RESOURCE TO JOBA;
授權成功。
SQL> CONN JOBA/JOBA
已連接。
SQL> CREATE TABLE T AS SELECT * FROM USER_TABLES;
表已創建。
SQL> SELECT * FROM TAB;
TNAME                     TABTYPE          CLUSTERID
--------------------   ------------------ -------------- 
T                         TABLE
SQL> DECLARE
  2    jobid NUMBER;
  3  BEGIN
  4    FOR X IN 1..10 LOOP
  5      DBMS_JOB.SUBMIT(jobid,'NULL;',SYSDATE,'SYSDATE+1');
  6    END LOOP;
  7    COMMIT;
  8  END;
  9  /
PL/SQL 過程已成功完成。
SQL> COL WHAT FORMAT A20
SQL> COL PRIV_USER FORMAT A20
SQL> SELECT JOB,PRIV_USER,WHAT FROM USER_JOBS;
       JOB PRIV_USER            WHAT
---------- -------------------- --------------------
       161 JOBA                 NULL;
       162 JOBA                 NULL;
       163 JOBA                 NULL;
       164 JOBA                 NULL;
       165 JOBA                 NULL;
       166 JOBA                 NULL;
       167 JOBA                 NULL;
       168 JOBA                 NULL;
       169 JOBA                 NULL;
       170 JOBA                 NULL;
已選擇10行。
現在開始導出JOBA用戶裏的所有JOB:

C:\>expdp joba/joba directory=data_pump_dir dumpfile=joba.dp include=job content=metadata_only  
Export: Release 10.2.0.1.0 - Production on 星期一, 18 1月, 2010 22:54:54
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
啓動 "JOBA"."SYS_EXPORT_SCHEMA_01":  joba/******** directory=data_pump_dir dumpf
ile=joba.dp include=job
正在使用 BLOCKS 方法進行估計...
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 0 KB
處理對象類型 SCHEMA_EXPORT/JOB
已成功加載/卸載了主表 "JOBA"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
JOBA.SYS_EXPORT_SCHEMA_01 的轉儲文件集爲:
  C:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\LOG\JOBA.DP
作業 "JOBA"."SYS_EXPORT_SCHEMA_01" 已於 22:55:05 成功完成。
此時刪除JOBA用戶下的所有JOB。
SQL> SHOW USER

USER 爲 "JOBA"

SQL> CREATE PROCEDURE REMOVE_ALL_JOB
  2  IS
  3  BEGIN
  4    FOR X IN (SELECT JOB FROM USER_JOBS) LOOP
  5       DBMS_JOB.REMOVE(X.JOB);
  6    END LOOP;
  7    COMMIT;
  8  END;
  9  /
過程已創建。
SQL> EXEC REMOVE_ALL_JOB;
PL/SQL 過程已成功完成。
SQL>  SELECT JOB,PRIV_USER,WHAT FROM USER_JOBS;
未選定行
導入用戶JOBA的所有JOB:
在導入之前需要給用戶JOBA授予一定的權限,否則會報錯。如下:
C:\>impdp joba/joba directory=data_pump_dir dumpfile=joba.dp
Import: Release 10.2.0.1.0 - Production on 星期一, 18 1月, 2010 23:00:06
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-31655: 尚未爲作業選擇數據或元數據對象
ORA-39154: 外部方案中的對象已從導入中刪除
已成功加載/卸載了主表 "JOBA"."SYS_IMPORT_FULL_01"
啓動 "JOBA"."SYS_IMPORT_FULL_01":  joba/******** directory=data_pump_dir dumpfil
e=joba.dp
作業 "JOBA"."SYS_IMPORT_FULL_01" 已於 23:00:13 成功完成。
由於不是很清楚到底授予的最低權限是多少。直接先授予JOBA DBA角色,導入完成後,回收JOBA的DBA角色。

SQL> CONN / AS SYSDBA

已連接。

SQL> GRANT DBA TO JOBA;
授權成功。
C:\>impdp joba/joba directory=data_pump_dir dumpfile=joba.dp include=job  
Import: Release 10.2.0.1.0 - Production on 星期一, 18 1月, 2010 23:00:42
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加載/卸載了主表 "JOBA"."SYS_IMPORT_FULL_01"
啓動 "JOBA"."SYS_IMPORT_FULL_01":  joba/******** directory=data_pump_dir dumpfil
e=joba.dp
處理對象類型 SCHEMA_EXPORT/JOB
作業 "JOBA"."SYS_IMPORT_FULL_01" 已於 23:00:53 成功完成
C:\>sqlplus joba/joba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 1月 18 23:04:06 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
       JOB LOG_USER   PRIV_USER  SCHEMA_USE WHAT
---------- ---------- ---------- ---------- --------------------
       161 JOBA       JOBA       JOBA       NULL;
       162 JOBA       JOBA       JOBA       NULL;
       163 JOBA       JOBA       JOBA       NULL;
       164 JOBA       JOBA       JOBA       NULL;
       165 JOBA       JOBA       JOBA       NULL;
       166 JOBA       JOBA       JOBA       NULL;
       167 JOBA       JOBA       JOBA       NULL;
       168 JOBA       JOBA       JOBA       NULL;
       169 JOBA       JOBA       JOBA       NULL;
       170 JOBA       JOBA       JOBA       NULL;
已選擇10行。
SQL> CONN / AS SYSDBA

已連接。
SQL> REVOKE DBA FROM JOBA;
撤銷成功。
至此,JOB導入完成。
注意,如果要把JOBA用戶下的JOB導入到其他用戶下,在IMPDP的過程用,需要以目標用戶登錄。看下面的一個例子:
SQL> SHOW USER

USER 爲 "JOBA"

SQL> EXEC REMOVE_ALL_JOB;
PL/SQL 過程已成功完成。
SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
未選定行
SQL> CONN / AS SYSDBA

已連接。

SQL> GRANT CONNECT,RESOURCE TO JOBB IDENTIFIED BY JOBB;
授權成功。
SQL> CONN JOBB/JOBB

已連接。

SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
未選定行
SQL> CONN / AS SYSDBA

已連接。

SQL> GRANT DBA TO JOBA;
授權成功。
SQL> HOST
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\>impdp joba/joba directory=data_pump_dir dumpfile=joba.dp remap_schema=(joba:jobb)
Import: Release 10.2.0.1.0 - Production on 星期一, 18 1月, 2010 23:30:41
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORA-39146: 方案 "JOBA" 不存在
已成功加載/卸載了主表 "JOBA"."SYS_IMPORT_FULL_01"
啓動 "JOBA"."SYS_IMPORT_FULL_01":  joba/******** directory=data_pump_dir dumpfle=joba.dp remap_schema=
(joba:jobb)
處理對象類型 SCHEMA_EXPORT/JOB
作業 "JOBA"."SYS_IMPORT_FULL_01" 已於 23:32:56 成功完成

C:\>exit
SQL> SHOW USER
USER 爲 "SYS"
SQL> CONN JOBB/JOBB
已連接。
SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
未選定行
可以看見JOB並且沒有導入用戶JOBB下。
此時連接到用戶JOBA下。
SQL> CONN JOBA/JOBA
已連接。
SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
       JOB LOG_USER   PRIV_USER  SCHEMA_USE WHAT
---------- ---------- ---------- ---------- ----------
       161 JOBA       JOBA       JOBA       NULL;
       162 JOBA       JOBA       JOBA       NULL;
       163 JOBA       JOBA       JOBA       NULL;
       164 JOBA       JOBA       JOBA       NULL;
       165 JOBA       JOBA       JOBA       NULL;
       166 JOBA       JOBA       JOBA       NULL;
       167 JOBA       JOBA       JOBA       NULL;
       168 JOBA       JOBA       JOBA       NULL;
       169 JOBA       JOBA       JOBA       NULL;
       170 JOBA       JOBA       JOBA       NULL;
已選擇10行。
JOB被導入到了JOBA用戶下,REMAP_SCHEMA沒起作用。如果導入用下面的命令
impdp system/oracle directory=data_pump_dir dumpfile=joba.dp remap_schema=(joba:jobb) 則JOB將會被導入到SYSTEM用戶下。這是因爲JOB在導出過程中,並不會附帶模式名。所以JOB在導入過程中如果加了remap_schema=(joba:jobb),將會報ORA-39164。

SQL> SHOW USER
USER 爲 "JOBA"
SQL> EXEC REMOVE_ALL_JOB;
PL/SQL 過程已成功完成。
SQL> CONN / AS SYSDBA
已連接。
SQL> REVOKE DBA FROM JOBA;
撤銷成功。
SQL> GRANT DBA TO JOBB;
授權成功。
SQL> HOST
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\>impdp jobb/jobb directory=data_pump_dir dumpfile=joba.dp
Import: Release 10.2.0.1.0 - Production on 星期一, 18 1月, 2010 23:40:57
Copyright (c) 2003, 2005, Oracle.  All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已成功加載/卸載了主表 "JOBB"."SYS_IMPORT_FULL_01"
啓動 "JOBB"."SYS_IMPORT_FULL_01":  jobb/******** directory=data_pump_dir dumpfil
e=joba.dp
處理對象類型 SCHEMA_EXPORT/JOB
作業 "JOBB"."SYS_IMPORT_FULL_01" 已於 23:41:08 成功完成

C:\>exit
SQL> SHOW USER
USER 爲 "SYS"
SQL> CONN JOBB/JOBB
已連接。
SQL> SELECT JOB,LOG_USER,PRIV_USER,SCHEMA_USER,WHAT FROM USER_JOBS;
       JOB LOG_USER   PRIV_USER  SCHEMA_USE WHAT
---------- ---------- ---------- ---------- ----------
       161 JOBB       JOBB       JOBB       NULL;
       162 JOBB       JOBB       JOBB       NULL;
       163 JOBB       JOBB       JOBB       NULL;
       164 JOBB       JOBB       JOBB       NULL;
       165 JOBB       JOBB       JOBB       NULL;
       166 JOBB       JOBB       JOBB       NULL;
       167 JOBB       JOBB       JOBB       NULL;
       168 JOBB       JOBB       JOBB       NULL;
       169 JOBB       JOBB       JOBB       NULL;
       170 JOBB       JOBB       JOBB       NULL;
已選擇10行。
SQL> CONN / AS SYSDBA
已連接。
SQL> REVOKE DBA FROM JOBB;
撤銷成功。

可見,可見JOB的導入過程中REMAP_SCHEMP不起作用(JOB導出的轉存文件中不附帶模式名),JOB將會導入到執行導入操作的用戶下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章