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將會導入到執行導入操做的用戶下。