2

到目前为止,我从未对 Oracle 数据库做过任何严肃的事情。我知道它们与我处理过的不同,例如 MS SQL。

因此,从 MS SQL 的角度来看,我可以备份数据库,将 .bak 文件复制到另一台服务器,还原它,创建数据库的完整副本。

我不确定如何为 Oracle 做同样的事情,更不用说不同的版本了。我已经看到它主要使用命令行完成,所以我尝试了这个:

$exp owner/owner schemas=tkcsdb directory=dumpdir dumpfile=dBaseName logfile=dBaseLog

然后 SQL Plus 返回:

未知的参数名称“架构”。处理参数失败。导出未成功终止。

从那以后,我将“模式”替换为“模式”(同样的错误),并且我想尝试使用“表”,但我不确定结果如何。如果 'tkcsdb' 是我正在寻找的数据库的名称,我什至不是 100% - 我无法列出我拥有的所有数据库

我想做的事情(我已经用 MS SQL、MySQL 甚至 IBM DB2 完成了所有事情)看起来很难在 Oracle 中复制。

与标题一样,如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?

我使用的是 Windows 7,目标机器是某种 Linux Fedora。

4

1 回答 1

6

EXP 和 IMP 是古老的 - 除非万不得已,否则不要使用它们。它们无法处理较新 Oracle 版本的某些特性。

选择的工具是 EXPDP 和 IMPDP(EXP datapump 和 IMP datapump 的缩写)。

不幸的是,使用它们有点复杂,因为您只能在数据库服务器上运行它们(与旧式 EXP/IMP 不同,您可以在任何客户端计算机上运行它们)。

因此,要将架构从 11g 源数据库转移到 10g 目标数据库,您必须:

  • 在 11g 数据库服务器上打开一个终端会话
  • 运行 expdp 并将版本设置为 10(因此您可以在 10g 服务器上导入它)
  • 将 11g 服务器的转储文件复制到 10g 服务器的 datapump 目录(查找名为“dpump”的目录)
  • 在 10g 数据库服务器上打开一个终端会话
  • 使用您的转储文件运行 impdp

例子:

expdp scott/tiger@db11g version=10.2 schemas=SCOTT dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

impdp scott/tiger@db10g schemas=SCOTT dumpfile=SCOTT.dmp logfile=impdpSCOTT.log
于 2013-07-29T07:52:38.240 回答