当前位置: 首页 > news >正文

Oracle无法正常OPEN(三)

在Oracle数据库中,如果几个数据文件丢失,导致数据库无法启动,报错“ORA-01157: cannot identify/lock data file 2 - see DBWR trace file”,如果没有物理备份的情况下,位于丢失数据文件的数据是无法找回的,但是没有丢失的数据文件上的数据还在,所有可以通过重建控制文件,去掉丢失的数据文件,来恢复数据库

创建测试数据

create tablespace tbs1 datafile '/data/oracle/prod/tbs01.dbf' size 10M;
conn acl_test/oracle;
create table t2 (id int,name varchar2(10)) tablespace tbs1;
insert into acl_test.t2 values(1,'aaa');
commit;

模拟数据文件丢失

mv tbs01.dbf  tbs01.dbf_bak

重启数据库

shutdown abort;
SQL> startup
ORACLE instance started.Total System Global Area 3221225472 bytes
Fixed Size                  8625856 bytes
Variable Size             788529472 bytes
Database Buffers         2415919104 bytes
Redo Buffers                8151040 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/data/oracle/prod/tbs01.dbf'

重建控制文件

#备份出当前控制文件
alter database backup controlfile  to trace as  '/home/oracle/cur.trc';
#根据/home/oracle/cur.ctl编辑重建控制文件语句
[oracle@test ~]$ vi ctl.sql CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS FORCE LOGGING ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/data/oracle/prod/redo01.log'  SIZE 200M BLOCKSIZE 512,GROUP 2 '/data/oracle/prod/redo02.log'  SIZE 200M BLOCKSIZE 512,GROUP 3 '/data/oracle/prod/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
--   GROUP 4 '/data/oracle/prod/std1.log'  SIZE 200M BLOCKSIZE 512,
--   GROUP 5 '/data/oracle/prod/std2.log'  SIZE 200M BLOCKSIZE 512,
--   GROUP 6 '/data/oracle/prod/std3.log'  SIZE 200M BLOCKSIZE 512,
--   GROUP 7 '/data/oracle/prod/std4.log'  SIZE 200M BLOCKSIZE 512
DATAFILE'/data/oracle/prod/system01.dbf','/data/oracle/prod/sysaux01.dbf','/data/oracle/prod/undotbs01.dbf','/data/oracle/prod/test01.dbf','/data/oracle/prod/users01.dbf'
CHARACTER SET AL32UTF8
;

在nomount状态下执行

 startup nomount;@ctl.sqlControl file created.SQL> select open_mode from v$database;OPEN_MODE
--------------------
MOUNTED

恢复数据库

SQL> RECOVER DATABASE;
ORA-00283: recovery session canceled due to errors
ORA-01244: unnamed datafile(s) added to control file by media recovery
ORA-01110: data file 2: '/data/oracle/prod/tbs01.dbf'#查看表空间
SQL> select name from v$tablespace2  ;NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEST
USERS
TBS1
发现tbs1表空间还在,查看数据文件SQL> select file#,name,status from v$datafile;FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------1 /data/oracle/prod/system01.dbf                     SYSTEM2 /u01/app/oracle/product/12.1.0/db_1/dbs/UNNAMED000 RECOVER023 /data/oracle/prod/sysaux01.dbf                     RECOVER4 /data/oracle/prod/undotbs01.dbf                    RECOVER5 /data/oracle/prod/test01.dbf                       RECOVER7 /data/oracle/prod/users01.dbf                      RECOVER6 rows selected
#发现2号数据文件路径异常,尝试将此表空间offline
SQL> alter database datafile 2 offline;Database altered.
#恢复数据库
SQL> recover database;
Media recovery complete.
尝试open数据库
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 12452
Session ID: 9 Serial number: 19207
再次startup数据库
SQL> startup
ORACLE instance started.Total System Global Area 3221225472 bytes
Fixed Size                  8625856 bytes
Variable Size             788529472 bytes
Database Buffers         2415919104 bytes
Redo Buffers                8151040 bytes
Database mounted.
Database opened.

查看测试数据

SQL> select * from acl_test.t2;
select * from acl_test.t2*
ERROR at line 1:
ORA-00376: file 2 cannot be read at this time
ORA-01111: name for data file 2 is unknown - rename to correct file
ORA-01110: data file 2: '/u01/app/oracle/product/12.1.0/db_1/dbs/UNNAMED00002'SQL> select file_name,tablespace_name,status from dba_data_files;FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                STATUS
------------------------------ ---------
/data/oracle/prod/system01.dbf
SYSTEM                         AVAILABLE/data/oracle/prod/sysaux01.dbf
SYSAUX                         AVAILABLE/data/oracle/prod/test01.dbf
TEST                           AVAILABLEFILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                STATUS
------------------------------ ---------
/data/oracle/prod/users01.dbf
USERS                          AVAILABLE/u01/app/oracle/product/12.1.0/db_1/dbs/UNNAMED00002
TBS1                           AVAILABLE/data/oracle/prod/undotbs01.dbf
UNDOTBS1                       AVAILABLE

删除丢失的表空间

DROP TABLESPACE tbs1 INCLUDING CONTENTS AND DATAFILES;

相关文章:

  • Webug4.0靶场通关笔记13- 第22关越权修改密码
  • 【Linux网络编程】http协议的状态码,常见请求方法以及cookie-session
  • AE脚本 关键帧缓入缓出曲线调节工具 Flow v1.5.0 Win/Mac
  • AI 生成内容的版权困境:法律、技术与伦理的三重挑战
  • 使用 Java 实现一个简单且高效的任务调度框架
  • Laravel Octane 项目加速与静态资源优化指南
  • Lebesgue测度和积分理论发展概观
  • 初学python的我开始Leetcode题8-3
  • 使用QtCreator创建项目(3)
  • C++异常处理
  • python多线程输入字符和写入文件
  • Centos7.9 安装mysql5.7
  • 【CV数据集】Visdrone2019无人机目标检测数据集(YOLO、VOC、COCO格式)
  • 今日行情明日机会——20250430
  • 11.多边形的三角剖分 (Triangulation) : 画廊问题
  • 深挖Java基础之:变量与类型
  • npm命令介绍(Node Package Manager)(Node包管理器)
  • 实验三 软件黑盒测试
  • 人工智能100问☞第14问:人工智能的三大流派(符号主义、联结主义、行为主义)有何区别?
  • C和指针笔记2——编译、链接
  • 融创中国清盘聆讯延至8月25日,清盘呈请要求遭到部分债权人反对
  • 单阶段遭遇零封偶像奥沙利文,赵心童要让丁俊晖预言成真
  • 辽宁男篮被横扫这一晚,中国篮球的一个时代落幕了
  • 云南石屏举办茶文化交流活动:弘扬企业家精神,激发市场活力
  • 《一鸣惊人》五一特别节目:以戏曲为桥梁,展现劳动者的坚守
  • 神十九乘组安全顺利出舱