강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
실수로 데이터파일 삭제시 처리방안
조회 : 4,580  


작성자: 강명규
OS: Windows 2000 (intel)
Oracle: Oracle 8.1.7


정석(?)은 full backup을 restore하는 방법입니다.
full backup이 한달전이라면 .. 끔직하죠?
차선의 방안은 해당 데이터파일이 속한 테이블스페이스를 Drop하는 것입니다.
해당 테이블스페이스내의 데이터는 어쩔 수 없습니다. 날라간 거죠
참고로 테이블스페이스내의 데이터파일만 삭제하는 것은 temporary tablespace가 아닌이상 안됩니다.

1. alert.log, DBWR trace file파일을 보면 에러메시지가 있으므로 에러내용을 확인합니다.
   파일삭제로 인한 문제라는 것은 알고 있으므로 그냥 확인만 합니다.
2. svrmgrl를 실행해 connect internal로 로그인합니다.
3. db를 shutdown합니다.
4. db를 startup mount로 시동합니다.
5. alter database datafile '데이터파일이름' offline drop;을 수행합니다.
6. database를 open합니다.
7. 데이터파일이 속한 tablespace를 drop합니다.



다음은 실제 예제입니다.

삭제한 데이터파일:   d:dd_temp.dbf
해당 테이블스페이스: dd_temp

오라클DB가 shutdown상태에서(온라인상태면 윈도의 경우 데이터파일을 OS에서 삭제할 수 없습니다. 유닉스계열은 삭제가능합니다.)
그리고 DB를 startup을 합니다. alert.log에는 에러내용이 기록되고, DBWR trace file파일에 좀더 세부적인 에러내용이
기록됩니다. SQL*PLUS연결시 다음과 같은 에러가 발생합니다.

SQL*Plus: Release 8.1.6.0.0 - Production on 월 Sep 17 16:19:13 2001

(c) Copyright 1999 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.5.0.2 - Production
With the Java option
PL/SQL Release 8.1.5.0.0 - Production

SQL> connect system/xxxxxx
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress


경고: 이제는 ORACLE에 연결되어 있지 않습니다.
SQL>


해결방법
이제 oracle계정에서 다음과 같이 합니다.


C:Documents and SettingsAdministrator>svrmgrl

Oracle Server Manager Release 3.1.6.0.0 - Production

Copyright (c) 1997, 1999, Oracle Corporation.  All Rights Reserv

Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production

SVRMGR> connect internal
암    호:
접속되었습니다.
SVRMGR> shutdown
ORA-01109: 데이터베이스가 개방되지 않습니다
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SVRMGR> startup mount
ORACLE 인스턴스가 시작되었습니다.
시스템 글로벌 영역                         46298380 바이트 합계
Fixed Size                                          70924 바이트
Variable Size                                    20549632 바이트
Database Buffers                                 25600000 바이트
Redo Buffers                                        77824 바이트
데이터베이스가 마운트되었습니다.
SVRMGR> alter database datafile 'd:dd_temp.dbf' offline drop;
명령문이 처리되었습니다.
SVRMGR> alter database open;
명령문이 처리되었습니다.
SVRMGR> drop tablespace dd_temp including contents;
명령문이 처리되었습니다.
SVRMGR>

모든 것이 정상적(?)으로 되었습니다.

PS>
음.. index tablespace 나 temporary tablespace등과 같이 실제 데이터와는 무관한 테이블스페이스는
위에서 설명한 방식으로 처리한 다음 재생성해주면 좋을 것 같습니다.

Copyleft(C) 명규의 DBAKOREA All rights free

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=747


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저