删除users表空间数据文件后报ORA-01033错误

说明:

要建一张表(as select好多数据)导致表空间不足,该表原本想建在USERS空间下,于是想要增加一个数据文件USER02.DBF,结果增加后还是不足,看到PDM_DATA表空间中有很多空间没有用,为了腾出空间,于是停止了windows的oracle服务,手贱的在os上直接给删了,然后启动服务后就报了ora-01033错误,在网上查了下:造成ORA-01033的原因有很多,比如断电、电脑强制重启,或者数据库文件误删等,这些导致oracle要么卡在初始化中,要么关闭了,我们要做的就是重启它。

1.启动数据库

 

运行cmd 

第一步、sqlplus /NOLOG

第二步、SQL>connect  / as sysdba

提示:已成功

第三步、SQL>shutdown normal

      提示:数据库已经关闭       已经卸载数据库       ORACLE 例程已经关闭

第四步、SQL>startup mount

第五步、SQL>alter database open;

 

2.ORA-01110和ORA-22868

 

按照这个数据库能正常打开了,但是又出现了新的问题:在使用users空间下的表时报了这个错误

而且通过查询数据文件发现还是能查出user02.dbf(datafile 19)的路径,但是在系统文件中已经被删了,因为这个user02很碍眼而且时不时会报错,有没有这个时候想要重建或者删除USERS表空间。

删除USERS表空间前需要将这个表空间的数据move到其他表空间里

用管理员账号操作

(1)移动数据表到PDM_DATA下

 

Select 'alter table '||t.owner||'.'||t.table_name||' move tablespace PDM_DATA;' 
     From all_all_tables t where t.tablespace_name='USERS'

将查出的语句执行

(2)移动索引到PDM_DATA下

select 'alter index ' || owner || '.' || segment_name 
|| ' rebuild tablespace PDM_DATA;' sqltext from dba_segments
 where tablespace_name = 'USERS' and segment_type='INDEX';

将查出的语句执行

然后执行drop tablespace USERS,但是报错了:ORA-22868: 具有LOB 的表包含有位于不同表空间的段

于是

(3)移动LOB到PDM_DATA

select 'alter table pdm.'||table_name||
' move lob ('||column_name||' ) store as (tablespace PDM_DATA);'  
from dba_lobs where tablespace_name='USERS';

将查出的语句执行

删除USERS表空间

drop tablespace USERS including contents and datafiles;

然后删除相应电脑上的数据文件
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值