Oracle误删除表空间恢复
由于表空间名字取错了。。然后关掉数据库服务器后直接删除了表空间,结果导致
连接数据库的时候只能够用sys用户来连接数据库,用其他用户登陆的话才出现错误
如果用sys用户去查询SCOTT.EMP的话会出现下面的错误、
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
其实原因很简单。。我把DBF文件删除了之后。。数据库启动后要锁定那几个表空间。但是表空间不存在。。导致出问题了。。。我们只要把表空间的引用移除掉就好了
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 7: '
D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF '
到这里。我们只要移除引用就好了
SQL>alter database datafile
'D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF' offline drop;
完成之后。即可
这时候我们再去启动数据库 会出现新的错误
SQL> shutdown immediate;
ORA-01109: database未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
即可恢复好数据库。。
PS: 不要手贱去删除表空间文件。。。还是要先drop掉 再去删除引用。。
操作步骤如下:
1. shutdown immediate; --先关闭实例
2. startup; 启动。。出错
3. alter database datafile 'D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF' offline drop;--移除
4. shutdown immediate; --先关闭实例
5. startup;
6. alter database open resetlogs;
7. 完成
8. 进去后 再试试去drop不要的表空间吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述