临时表空间损坏的修复

最近测试环境需要把一些现有的存储空间匀出一部分来给新增的环境使用。
unix组的人很快就空间按照指定的比例重新切分好了。环境交给我的时候,我先把数据库起来,没有任何问题,因为需要到处一个创建用户的语句,就简单执行了一个查询。
select dbms_metadata.get_ddl('USER',u.username) from dba_users u WHERE USERNAME in('TEST');
但是让我意外的,报了如下的错误。
SQL> select dbms_metadata.get_ddl('USER',u.username) from dba_users u WHERE USERNAME in('TEST');
ERROR:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/u01/oracle/TEST/oratmp01/temp/temp01.dbf'
ORA-06512: at "SYS.DBMS_METADATA", line 4018
ORA-06512: at "SYS.DBMS_METADATA", line 5843
ORA-06512: at line 1

no rows selected

想数据文件被清掉了,先给offline了重新配置一下。
offline不可以,offline drop也不行。
SQL> alter database datafile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf' offline;
alter database datafile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf' offline
*
ERROR at line 1:
ORA-01516: nonexistent log file, data file, or temporary file
"/u01/oracle/TEST/oratmp01/temp/temp01.dbf"

SQL> alter database datafile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf' offline drop;
alter database datafile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf' offline drop
*
ERROR at line 1:
ORA-01516: nonexistent log file, data file, or temporary file
"/u01/oracle/TEST/oratmp01/temp/temp01.dbf"


我说不能offline,offline drop,有的人说得放在mount状态下执行,我试了也不行。
我直接删除表空间重新建得了,oracle已经开始给我哭穷了,说不能删除默认的临时表空间。
SQL> drop tablespace temp including contents and datafiles;
drop tablespace temp including contents and datafiles
*
ERROR at line 1:
ORA-12906: cannot drop default temporary tablespace

那我删除这个临时文件,oracle又说这个临时表空间里只有一个数据文件。
SQL> alter tablespace temp drop tempfile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf';
alter tablespace temp drop tempfile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf'
*
ERROR at line 1:
ORA-03261: the tablespace TEMP has only one file

我还是自己查看下文件夹到底在不在。一查文件夹都被清掉了。
SQL> !ls -l /dbusgsPT1/oracle/PETUSG1/oratmp01/temp
ls: /dbusgsPT1/oracle/PETUSG1/oratmp01/temp: No such file or directory

先把文件夹给补上
SQL> !mkdir -p /u01/oracle/TEST/oratmp01/temp
建立一个别名的临时文件,马上见temp01的临时数据文件还不行。
SQL> alter tablespace temp add tempfile ' /u01/oracle/TEST/oratmp01/temp/temp02.dbf '  size 20G;
Tablespace altered.
然后再去删除其实不存在的临时数据文件。从数据字典里进行更新。
SQL> alter tablespace temp drop tempfile '/u01/oracle/TEST/oratmp01/temp/temp01.dbf';
Tablespace altered.
后续就如果需要可以把临时数据文件的名字从temp02.dbf改成temp01.dbf






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1135011/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-1135011/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值