如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?
Posted
技术标签:
【中文标题】如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?【英文标题】:How do I export a 'database' from Oracle 11g XE and import it to Oracle 10.2? 【发布时间】:2013-07-28 21:54:37 【问题描述】:到目前为止,我从未对 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 中复制。
如题,
我使用的是 Windows 7,目标机器是某种 Linux Fedora。
【问题讨论】:
【参考方案1】:EXP 和 IMP 是古老的 - 除非万不得已,否则不要使用它们。它们无法处理较新 Oracle 版本的某些功能。
选择的工具是 EXPDP 和 IMPDP(EXP datapump 和 IMP datapump 的缩写)。
不幸的是,使用它们有点复杂,因为您只能在数据库服务器上运行它们(与旧式 EXP/IMP 不同,您可以在任何客户端计算机上运行)。
因此,要将架构从 11g 源数据库转移到 10g 目标数据库,您必须:
在 11g 数据库服务器上打开一个终端会话 运行 expdp 并将版本设置为 10(以便您可以在 10g 服务器上导入它) 将转储文件从 11g 服务器复制到 10g 服务器的 datapump 目录(查找名为“dpump”的目录) 在 10g DB 服务器上打开一个终端会话 使用您的转储文件运行 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
【讨论】:
我尝试使用“tkcsdb”作为模式,确信它是“数据库”的名称。它没有用。看看你的例子,你也把'scott'放在那里。所以我输入了'tkcsowner'。你叫什么 scott / tkcsowner,你如何将它们与 MS SQL 中的术语进行比较?无论如何,它做到了。谢谢。但它确实返回了一个错误:“密码将在 7 天内过期。”这是我应该关心的事情吗?另外,由于没有目录,数据库会将 .dmp 文件转储到哪里? Scott 或 tkcsowner 是数据库“用户”。每个数据库用户都有自己的“模式”,其中该用户的对象“活动”(术语用户和模式在 Oracle 术语中或多或少是同义词)。您确实应该担心密码过期错误 - 只需更改密码(您也可以更改与此用户关联的配置文件,以便密码永不过期)。数据库会将转储文件放在 datapump 目录中(除非您使用 directory 参数指定一个,但对于初学者,我建议坚持使用默认的 datapump 目录)。 tkcsowner/tkcsowner@db11g。我忘了添加 db11g。奇怪的是,它继续备份就好了。但是,当我使用 db11g 再次执行此操作时,它返回错误:无法解析指定的连接标识符。 如果您遇到新问题,请发布新问题。以上是关于如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?的主要内容,如果未能解决你的问题,请参考以下文章
安装 Oracle 数据库 11g 时检查 Oracle XE 服务实例失败我该怎么办