对文件系统的访问
由服务器处理所有的文件 I/O 对于远程执行导出和导入任务的数据库管理员来说非常有利。如今,用户可以很轻松地在类似 UNIX 的系统 ( 如 Linux) 上 telnet 或 ssh 到一个服务器,在命令行方式下初始化一个运行在服务器上的导出或导入任务。然而,在其他操作系统上就不那么容易, Windows 是最明显的例子。在推出数据泵之前,要从一个 Windows 系统下的 Oracle 数据库中导出大量数据,你很可能必须坐在服务器控制台前发出命令。通过 TCP/IP 连接导出数据只对小数据量是可行的。数据泵改变了这一切,因为即使你通过在你的客户端上运行该导出和导入实用程序来初始化一个导出或导入任务,该任务其实也运行在服务器上,所有的 I/O 也都发生在该服务器上。
出于安全性考虑,数据泵要求你通过 Oracle 的目录对象来指定其中存放着你要建立或读取的转储文件的目标目录。例如:
CREATE DIRECTORY export_dumps
AS ’c:\a’;
GRANT read, write
ON DIRECTORY export_dumps
TO gennick;
我以 SYSTEM 身份登录到我的实验室数据库上,并执行以上语句来建立一个目录对象,这个目录对象指向了我磁盘上的一个临时目录,以用来存放导出的转储文件。 GRANT 语句为用户 gennick- 就是我 - 分配了访问该目录的权限。我给自己分配读 / 写权限,因为我将导出和导入数据。你可以为一个用户分配读权限,限制他只能导入数据。
启动一个导出任务
你可以使用新的 expdp 实用程序来启动一个导出任务。因为参数与老的 exp 实用程序不同,所以你得熟悉这些新的参数。你可以在命令行中指定参数,但在本文中我使用了参数文件。我想导出我的整个模式( schema ),使用了以下参数:
DUMPFILE=gnis%U.dmp
DIRECTORY=export_dumps
LOGFILE=gnis_export.log