2013-07-29 61 views
1

到目前为止,我从来没有对Oracle数据库做过任何严肃的事情。我知道它们与我所处理的不同,比如MS SQL。如何从Oracle 11g XE导出“数据库”并将其导入到Oracle 10.2?

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

我不知道如何为Oracle做同样的事情,更不用说不同的版本。我已经看到了它与命令行大多完成的,所以我想这:

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

然后是SQL Plus中的回报:

未知参数名称“架构” 无法处理参数 出口终止不成功

我已经用'schema'(同样的错误)替换了'schemas',并且我想尝试使用'tables',尽管我不知道结果如何。我甚至不是100%,如果'tkcsdb'是数据库的名称我在找 - 我一直无法列出所有数据库我有。我想要做的事情(我已经用MS SQL,MySQL甚至是IBM DB2做的所有事情)正在Oracle中很难复制。

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

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

回答

5

EXP和IMP是古老的 - 不要使用它们,除非你绝对必须。他们无法处理新版Oracle版本的一些功能。

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

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

因此,要获得从11g的源DB到各10g目标DB您的模式,你必须:

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

运行示例IMPDP:

expdp scott/[email protected] version=10.2 schemas=SCOTT dumpfile=SCOTT.dmp logfile=expdpSCOTT.log 

    impdp scott/[email protected] schemas=SCOTT dumpfile=SCOTT.dmp logfile=impdpSCOTT.log 
+0

我与“tkcsdb”为模式试了一下,确信这是“数据库”的名称。它没有工作。看你的例子,你也把'斯科特'放在里面。所以我加入了'tkcsowner'。你叫什么scott/tkcsowner,以及如何将它们与MS SQL中的术语进行比较?无论如何,这是做到了。谢谢。但它确实返回了一个错误:“密码将在7天后过期。”这是我应该关心的吗?另外,由于没有目录,数据库将在何处转储.dmp文件? –

+0

Scott或tkcsowner是数据库“用户”。每个数据库用户都有自己的“模式”,这个用户的对象“活着”(术语用户和模式在Oracle术语中或多或少是同义词)。你确实应该关心密码过期错误 - 只需要改变密码(你也可以改变与这个用户关联的配置文件,这样密码永不过期)。数据库将把转储文件放到数据池目录中(除非你指定了一个带目录参数的文件,但对于初学者,我建议坚持默认的数据泵目录)。 –

+0

tkcsowner/tkcsowner @ db11g。我忘了添加db11g。奇怪的是,它继续备份很好。但是,当我使用db11g再次执行该操作时,它将返回一个错误:无法解析指定的连接标识符。 –

相关问题