如何从Oracle 11g XE导出"数据库"并将其导入Oracle 10.2?

zac*_*con 2 windows oracle10g oracle11g

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

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

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

$exp owner/owner schemas=tkcsdb directory=dumpdir dumpfile=dBaseName logfile=dBaseLog
Run Code Online (Sandbox Code Playgroud)

然后SQL Plus返回:

未知参数名称'模式'无法处理参数导出已终止失败

我已经用'schema'替换了'schemas'(同样的错误),我想尝试使用'tables',虽然我不确定结果如何.如果'tkcsdb'是我正在寻找的数据库的名称,我甚至不是100%- 我一直无法列出我拥有的所有数据库.

我想做的事情(我用MS SQL,MySQL,甚至是所有事情的IBM DB2)都很难在Oracle中复制.

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

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

Fra*_*itt 6

EXP和IMP很古老 - 除非你绝对必须,否则不要使用它们.它们无法处理较新Oracle版本的某些功能.

选择的工具是EXPDP和IMPDP(EXP数据泵和IMP数据泵的简称).

不幸的是,使用它们有点复杂,因为您只能在数据库服务器上运行它们(与可以从任何客户端计算机运行的旧式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
Run Code Online (Sandbox Code Playgroud)