oracle 误删表空间 导致的一些列错误解决方案,最终解决结果为用户可以正常使用原来的表空间,其数据通过备份去恢复
1,我们尝试恢复表空间
1.1,在sysdba下输入命令查询控制文件id
select ts#,file#,name from v$datafile;
查询到空间文件id为8
1.2,尝试使用rman工具去恢复文件,输入命令restore datafile 8;,返回下面的错误信息
Starting restore at 19-APR-19 using target database control file instead of recovery catalog RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 04/19/2019 14:59:46 RMAN-12010: automatic channel allocation initialization failed RMAN-06171: not connected to target database
大概提示db_recovery_file_dest_size空间不足,我们清理失效备份,并且增大其值
1.3,输入如下命令查询其大小 db_recovery_file_dest_size ,根据磁盘情况我们将其扩大一倍
SQL> show parameter db_recover NAME TYPE VALUE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/flash_recovery _area db_recovery_file_dest_size big integer 3882M SQL> alter system set db_recovery_file_dest_size=8G scope=spfile; System altered.
1.4,此时我们关闭数据库,仍然报错,shutdown immediate;
SQL> shutdown immediate; ORA-01116: error in opening database file 9 ORA-01110: data file 9: '/u01/app/oracle/oradata/orcl/EQUIPMENT_DATA.dbf' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3
1.5,根据错误提示,我们做脱机表空间并做删除处理
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/EQUIPMENT_PORTLET_DATA.dbf' offline drop; Database altered.
1.6,此时我们再做关闭数据库处理
SQL> shutdown immediate; ORA-01116: error in opening database file 9 ORA-01110: data file 9: '/u01/app/oracle/oradata/orcl/EQUIPMENT_DATA.dbf' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3
1.7,此时报错为新的错误,该错误为我们删除的测试表空间,前期没有留意,还以为是其他错误,但此时我误打误撞在登陆用户下,再次执行了删除表空间命令,成功!!!
drop tablespace EQUIPMENT_PORTLET_DATA
1.8,查看用户的表空间,发现用户的表空间为空
select default_tablespace from dba_users where username='equipmentportlet'
1.9,最后依次执行创建表空间,赋值用户表空间,成功
select default_tablespace from dba_users where username='equipmentportlet' create tablespace EQUIPMENT_PORTLET_DATA logging datafile '/u01/app/oracle/oradata/orcl/EQUIPMENT_PORTLET_DATA.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; alter user equipmentportlet default tablespace EQUIPMENT_PORTLET_DATA;
注意,以上操作,您可以先自行测试,解决的结果是使用户可以正常使用原本表空间
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情