MGIT
[Oracle] TableSpace의 dbf 파일 삭제 후 생긴 오류 본문
지금은 새벽 2시 14분...
해당 오류때문에 새벽을 지새웠다.
해결법 포스팅을 쓰고 바로 잠에들 예정이다...
오래 삽질한 내용은 꼭 남기고 싶다.. 누군가에겐 당장 필요할 수 있으니..
필자같은 경우는 TableSpace 생성을 위해 oracle 경로에 dbf파일을 생성하여 스페이스를 만든 후
필요없어져서 dbf파일만 삭제하여 발생한 경우였다.
찾아보니 정상적으로 삭제를 한 경우에도 일어날 수 있는 문제인 것 같아 내용을 공유한다.
우선 제일 상용화되있는 방법 (복구)
sql plus를 켠다. (oracle 설치 시 자동으로 설치됨)

사용자명 입력: / as sysdba

SYSDBA 계정으로 로그인 해줘야합니다.
지웠던 dbf를 복구할 수 있는 명령어
recover database;
복구 세션 실행 후
alter database open;
모두 정상 실행 됬다면 shutdown으로 종료 후 startup 명령어로 DB 재실행

그런데 recover 하는데도 계속

ORA-00283: 복구 세션이 오류로 인하여 취소되었습니다
ORA-01110: 13 데이터 파일: 'C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF'
ORA-01157: 데이터 13 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을
보십시오
ORA-01110: 13 데이터 파일: 'C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF'
startup에서도 계속 오류..

SQL> startup
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 1610610712 bytes
Fixed Size 9857048 bytes
Variable Size 989855744 bytes
Database Buffers 603979776 bytes
Redo Buffers 6918144 bytes
데이터베이스가 마운트되었습니다.
ORA-01157: 데이터 13 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을
보십시오
ORA-01110: 13 데이터 파일: 'C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF'
심지어 shutdown 하고 난 뒤 startup 하고 식별이 안된 dbf가 있다보니
IDE에서 Query를 보내는데
[08006][1033] ORA-01033: ORACLE의 초기화 또는 정지 처리가 진행중입니다
이런 문구도 계속 나오고 아예 사용할 수 가 없는 상태를 직면했다...

도대체 나한테 왜 그래...ㅠㅠ
이런 오류가 계속 발생한다면 다음 방법으로 진행해보자.
ORA-01109: 데이터베이스가 개방되지 않습니다 (필자는 반나절을 갈아넣은 후 이 방법으로 해결했다)
select a.name,b.error from v$datafile a, v$recover_file b where a.file#=b.file#;
해당 Query를 날리면 ERROR가 나오는데 거기 아래 오류의 dbf 경로가 나옵니다.
SQL> select a.name,b.error from v$datafile a, v$recover_file b where a.file#=b.file#;
NAME
--------------------------------------------------------------------------------
ERROR
-----------------------------------------------------------------
C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF
FILE NOT FOUND
저 노란부분의 경로를 복사해두시고
alter database datafile 'C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF' offline drop;
해당 쿼리에 오류가 생긴 .dbf의 경로를 넣어주시고 실행하면
" 데이타베이스가 변경되었습니다. " 라는 문구가 나옵니다.
이 상태에서 shutdown 명령어 날려주시고
ORA-01109: 데이터베이스가 개방되지 않습니다
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
문구들이 나오면,
startup 날려주시게되면 DB가 오류없이 정상적으로 마운트 됩니다.

아래 실제 명령한 log 남겨놓겠습니다 ==== 아래 더보기 클릭
SQL> select a.name,b.error from v$datafile a, v$recover_file b where a.file#=b.file#;
NAME
--------------------------------------------------------------------------------
ERROR
-----------------------------------------------------------------
C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF
FILE NOT FOUND
SQL> alter database datafile 'C:\APP\USER\PRODUCT\21C\ORADATA\XE\TEST.DBF' offline drop;
데이타베이스가 변경되었습니다.
SQL> shutdown
ORA-01109: 데이터베이스가 개방되지 않습니다
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> start
SP2-1506: START, @ 또는 @@ 명령에 인수가 없습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 1610610712 bytes
Fixed Size 9857048 bytes
Variable Size 989855744 bytes
Database Buffers 603979776 bytes
Redo Buffers 6918144 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL>

도움되셨길 바랍니다~
'DataBase' 카테고리의 다른 글
| [Oracle] TableSpace 생성하는 방법 (0) | 2024.02.15 |
|---|