【问题标题】:Recovering an Oracle tablespace (APEX) from file system backups of database tablespace files从数据库表空间文件的文件系统备份中恢复 Oracle 表空间 (APEX)
【发布时间】:2019-05-18 11:28:42
【问题描述】:

我正在尝试恢复意外删除的 Oracle APEX 工作区的应用程序。数据库是 12c 和 APEX 18.1

如果唯一可用的备份是 oradata 文件夹(包含所有表空间文件)的操作系统级备份,那么最好的方法是什么?我的 APEX 模式存在于它自己的表空间中。我可以简单地将昨晚的 APEX 表空间文件副本复制到当前的副本上来恢复吗?

没有 RMAN 备份,并且使用所有默认选项安装数据库,没有存档日志和闪回。我也没有使用 expdp 生成任何转储。

我已经尝试使用 dbms_flashback 包返回几个小时但无济于事,因为我收到关于回滚段太小的错误。我最早可以让它工作,已经处于所需恢复点之后的状态。

【问题讨论】:

  • 如果我的回答对你有用,请接受它
  • 感谢 Chris 提供的信息丰富的回答。也许它会起作用,但在我的例子中,数据库位于一个 VM 中,我们在那里有整个 VM 的 7 天滚动完整快照。所以基本上我们已经恢复了最后一天的工作快照,我能够在不求助于任何 Oracle 特定工具或程序的情况下解决我的问题。幸运的是,这是一台开发机器,因此没有最终用户数据交易丢失。

标签: oracle backup oracle-apex recovery tablespace


【解决方案1】:

澄清

我假设您只是丢失了 APEX 表空间,但您的数据库当前正在运行。如果是这种情况,并且假设您的 APEX 表空间不跨越多个数据文件,您可以尝试换出数据文件。请在尝试任何操作之前强制在 rman 中进行备份。

这里有几个不同的选项。您真正需要的只是以下内容

  1. 数据文件
  2. 控制文件
  3. 存档/重做日志(如果您想及时向前或向后移动)

我将概述两个选项,因为我没有所有相关信息。第一个选项尝试通过 rman 实际恢复数据文件,第二个选项只是将其换出。第一个显然是优先的,但可能无法实现。

RMAN 恢复

首先在你的init.ora文件中设置如下参数

_allow_resetlogs_corruption=TRUE

将整个oradata 备份目录移动到/tmp/oradata。然后在该目录中找到您的dbfctl 文件的位置。

然后从 bash 终端运行 rman target /。在 rman 中运行以下命令。

RESTORE CONTROLFILE FROM '/tmp/oradata/your_ctrl_file_dir'
ALTER TABLESPACE apex OFFLINE IMMEDIATE';
SET NEWNAME FOR DATAFILE '/tmp/oradata/apex01.dbf' TO 
RESTORE TABLESPACE apex;
SWITCH DATAFILE ALL; 
RECOVER TABLESPACE apex;

换出数据文件

首先找到您的数据文件的位置。您可以通过在sqlplus / as sysdba 或您使用的任何客户端中运行以下命令来找到它们

spool '/tmp/spool.out'
select value from v$parameter where name = 'db_create_file_dest';
select tablespace name from dba_data_files;

查看 spool.out 文件并

  1. 验证数据文件的位置
  2. 查看数据文件是否仍与该表空间相关联。

如果表空间还在,则运行

select file_name, status from dba_data_files WHERE tablespace name = < name > 

您希望您的数据文件可用。然后你想将表空间设置为只读并使其脱机

alter tablespace < name > read only;
alter tablespace < name > offline;

现在将您的dbf 文件复制到从查询db_create_file_dest 值返回的目录中。不要覆盖旧的,然后运行。

alter tablespace < name > rename datafile '/u03/waterver/oradata/yourold.dbf' to '/u03/waterver/oradata/yournew.dbf'

这会更新您的控制文件以指向新的数据文件。

然后您可以使您的表空间重新联机并重新进入读写模式。您可能还想验证表空间状态、与该表空间关联的数据文件的名称等。

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多