我意外地覆盖了 system.dbf/usr/lib/oracle/xe/oradata/XE/system.dbf
嗯,我实际上并不是意外地这样做的,但是由于数据库中的其他故障,我覆盖了它。
当我尝试运行以下命令时:
SQL> shutdown
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 289406976 bytes
Fixed Size 1258488 bytes
Variable Size 92277768 bytes
Database Buffers 192937984 bytes
Redo Buffers 2932736 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
现在我想尝试恢复数据库,因为以安装或标准方式启动它肯定不起作用。
SQL> recover database using backup controlfile;
ORA-00283: recovery session canceled due to errors
ORA-01110: data file 1: '/usr/lib/oracle/xe/oradata/XE/system.dbf'
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/usr/lib/oracle/xe/oradata/XE/system.dbf'
ORA-01206: file is not part of this database - wrong database id
我该如何解决这个问题?有可能吗?
我的“真正”问题是我运行了 /etc/init.d/oracle-xe configure,它覆写我的旧配置,可能删除了密码等,所以我的表不见了,但是我找到了mytablespace.dbf,所以我希望有可能恢复吗?
请对此作出解释。
答案1
您有数据库备份吗?覆盖 SYSTEM 表空间数据文件需要从备份中进行完整恢复。
答案2
由于我没有使用过 Oracle,所以我完全不知道这是否适用。但是如果文件是由某个进程打开的,并且该进程仍在运行,那么您可以通过访问 /proc 文件系统来恢复它。
# ls -l /proc/13646/fd
total 0
lrwx------ 1 root root 64 Apr 13 21:43 0 -> /dev/null
lrwx------ 1 root root 64 Apr 13 21:43 1 -> /dev/null
lrwx------ 1 root root 64 Apr 13 21:43 2 -> /dev/null
lrwx------ 1 root root 64 Apr 13 21:43 3 -> socket:[38094]
l-wx------ 1 root root 64 Apr 13 21:43 4 -> /var/log/openvpn-status-server.log
lrwx------ 1 root root 64 Apr 13 21:43 5 -> /etc/openvpn/ipp.txt
lrwx------ 1 root root 64 Apr 13 21:43 6 -> socket:[38099]
lrwx------ 1 root root 64 Apr 13 21:43 7 -> /dev/net/tun
让我们删除其中一个!
# rm /var/log/openvpn-status-server.log
# ls /var/log/openvpn-status-server.log
ls: cannot access /var/log/openvpn-status-server.log: No such file or directory
好的,删除了,再次 ls:
# ls -l /proc/13646/fd/4
l-wx------ 1 root root 64 Apr 13 21:43 /proc/13646/fd/4 -> /var/log/openvpn-status- server.log (deleted)
它就在那里,已被删除但仍保留。
# cp /proc/13646/fd/4 myrecover.txt
# ls -l myrecover.txt
-rw------- 1 root root 359 Apr 13 21:45 myrecover.txt
果然,我亲爱的旧 openvpn-status-server.log 被恢复了!