【发布时间】:2010-01-05 13:02:17
【问题描述】:
我在一台 PC 上有一个 Oracle 数据库。我必须将其迁移到我的另一台 PC。两者都使用单独的 oracle 安装。现在如何从我的一台 PC 导出它,然后再导入到另一台 PC?
导出再导入的命令是什么?
我想要导出然后导入结构和数据。我正在使用 Oracle 数据库。
【问题讨论】:
标签: oracle
我在一台 PC 上有一个 Oracle 数据库。我必须将其迁移到我的另一台 PC。两者都使用单独的 oracle 安装。现在如何从我的一台 PC 导出它,然后再导入到另一台 PC?
导出再导入的命令是什么?
我想要导出然后导入结构和数据。我正在使用 Oracle 数据库。
【问题讨论】:
标签: oracle
您可以从源数据库中导出数据并将其导入新数据库。
可以在here找到一个很好的链接来演示这些命令的用法
导出完整的数据库可以归结为以下内容:
%> exp USERID=<username>/<password> FULL=Y FILE=dbExport.dmp
%> imp USERID=<username>/<password> FILE=dbExport.dmp FULL=Y
这两个命令都有多种选项可以根据您的需要进行定制。例如,您可以通过 TABLES 参数将导入命令限制为仅导入某些表,或者您可以使用 TOUSER、FROMUSER 参数在用户之间移动数据库对象。还有关于是否导出或导入约束、索引等的选项。您可以通过执行以下任一命令找到这两个命令的所有有效参数:
%> exp help=Y
%> imp help=Y
【讨论】:
您没有说您使用的是哪个版本的数据库。这是重要的信息,因为每个版本都会向 Oracle 添加新功能。例如,在 10g 中,Oracle 引入了一个新的实用程序 DataPump,它取代了旧的 IMP 和 EXP(这些实用程序仍然包含在安装中,只是不推荐使用)。
DataPump 的优点之一是我们可以从数据库内部以及从操作系统命令行执行。我最近在this SO thread 中发布了一个使用 PL/SQL 中的 DataPump 的示例。 `Oracle 提供comprehensive documentation。
编辑
老式的 IMP/EXP 和 DataPump 都不会生成 SQL 文件 (*)。如果这确实是您想要的(而不是仅仅移植模式和数据以某种方式),那么事情就会变得有点棘手。 Oracle 有一个包DBMS_METADATA,我们可以用它来生成DDL 脚本,但它不会处理数据。要生成实际的 INSERT 语句,最好的办法是使用 IDE; Quest 的 TOAD 将执行此操作,Oracle 的(免费)SQL Developer tool 也将执行此操作。两个 IDE 也会为我们生成 DDL 脚本。
(*) Datapump 导入可以使用SQLFILE= 参数从先前的Datapump 导出文件派生DDL 语句。但这只是结构而不是数据。
【讨论】: