Oracle物理删除dbf文件和表空间恢复

Oracle物理删除dbf文件和表空间恢复

参考:
https://www.iteye.com/blog/java-mans-1642954
https://blog.csdn.net/qq_42774325/article/details/82353266
https://www.cnblogs.com/l10n/p/9406052.html

今天在dmp数据时入错了;想着把表空间文件直接删了,重新入;这想当然的操作,导致后面浪费了时间;
题目说恢复并非指“恢复数据”,确切来说指的是“修复”或“复原”表空间;

环境:
oracle数据库版本:oracle11g EE 11.2.0.4.0 64bit Production

表空间路径:
/home/oracle/oradata/xxspace/
文件名:
xyz202203_1.dbf
xyz202203_2.dbf
xyz202203_3.dbf

就在服务器上直接rm,把xyz202203_*.dbf文件删了;再重建表空间:

CREATE TABLESPACE 'XYZ202203' DATAFILE '/home/oracle/oradata/xxspace/xyz202203_1.dbf' SIZE 5g AUTOEXTEND ON NEXT 1g MAXSIZE UNLIMITED;

ORA-01543:报错,提示表空间XYZ202203已存在;

-- 查看所有表空间
SELECT * FROM DBA_TABLESPACES;
-- 查看表空间数据文件
SELECT * FROM DBA_DATA_FILES;
-- 删除指定schema
DROP USER XYZ_202203 CASCADE;

查询看了表空间还存在;

删除表空间语法:

--oracle 删除表空间及数据文件方法
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

报错IO错误,找不到/home/oracle/oradata/xxspace/xyz202203_1.dbf文件;百度看了有好多是要重装oracle啥得,感觉代价太大没必要,目前这部分数据丢失影响不大,重入一遍;
于是我简单的想去服务器上补上试试:

ALTER TABLESPACE 'XYZ202203' ADD DATAFILE '/home/oracle/oradata/xxspace/xyz202203_4.dbf' SIZE 5g AUTOEXTEND ON NEXT 1g MAXSIZE 20g;
cp xyz202203_4.dbf xyz202203_1.dbf
cp xyz202203_4.dbf xyz202203_2.dbf
cp xyz202203_4.dbf xyz202203_3.dbf
# ls
xyz202203_1.dbf
xyz202203_2.dbf
xyz202203_3.dbf
xyz202203_4.dbf
# 试了还是不行,以为是未授权。安排
chmod 755 xyz202203_*
chown -R oracle xyz202203_*
chgrp -R oracle xyz202203_*

再试了下依然是IO错误,找不到文件。
搜索到一个方法,进服务器sqlplus关了数据库,重启可以恢复;

# https://blog.csdn.net/qq_42774325/article/details/82353266
sqlplus /nolog
conn sys /as sysdba
shutdown immediate
...

第一步就报错,文件损坏,想关都关不了……
虽然不影响其他正常使用,但是以后肯定有大隐患,不能埋坑必需解决掉。

只能另辟蹊径了。

经过观察发现,DBA_TABLESPACES/DBA_DATA_FILES这两表是视图,可以到sys模式下看到对应实际得表;

-- 查看所有表空间
SELECT * FROM DBA_TABLESPACES;
-- 查看表空间数据文件
SELECT * FROM DBA_DATA_FILES;
-- 实际得表或视图
DBA_TABLESPACES 
DBA_DATA_FILES 
sys.file$   
sys.ts$ 
sys.v$dbfile
sys.x$kccfe
sys.x$ktfbhc
sys.x$kcfistsa

DBA_DATA_FILES 有个字段叫ONLINE_STATUS,来自sys.x$kccfe的fetsn和festa字段解码计算出的值:SYSOFFSYSTEMOFFLINEONLINERECOVER
会不会是ONLINE状态表示表空间正在被使用,但实际文件已经被物理删除了,导致drop tablespace语句报错失效;
能否把ONLINE变为OFFLINE试试?还真找到了;

# offline
ALTER DATABASE DATAFILE '/home/oracle/oradata/xxspace/xyz202203_1.dbf'  OFFLINE DROP;
ALTER DATABASE DATAFILE '/home/oracle/oradata/xxspace/xyz202203_2.dbf'  OFFLINE DROP;
ALTER DATABASE DATAFILE '/home/oracle/oradata/xxspace/xyz202203_3.dbf'  OFFLINE DROP;
ALTER DATABASE DATAFILE '/home/oracle/oradata/xxspace/xyz202203_4.dbf'  OFFLINE DROP;

-- 查看表空间数据文件,`ONLINE_STATUS`由`ONLINE`变成了`RECOVER`;
SELECT * FROM DBA_DATA_FILES;

# 删掉表空间文件
drop tablespace XYZ202203 including contents and datafiles;

再次查看DBA_DATA_FILESsys.v$dbfile和服务器/home/oracle/oradata/xxspace/目录,会发现表空间文件都没了。

再重建表空间:

CREATE TABLESPACE 'XYZ202203' DATAFILE '/home/oracle/oradata/xxspace/xyz202203_1.dbf' SIZE 5g AUTOEXTEND ON NEXT 1g MAXSIZE UNLIMITED;

OK

总结教训:
1.如果一开始多查查sql,直接使用drop tablespace就没这么多事了。
2.操作要规范,使用标准sql标准流程操作数据库。
3.做的操作每一步都要明确清楚后果再动手;特别是删除前,多思考最好备份。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容