日期:2014-05-16  浏览次数:20428 次

Oracle Data Pump 工具系列:Data Pump 使用权限配置详解
一、Data Pump 的概念:
Oracle Data Pump 技术可以非常快速地将一个数据库的数据与元数据迁移到另一个数据库。
Oracle Data Pump 由三大独一无二的部分构成:


1. 命令行客户端:expdp 和 impdp
2. DBMS_DATAPUMP PL/SQL 包(也称为 Data Pump API)
3. DBMS_METADATA PL/SQL 包(也称为 Metadata API)


与传统的基于客户端的 Export/Import 工具相比,Data Pump 是一种基于服务器的实用工具。
Oracle Data Pump 与 Export/Import 的功能并不兼容。


Oracle Data Pump 还可以使用 NETWORK_LINK 功能,在无需 dump 文件的情况下,在两个数据库
之间利用网络技术从远程数据库迁移数据和元数据。


二、Data Pump 实用工具的安装与配置


用户需要一定的权限才能运行 Data Pump。在 Oracle 10g 或更高版本运行 Export DataPump 或
Import DataPump job 所需的最低权限要求如下:
- 系统权限 CREATE SESSION (或 CONNECT 角色) 
- 系统权限 CREATE TABLE 
- 对象权限 对某个有效 directory 对象的读写权限 (CREATE DIRECTORY privilege with which a valid directory object was created) 
- 对用户的默认表空间需要足够的表空间配额(需要创建 DataPump job 所使用的主抽样表)。


此外,Data Pump 还需要 EXP_FULL_DATABASE 角色来执行以下任务:
- 运行全库 Export DataPump 作业 
- 运行传输表空间 Export DataPump 作业
- 运行带有 TRACE 参数的 Export DataPump 作业
- 运行导出其他 schema 的 Export DataPump 作业


注意,上述权限要求适用于链接数据库运行 Export DataPump 或 Import DataPump 作业的用户,而非被导出或导入的用户


这些权限既可以通过显式的方式授予也可以通过角色来授予,方法如下:


CONNECT system/manager
CREATE DIRECTORY my_dir AS 'full_pre_existing_directory_path_here';
 GRANT create session, create table TO scott IDENTIFIED BY tiger;
 GRANT read, write ON DIRECTORY my_dir TO scott;
 ALTER USER scott QUOTA unlimited ON users; 
 
或者:


CONNECT system/manager
 CREATE DIRECTORY my_dir AS 'full_pre_existing_directory_path_here>>';
 CREATE ROLE expdp_role;
 GRANT create session, create table TO expdp_role;
 GRANT read, write ON DIRECTORY my_dir TO expdp_role;
 GRANT expdp_role TO scott;
 ALTER USER scott DEFAULT ROLE all;
 ALTER USER scott QUOTA unlimited ON users;


特权用户:


特权用户是指具有执行 Export DataPump 作业的 EXP_FULL_DATABASE 角色和执行
 Import DataPump 作业的 IMP_FULL_DATABASE 或者包含这两种角色的 DBA 角色:
SET lines 80  
COL privilege FOR a40  
SELECT grantee, granted_role, default_role  
FROM dba_role_privs  
WHERE granted_role IN ('DBA', 'EXP_FULL_DATABASE', 'IMP_FULL_DATABASE')  
ORDER BY 1,2; 
 
GRANTEE              GRANTED_ROLE                   DEF 
-------------------- ------------------------------ --- 
DBA                  EXP_FULL_DATABASE              YES 
DBA                  IMP_FULL_DATABASE              YES 
SCOTT                EXP_FULL_DATABASE              YES 
SCOTT                IMP_FULL_DATABASE              YES 
SYS                  DBA                            YES 
SYS                  EXP_FULL_DATABASE              YES 
SYS                  IMP_FULL_DATABASE              YES 
SYSMAN               DBA                            YES 
SYSTEM               DBA