我可以从ORACLE数据文件文件夹中还原数据吗?

时间:2018-08-06 14:03:02

标签: oracle database-restore tablespace data-files

我的服务器遭到了勒索软件.rapid的攻击,我的所有数据都已加密,幸运的是,我的oracle home文件夹尚未加密-而且-大多数文件包括 datafiles 文件夹和表空间仍然可以访问

有人可以告诉我如何恢复数据库对象吗? 没有可用的备份,只有oracle主文件夹-大多数-

编辑: 系统损坏了,我试图了解要收集和复制的女巫文件,这使我可以从另一个系统中恢复数据库文件

当我尝试登录 sqlplus 时,抛出以下错误:

  

'sqlplus'不被识别为内部或外部命令,   可操作的程序或批处理文件。   引用

编辑: FILES THAT I STILL HAVE ACCESS TO - NOT ENCRYPTED -

1 个答案:

答案 0 :(得分:2)

好的。如果您在服务器上找到一个init.ora文件,那就是PFILE(初始化参数文件),这是将数据库轻松复制到新服务器的最后一件事。如果找不到,那没关系-会有点困难。只要有了数据文件,您最终就可以恢复数据库。

基本上是you'll want to follow steps 2-8 in the link I posted。您还可以在the Oracle guide to manually creating a database in Windows中找到一些有用的信息。我将带您了解他们。

  1. 关闭旧数据库(如果它仍在运行)。这将确保您的数据文件处于一致的状态以进行复制。如果您无法访问sqlplus,则可能最简单的方法是停止Windows服务。
  2. 将数据复制到新服务器。我假设它会在相同的位置,D:\app\Administrator\oradata\VTC\
  3. 复制控制文件CONTROL01.CTL并将其命名为create_db.sql(编辑:我假设这是控制文件的backup to trace ascii版本,但听起来像这样是二进制文件)
  4. 编辑create_db.sql。在显示CREATE CONTROLFILE REUSE DATABASE "MY_DB" NORESETLOGS的地方,将其更改为CREATE CONTROLFILE SET DATABASE "MY_DB" RESETLOGS。记下"MY_DB"是什么-这是您的数据库名称。大多数人将其与SID相同。我通常会执行RESETLOGS,丢弃旧的重做日志,但是如果可以的话,您可以尝试将它们与NORESETLOGS保持在一起。
  5. 删除或注释掉RECOVER DATABASEALTER DATABASE OPEN;这两行。确保数据文件和日志文件的路径看起来正确。保存文件。
  6. 如果您找不到要复制的init.ora,我认为,尽管您以后要修复内存设置,但这个很小的功能将为您服务。在同一文件夹中创建它。
DB_NAME=MY_DB
INSTANCE_NAME=MY_DB
SERVICE_NAMES=MY_DB
CONTROL_FILES = ("D:\app\Administrator\oradata\VTC\CONTROL01.CTL")
DB_FILES=100
  1. 创建Oracle数据库Windows服务。然后检查“服务”以确保其正在运行。

    oradim -NEW -SID MY_DB -STARTMODE manual -PFILE "D:\app\Administrator\oradata\VTC\init.ora"

  2. 以SYSDBA身份登录到新的Oracle实例。还没有数据库。

    cd D:\app\Administrator\oradata\VTC\ set ORACLE_SID=MY_DB sqlplus / as sysdba

  3. 使用旧服务器中的控制文件作为脚本来创建数据库。

    @create_db.sql

  4. 如果一切恢复正常,请运行:

    alter database open