2012. 7. 11. 17:37
No. 10088
OS 명령으로 DATAFILE을 삭제한 경우 : ORA-1157, ORA-1110
======================================================
[주의] 다음의 경우는 system tablespace에 대해서 적용되지 않는다.
DATABASE RECOVERY에 앞서 ORACLE INSTANCE(즉, ORACLE RDBMS)의 STARTUP
단계를 우선 살펴보기로 하자.
첫번째 단계로 INSTANCE를 START시키며, 여기서는 initORACLE_SID.ora
화일의 파라미터를 참조하여 SGA(SYSTEM GLOBAL AREA)를 할당하고
백그라운드 프로세스를 START 시킨다.
두번째 단계로 DATABASE의 MOUNT이며 파라미터 화일에 명시된 CONTROL
FILE을 오픈한다. CONTROL FILE로부터 DATABASE NAME과 REDO LOG FILE의
이름을 읽는다.
세번째 단계로 CONTROL FILE 내의 정보를 이용하여 모든 데이타 화일을
오픈한다.
SVRMGR> CONNECT INTERNAL;
Connected.
SVRMGR> STARTUP;
ORACLE instance started.
Database mounted.
Database opened.
Total System Global Area 1913196 bytes
Fixed Size 27764 bytes
Variable Size 1787128 bytes
Database Buffers 65536 bytes
Redo Buffers 32768 bytes
RDBMS의 STARTUP 시 문제의 데이타 화일이 CONTROL FILE 정보에서는 존재하지만,
실제로 O/S 상에서는 존재하지 않으므로 DATABASE OPEN 단계에서 삭제된 데이타
화일을 OPEN할 수 없다. 따라서 다음과 같은 데이타 화일 오픈에 관련된 에러가
발생된다 :
SVRMGR> STARTUP;
ORACLE instance started
Database mounted
ORA-01157 : cannot identify data file 11 - file not found
ORA-01110 : data file 11 : '/user1/oracle7/dbs/user2.dbf'
Attempting to dismount database .... Database dismounted
Attempting to shutdown instance .... ORACLE instance shut down
DATABASE OPEN 단계에서 CONTROL FILE에서는 ORA-1157 에러에서 나타난
11번 데이타 화일이 존재하는 것으로 인식하지만, 실제로 O/S 상의 데이타
화일 (ORA-1110 에러에 명시된 '/user1/oracle7/dbs/user2.dbf' 화일)이
삭제된 상태이다.
이러한 경우에는 DATABASE STARTUP 시 STARTUP MOUNT 단계까지 실행한 후,
문제의 데이타 화일을 OFFLINE시킨 다음 데이타베이스를 오픈한다.
단, 데이타베이스 오픈이 정상적으로 수행되면 문제가 발생한 데이타 화일을
포함하고 있는 TABLESPACE를 DROP하지 않을 경우에는 DATABASE STARTUP 시
항상 데이타 화일의 오픈 단계에서 에러가 발생된다.
따라서, 문제의 데이타 화일의 OFFLINE과 TABLESPACE의 DROP 전에 반드시 해당
TABLESPACE를 사용하고 있는 USER의 데이타 백업을 수행해야 한다.
데이타 화일의 OFFLINE과 관련된 명령은 다음과 같다.
먼저 SVRMGR을 Line Mode로 기동시킨다.
$ svrmgrl
SVRMGR> CONNECT INTERNAL;
SVRMGR> STARTUP MOUNT;
ORACLE instance started.
Database mounted.
SVRMGR> ALTER DATABASE DATAFILE '/user1/oracle7/dbs/user2.dbf'
OFFLINE DROP;
Statement processed.
SVRMGR> ALTER DATABASE OPEN;
Statement processed.
SVRMGR> DROP TABLESPACE tablespace_name INCLUDING CONTENTS;
Statement processed.
(이와 같이 offline drop된 datafile을 포함하는 tablespace는 drop하여야 한다.
이 tablespace에 다른 datafile도 포함되어 있다면 export를 받아낸 후
tablespace를 drop하고 재생성 후 import하도록 한다.)
정상적으로 DATABASE가 Open된 후 CONTROL FILE로부터의 데이타베이스
정보를 갖는 DATA DICTIONARY TABLE인 V$DATAFILE(SYS USER에서 액세스
가능)의 내용과 데이타베이스 화일에 관한 정보를 가지고 있는 DATA
DICTIONARY VIEW인 DBA_DATA_FILES(SYSTEM USER)을 조회하면 아래와 같은
내용을 확인할 수 있다 :
(1) SQL> SELECT * FROM V$DATAFILE ;
FILE# STATUS NAME
----- -------- -------------------------------------------
9 ONLINE /user1/oracle7/dbs/tools.dbf
10 ONLINE /user1/oracle7/dbs/user1.dbf
11 RECOVER /user1/oracle7/dbs/user2.dbf
(2) SQL> SELECT * FROM DBA_DATA_FILES ;
FILE_NAME FILE_ID TABLESPACE_NAME STATUS
-----------------------------------------------------------------
/user1/oracle7/dbs/tools.dbf 9 TOOLS AVAILABLE
/user1/oracle7/dbs/user1.dbf 10 TEST AVAILABLE
/user1/oracle7/dbs/user2.dbf 11 TEST AVAILABLE
OS 명령으로 DATAFILE을 삭제한 경우 : ORA-1157, ORA-1110
======================================================
[주의] 다음의 경우는 system tablespace에 대해서 적용되지 않는다.
DATABASE RECOVERY에 앞서 ORACLE INSTANCE(즉, ORACLE RDBMS)의 STARTUP
단계를 우선 살펴보기로 하자.
첫번째 단계로 INSTANCE를 START시키며, 여기서는 initORACLE_SID.ora
화일의 파라미터를 참조하여 SGA(SYSTEM GLOBAL AREA)를 할당하고
백그라운드 프로세스를 START 시킨다.
두번째 단계로 DATABASE의 MOUNT이며 파라미터 화일에 명시된 CONTROL
FILE을 오픈한다. CONTROL FILE로부터 DATABASE NAME과 REDO LOG FILE의
이름을 읽는다.
세번째 단계로 CONTROL FILE 내의 정보를 이용하여 모든 데이타 화일을
오픈한다.
SVRMGR> CONNECT INTERNAL;
Connected.
SVRMGR> STARTUP;
ORACLE instance started.
Database mounted.
Database opened.
Total System Global Area 1913196 bytes
Fixed Size 27764 bytes
Variable Size 1787128 bytes
Database Buffers 65536 bytes
Redo Buffers 32768 bytes
RDBMS의 STARTUP 시 문제의 데이타 화일이 CONTROL FILE 정보에서는 존재하지만,
실제로 O/S 상에서는 존재하지 않으므로 DATABASE OPEN 단계에서 삭제된 데이타
화일을 OPEN할 수 없다. 따라서 다음과 같은 데이타 화일 오픈에 관련된 에러가
발생된다 :
SVRMGR> STARTUP;
ORACLE instance started
Database mounted
ORA-01157 : cannot identify data file 11 - file not found
ORA-01110 : data file 11 : '/user1/oracle7/dbs/user2.dbf'
Attempting to dismount database .... Database dismounted
Attempting to shutdown instance .... ORACLE instance shut down
DATABASE OPEN 단계에서 CONTROL FILE에서는 ORA-1157 에러에서 나타난
11번 데이타 화일이 존재하는 것으로 인식하지만, 실제로 O/S 상의 데이타
화일 (ORA-1110 에러에 명시된 '/user1/oracle7/dbs/user2.dbf' 화일)이
삭제된 상태이다.
이러한 경우에는 DATABASE STARTUP 시 STARTUP MOUNT 단계까지 실행한 후,
문제의 데이타 화일을 OFFLINE시킨 다음 데이타베이스를 오픈한다.
단, 데이타베이스 오픈이 정상적으로 수행되면 문제가 발생한 데이타 화일을
포함하고 있는 TABLESPACE를 DROP하지 않을 경우에는 DATABASE STARTUP 시
항상 데이타 화일의 오픈 단계에서 에러가 발생된다.
따라서, 문제의 데이타 화일의 OFFLINE과 TABLESPACE의 DROP 전에 반드시 해당
TABLESPACE를 사용하고 있는 USER의 데이타 백업을 수행해야 한다.
데이타 화일의 OFFLINE과 관련된 명령은 다음과 같다.
먼저 SVRMGR을 Line Mode로 기동시킨다.
$ svrmgrl
SVRMGR> CONNECT INTERNAL;
SVRMGR> STARTUP MOUNT;
ORACLE instance started.
Database mounted.
SVRMGR> ALTER DATABASE DATAFILE '/user1/oracle7/dbs/user2.dbf'
OFFLINE DROP;
Statement processed.
SVRMGR> ALTER DATABASE OPEN;
Statement processed.
SVRMGR> DROP TABLESPACE tablespace_name INCLUDING CONTENTS;
Statement processed.
(이와 같이 offline drop된 datafile을 포함하는 tablespace는 drop하여야 한다.
이 tablespace에 다른 datafile도 포함되어 있다면 export를 받아낸 후
tablespace를 drop하고 재생성 후 import하도록 한다.)
정상적으로 DATABASE가 Open된 후 CONTROL FILE로부터의 데이타베이스
정보를 갖는 DATA DICTIONARY TABLE인 V$DATAFILE(SYS USER에서 액세스
가능)의 내용과 데이타베이스 화일에 관한 정보를 가지고 있는 DATA
DICTIONARY VIEW인 DBA_DATA_FILES(SYSTEM USER)을 조회하면 아래와 같은
내용을 확인할 수 있다 :
(1) SQL> SELECT * FROM V$DATAFILE ;
FILE# STATUS NAME
----- -------- -------------------------------------------
9 ONLINE /user1/oracle7/dbs/tools.dbf
10 ONLINE /user1/oracle7/dbs/user1.dbf
11 RECOVER /user1/oracle7/dbs/user2.dbf
(2) SQL> SELECT * FROM DBA_DATA_FILES ;
FILE_NAME FILE_ID TABLESPACE_NAME STATUS
-----------------------------------------------------------------
/user1/oracle7/dbs/tools.dbf 9 TOOLS AVAILABLE
/user1/oracle7/dbs/user1.dbf 10 TEST AVAILABLE
/user1/oracle7/dbs/user2.dbf 11 TEST AVAILABLE
'DATABASE > ORACLE' 카테고리의 다른 글
CONTROL FILE 재생성하는 방법 (0) | 2012.07.11 |
---|---|
CONTROL FILE 에 존재하는 RECOVERY 관련 정보 (0) | 2012.07.11 |
BACKUP AND RECOVERY USING RMAN (0) | 2012.07.11 |
RMAN: HOW TO USE ORACLE 9I CATALOG WITH ORACLE 8I DATABASE (0) | 2012.07.11 |
ORACLE8 (RECOVERY MANAGER) 기본적인 사용법 (0) | 2012.07.11 |