oracle 误删表空间 导致的一些列错误

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;

注意,以上操作,您可以先自行测试,解决的结果是使用户可以正常使用原本表空间


如果您觉得本文章对您有用,也为了更好的运营博客,您可以点击这里捐助

评论 抢沙发

昵称 (必填) 邮箱 (必填)
表情