• oracle学习笔记:linux下恢复误删oracle的数据文件


    场景描述:操作系统级别的删除数据文件,而且数据库没有崩溃,仍处于open状态。

    原理:在linux操作系统中,如果文件从操作系统级别被删除掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。如果关闭数据库,则句柄就会丢失。

    非归档模式

    1、恢复系统表空间(SYSTEM)数据文件

    (1)模拟删除

    rm /oracle/app/oradata/HXDB/system01.dbf

    (2)查找dbwr进程号

    ps -ef|grep dbw

    (3)根据进程号查找文件

    cd /proc/2860/fd

    cp 258 /oracle/app/oradata/HXDB/system01.dbf

    (4)恢复数据文件

    alter database datafile 1 offline;

    recover datafile 1;

    alter database datafile 1 online;

    注意:由于system表空间无法离线,上述操作会报错ORA-01541: system tablespace cannot be brought offline; shut down if necessary,解决办法可关闭数据库,启动数据库到mount状态并恢复数据文件,打开数据库。

    (5)启动数据库到mount 状态

    shutdown immediate;

    startup mount;

    recover datafile 1;

    alter database open;

    2、普通表空间

    rm /oradata/HXDB/datafile/users01.dbf

    cd /proc/4276/fd

    cp 261 /oradata/HXDB/datafile/users01.dbf

    alter database datafile 4 offline;

    注意:此时报错,ORA-01145: offline immediate disallowed unless media recovery enabled

    alter database datafile 4 offline drop;

    recover datafile 4;

    alter database datafile 4 online;

    归档模式:同上,正常操作不会报错

  • 相关阅读:
    面向对象六
    面向对象五
    面向对象四
    面向对象三
    面向对象二
    CentOS7下安装Redis4.0
    在亚马逊的EC2环境中创建swap
    centos7安装rabbitmq操作步骤
    在VUE下使用阿里图标
    Centos7-安装telnet服务
  • 原文地址:https://www.cnblogs.com/myheart-new/p/11936656.html
Copyright © 2020-2023  润新知