导出工具提供了一种在 Oracle 数据库之间传输数据对象的简单方法,即使它们存在于在不同硬件和软件配置的平台上
在 Oracle 数据库运行导出时,将提取对象(如表),然后抽取其相关对象(如 indexes、comments、grants),如果有的话
导出文件通常是位于磁盘或磁带上的 Oracle 二进制格式的转储文件(dump file)。转储文件可以使用 FTP 传输或物理传输(在磁带的情况下)到不同的站点。这些文件可以与 imp 一起用在网络不通的系统上的数据库之间传输数据。除了正常的备份程序之外,这些文件还可以用作备份
exp 的转储文件只能由 imp 读取,imp 的版本不能早于创建该转储文件的 exp 的版本
也可以显示导出文件的内容,而无需实际执行导入。为此,可以使用 imp 的 SHOW参数
Before Using Export在开始使用导出之前,请务必注意以下几项:
如果是手动创建数据库,保证 catexp.sql 或 catalog.sql脚本已运行;如果使用DBCA 创建数据库,则不需要运行这些脚本
确保有足够的磁盘或磁带存储来写入导出文件
验证是否具有必需的访问权限
Running catexp.sql or catalog.sql要使用 exp,必须在数据库创建或迁移到较新版本之后运行脚本 catexp.sql 或catalog.sql(该脚本会运行 catexp.sql)
catexp.sql 或 catalog.sql脚本必须在一个数据库上运行一次。该脚本执行以下任务,为导出和导入操作准备数据库:
在数据字典中,创建必要的导出和导入视图
创建 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 角色
为 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 角色分配所有必要的权限
将 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 分配给 DBA 角色
记录已安装的 catexp.sql 版本
EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 作用是强大的。数据库管理员在向用户授予这些角色时应该谨慎使用
Ensuring Sufficient Disk Space for Export Operations在运行导出之前,请确保有足够的磁盘或磁带存储空间来写入导出文件;如果没有足够的空间,exp 会因写入失败错误而终止
可以使用表的大小来预估所需的最大空间,可以在 USER_SEGMENTS 视图中找到表大小。以下查询显示所有表的磁盘使用情况:
SELECT SUM(BYTES)FROM USER_SEGMENTS WHERE SEGMENT_TYPE ='TABLE';查询的结果不包括存储在LOB(大对象)或 VARRAY 列或分区表中的数据所使用的磁盘空间
Verifying Access Privileges for Export and Import Operations要使用导出,你必须具有 CREATE SESSION 的权限,该权限属于数据库创建期间建立的 CONNECT 角色。要导出其他用户的表,必须具有 EXP_FULL_DATABASE 角色,此角色授予所有的数据库管理员(DBA)
如果你没有 EXP_FULL_DATABASE 角色中的系统特权,则无法导出其他用户的对象。例如,即使为其创建了同义词,也无法导出其他用户的表
几个系统用户不能被导出,因为它们不是用户模式, 它们包含 Oracle 管理 的数据和元数据。不可以被导出的用户包括 SYS、ORDSYS 和 MDSYS
Invoking Export可以使用以下任一方法调用导出并指定参数:
命令行模式
参数文件
交互模式
Invoking Export as SYSDBASYSDBA 在内部使用并具有专门的功能, 其行为与普通用户不一样。因此,除非在以下情况下,一般不需要调用 as SYSDBA 导出:
应 Oracle 技术支持的要求
导入可传输表空间集时
Command-Line Entries可以使用下面的语法在命令行指定所有有效的参数及其值(您将被提示输入用户名和密码):
exp PARAMETER=value or exp PARAMETER=(value1,value2,...,valuen)参数个数不能超过系统命令行的最大长度
Parameter Files可以在参数文件中指定所有有效的参数及其值。将参数存储在文件中,可以轻松修改或重用,这也是调用 exp 的推荐方法。如果你为不同的数据库使用不同的参数,那么你可以有多个参数文件
使用任何文本编辑器创建参数文件。命令行选项 PARFILE=filename 指示 exp 从指定文件而不是从命令行读取参数。例如:
参数文件规范的语法是以下之一:
PARAMETER=value PARAMETER=(value) PARAMETER=(value1, value2, ...)以下示例显示了部分参数文件列表:
FULL=y FILE=dba.dmp GRANTS=y INDEXES=y CONSISTENT=y注意:参数文件的最大大小可能受操作系统的限制;参数文件的名称受操作系统的文件命名约定的约束
可以通过在参数文件前加上井号(#)标志来添加注释,导出会忽略 #号右侧的所有字符
可以在命令行输入参数的同时指定参数文件。实际上,你可以在两个地方指定相同的参数。PARFILE 上的参数和命令行上其他参数的位置决定了哪些参数优先。例如,假设参数文件 params.dat 包含参数 INDEXES=y,并使用以下命令调用 exp :
exp PARFILE = params.dat INDEXES = n在这种情况下,因为 INDEXES=n 发生在之后 PARFILE=params.dat,INDEXES=n 将覆盖参数文件中参数 INDEXES 的值
Getting Online Help导出提供在线帮助,在命令行上输入 exp help=y 以调用导出帮助
Export Modesexp 支持四种操作模式:
Full:导出完整个数据库。只有具有 EXP_FULL_DATABASE 角色的用户才能使用此模式,使用参数 FULL 来指定这个模式
Tablespace:允许有权限的用户将一组表空间从一个 Oracle 数据库移动到另一个,使用参数 TRANSPORT_TABLESPACE 来指定这个模式
User:导出属于某个用户的所有对象(例如表,授予,索引和过程),使用参数 OWNER 指定此模式