UNDO表空间下的数据文件被误删除后的处理办法ITeye - 凯发娱乐

UNDO表空间下的数据文件被误删除后的处理办法ITeye

2019年03月30日13时45分35秒 | 作者: 香薇 | 标签: 空间,数据文件,数据库 | 浏览: 1602



UNDO表空间下的数据文件被误删去后的处理办法:

操作前备份数据库,以防止更大的丢失。
思路:
1、把误删去的数据文件offline
2、正常翻开数据库后创立新的UNDO表空间及数据文件
3、修正相应参数指向新的UNDO表空间
4、重新发动数据库验证
5、删去旧的UNDO表空间。


以下为我在虚拟机上模仿的场景:在数据库翻开的状态下,用操作系统指令将undo表空间对应的仅有数据文件改名,以模仿数据文件被删去的状况。
封闭数据库
SQL shutdown immediate;
Database closed.
Database dismounted.
Oracle instance shut down.
发动数据库,报错,提示找不到undo表空间下的数据文件/oradata/orcl/undotbs01.dbf
SQL startup
ORACLE instance started.


Total System Global Area  536870912 bytes
Fixed Size  2097624 bytes
Variable Size  150998568 bytes
Database Buffers  377487360 bytes
Redo Buffers  6287360 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: /oradata/orcl/undotbs01.dbf


将该数据文件offline
SQL alter database datafile 2 offline
2  ;


Database altered.


正常翻开数据库
SQL alter database open;


Database altered.


显现UNDO相关的参数
SQL show parameter undo


NAME  TYPE  VALUE
-
undo_management  string  AUTO
undo_retention  integer  900
undo_tablespace  string  UNDOTBS1
创立新的UNDO表空间
SQL create undo tablespace undotbs2 datafile /oradata/orcl/undotbs02.dbf size 320M;


Tablespace created.


修正UNDO_TABLESPACE参数,指向新创立的UNDO表空间
SQL alter system set undo_tablespace=undotbs2 scope=spfile;


System altered.
重新发动数据库
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.


SQL startup 
ORACLE instance started.


Total System Global Area  536870912 bytes
Fixed Size  2097624 bytes
Variable Size  150998568 bytes
Database Buffers  377487360 bytes
Redo Buffers  6287360 bytes
Database mounted.
Database opened.


SQL select * from v$tablespace;


  TS# NAME  INC BIG FLA ENC
- - - -
  0 SYSTEM  YES NO  YES
  1 UNDOTBS1  YES NO  YES
  2 SYSAUX  YES NO  YES
  3 TEMP  NO  NO  YES
  4 USERS  YES NO  YES
  5 HRTBS  YES NO  YES
  6 DEMO  YES NO  YES
  8 UNDOTBS2  YES NO  YES


8 rows selected.
承认UNDO_TABLESPACE参数已修正
SQL show parameter undo


NAME  TYPE  VALUE
-
undo_management  string  AUTO
undo_retention  integer  900
undo_tablespace  string  undotbs2

删去旧的UNDO表空间
SQL drop tablespace undotbs1;

Tablespace dropped.
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章