ITPub博客

首页 > 数据库 > Oracle > 临时表空间损坏的修复

临时表空间损坏的修复

原创 Oracle 作者:jeanron100 时间:2014-04-02 22:24:20 0 删除 编辑
最近测试环境需要把一些现有的存储空间匀出一部分来给新增的环境使用。
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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
技术文章每天更新,阵地已转移到微信公众号端。 公众号:jianrong-notes

注册时间:2012-05-14

  • 博文量
    1498
  • 访问量
    14268646