某项目扩展表空间后增加了一个数据文件,出现数据库无法连接的情况,项目人员联系主机硬件厂家,对方发了几个图片说空间不足了,项目人员于是说按照对方说法在主机删除了对应数据文件,这次更无法启动数据库了,,,,,真是无知者无畏,对方敢让删数据文件,项目人员也赶删,实在是无语至极!
这个表空间已有53个数据文件,这次按序号增加的是54号数据文件,之后又在os层面执行了rm操作,且重启了主机,恢复这个文件是基本没有希望了。
查看数据库日志,如下:
Fri Jan 21 16:46:00 2022
ALTER TABLESPACE UNIREPORT ADD DATAFILE '/tybb1db/UNIREPORT54' SIZE 30G
Fri Jan 21 16:49:01 2022
Completed: ALTER TABLESPACE UNIREPORT ADD DATAFILE '/tybb1db/UNIREPORT54' SIZE 30G
Fri Jan 21 16:49:30 2022
ALTER TABLESPACE UNIREPORT ADD DATAFILE '/tybb1db/UNIREPORT55' SIZE 30G
可见在数据库看来,已经正常添加了这个30G的数据文件,只是此后无法进行连接了。
于是删除了这个数据文件,就无法启动数据库了,如下:
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Fri Jan 21 18:03:21 2022
Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =250
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Fri Jan 21 18:09:04 2022
Starting background process SMCO
Fri Jan 21 18:09:04 2022
SMCO started with pid=24, OS id=3816
Fri Jan 21 18:10:00 2022
Checker run found 1 new persistent data failures
Fri Jan 21 18:12:33 2022
Starting ORACLE instance (normal)
Fri Jan 21 18:13:26 2022
Errors in file /home/oracle/oracle11g/diag/rdbms/orcl/orcl/trace/orcl_m000_3962.trc:
ORA-01116: error in opening database file 75
ORA-01110: data file 75: '/tybb1db/UNIREPORT54'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Fri Jan 21 18:17:04 2022
Starting ORACLE instance (normal)
Fri Jan 21 18:23:27 2022
Errors in file /home/oracle/oracle11g/diag/rdbms/orcl/orcl/trace/orcl_m000_4353.trc:
ORA-01116: error in opening database file 75
ORA-01110: data file 75: '/tybb1db/UNIREPORT54'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Fri Jan 21 18:33:27 2022
Errors in file /home/oracle/oracle11g/diag/rdbms/orcl/orcl/trace/orcl_m000_5198.trc:
ORA-01116: error in opening database file 75
ORA-01110: data file 75: '/tybb1db/UNIREPORT54'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
接电话后,经过了解,知悉项目每天的自动异地备份是晚间执行的,数据泵导出了主要数据,这一点还是按要求做了,值得肯定。有了这个就心中有底,不至于出现极端无法恢复系统的情况。
登录系统,确认该库是非归档模式,部署在虚机上,单节点单实例。
直接启动到mount模式,offline drop这个数据文件,然后直接open库,如下:
startup mount
alter database datafile '/tybb1db/UNIREPORT54' offline drop;
alter database open;
但此时在数据库的字典数据里,还是可见这个数据文件的,由于急于恢复业务,暂时没法直接删除这个文件,如下:
ALTER TABLESPACE UNIREPORT DROP DATAFILE '/tybb1db/UNIREPORT54';
*
ERROR at line 1:
ORA-03264: cannot drop offline datafile of locally managed tablespace
此时可以正常的读写库,如果之前没有这个54号文件写数据,理论上是不会报错的,除非需要用到这个54号文件。
如果非得要删除这个54号数据文件,只能online之后,再执行tablespace层面的删除操作,只好先这样吧。