【问题标题】:Restore an Oracle database to another disk drive in Windows Server 2012在 Windows Server 2012 中将 Oracle 数据库还原到另一个磁盘驱动器
【发布时间】:2019-01-08 05:07:13
【问题描述】:

我的问题是关于以下问题,需要将Oracle数据库10g快捷版的数据库传递到11g。我在 pendrive 上获得了备份,它是一个扩展名为 .dmp(转储文件)的文件。

我在新服务器上安装了 11g Express 版,还安装了该服务器附带的数据库 (XE)。

我想将数据库从 10g 恢复到 C 以外的另一个单元,这是安装 Oracle 11g 数据库的位置。我也想让这个新的数据库“取代”XE(不知道这样说对不对)。

我只发现了调整和位置变化,但只在同一个单元内。

任何范围都会非常有用。

谢谢。

【问题讨论】:

  • 您可以使用 expdp / impdp 导出导入您的数据库。这适合你吗?
  • 如果我只在随身碟上有备份,我该怎么办?根据我所说的恢复它的程序是什么?
  • 你用什么来备份你的数据?你是怎么备份的?
  • 我不太清楚,我只是直接从另一个机构的笔式驱动器上收到文件,以便能够在我们的服务器上恢复它。它是一个扩展名为 .dmp 的单个文件

标签: database oracle


【解决方案1】:

从 cmets 来看,听起来您已经从 pendrive 上的数据库中获得了一个数据库转储文件 (.dmp),您需要弄清楚如何将该文件放入数据库,对吗?

首先,让我们回顾一下背景。什么是转储文件 (.dmp)?来自Oracle

转储文件集由一个或多个磁盘文件组成,其中包含 表数据、数据库对象元数据和控制信息。这 文件以专有的二进制格式编写。在导入期间 操作,数据泵导入实用程序使用这些文件来定位 转储文件集中的每个数据库对象。

在较高级别上,.dmp 文件是 DDLDML 语句的集合,它们将重新创建导出的任何数据和对象。 .dmp 文件使使用 Data Pump 在数据库之间传输和移动大量数据变得更加容易。但是Data Pump 是什么?同样,来自 Oracle:

Oracle 数据泵技术支持将数据和元数据从一个数据库高速移动到另一个数据库。

基本上,Data Pump 是一组实用程序 (EXPDP & IMPDP),用于在数据库之间移动数据。您拥有的.dmp 文件可能是使用EXPDP 创建的。您需要使用IMPDP 将该.dmp 文件导入数据库。

这里变得有趣了——你说你已经有一个 11g 的数据库,对吗?如果您愿意,您应该能够将 10g 转储文件直接导入您的 11g 数据库,而不会出现任何问题。原因是 Oracle 倾向于向后兼容,通常,您对某个 Oracle 版本所做的任何事情都将与紧接其后的版本兼容。从 Oracle 8i 之类的东西跳到 11g 是行不通的,但你总是可以从 8i 跳到 9i,从 9i 跳到 10g,等等。

如果您想将该转储文件导入您的 11g 数据库,您需要执行以下操作:

  1. 创建一个 DBA 帐户,或拥有一个已明确授予数据泵权限的帐户。
  2. 将 .dmp 文件移动到 11g 数据库所在的服务器。如果您想让自己更轻松,可以将 .dmp 文件移动到数据库的数据泵目录。如果您不知道它在哪里,请在您的数据库上执行以下查询:select * from all_directories where directory_name = 'DATA_PUMP_DIR'; 此查询将返回一个目录。您不必使用此目录,它只会让事情变得更简单。
  3. 准备好转储文件并拥有所有必要的数据库和操作系统权限后,您就可以导入 dmp 文件了。打开一个新的命令行窗口,设置您的 Oracle 主目录(如果尚未设置),然后导航到您放置 .dmp 文件的目录。您的导入命令将如下所示:

    impdp [USERNAME]/[PASSWORD]@[DATABASE] directory=[DIRECTORY] dumpfile=[FILENAME].dmp logfile=[LOGFILE].log

    [USERNAME]/[PASSWORD] 是您的凭据,[DATABASE] 是您要将转储文件导入到的数据库的名称,[DIRECTORY] 是您放置转储文件的任何目录,[FILENAME] 是.dmp 文件的名称,[LOGFILE] 是您为日志文件选择的任何名称。

假设您的数据库具有 .dmp 文件所需的一切,导入应该开始并且您将开始看到类似于此的状态更新:

Starting [USERNAME]."SYS_IMPORT_FULL_01":  [USERNAME]/******** directory=DATA_PUMP_DIR dumpfile=[FILENAME].dmp logfile=[LOGFILE].log 
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/TABLE/TABLE

请注意,这只是一个示例,您的结果可能会有所不同。假设一切顺利,你会在最后看到这样的消息:

Job [USERNAME]."SYS_IMPORT_FULL_01" completed

如果您不想将其导入现有的 11g 数据库,您可以随时启动一个新数据库并使用这些相同的指南将 .dmp 文件导入该数据库。

这应该足以让您走上正确的道路,希望这会有所帮助并祝您好运!

附:以下是有关数据泵实用程序的一个很好的常见问题解答:http://www.orafaq.com/wiki/Import_Export_FAQ

【讨论】:

  • 谢谢,我无法使用您的建议进行导入,因为导出是使用 exp 而不是使用 expdp 完成的。所以我用 imp 途中遇到了不便,但我想这将是另一个论坛的主题。
  • 抱歉,我没弄明白,但我很高兴能帮助您朝着正确的方向开始。他们使用 imp 而不是 impdp 有点奇怪,但如果他们使用的是 10g 实例,我猜他们只是使用他们一直拥有的相同脚本。很高兴你明白了!确保你也记录了你使用的命令,以防将来你必须做另一个这样的导入。
  • 谢谢你,希望你能帮我解决我的下一个问题,它与这个问题和恢复文件的位置有关。
  • 好吧,我不能做出任何承诺,但我绝对可以试一试。存储文件的位置是指实际保存数据的数据库文件的位置,还是完全其他的位置?在此处发布问题的链接,我会在有时间的时候查看。
  • 谢谢!我已经发布了我的问题,这是链接:stackoverflow.com/questions/54202921/…
猜你喜欢
  • 2012-12-11
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
相关资源
最近更新 更多