database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 8769 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 8769
OS 명령으로 DATAFILE을 삭제한 경우:ORA-1157,1110
작성자
정재익(advance)
작성일
2001-12-08 01:08
조회수
5,831

OS 명령으로 DATAFILE을 삭제한 경우:ORA-1157,1110

 

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 내의 정보를 이용하여 모든 데이타 화일을
    오픈한다.

    SQLDBA> CONNECT INTERNAL;
    Connected.
    SQLDBA> 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할 수 없다. 따라서 다음과 같은
    데이타 화일 오픈에 관련된 에러가 발생된다 :
  
    SQLDBA> 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과 관련된 명령은 다음과 같다.
  SQLDBA를 COMMAND LINE MODE로 기동시킨다. 

      $ sqldba lmode=y
        SQLDBA> CONNECT INTERNAL;
        SQLDBA> STARTUP MOUNT;
                ORACLE instance started.
                Database mounted.
        SQLDBA> ALTER DATABASE DATAFILE '/user1/oracle7/dbs/user2.dbf'  
                OFFLINE DROP;
                Statement processed.
        SQLDBA> ALTER DATABASE OPEN;
                Statement processed.
        SQLDBA> DROP TABLESPACE tablespace_name INCLUDING CONTENTS;
                Statement 
              (이와 같이 offline drop된 datafile을 포함하는 tablespace는
              drop하여야 한다.
              이 tablespace에 다른 datafile도 포함되어 있다면
              export를 받아낸 후 tablespace를 drop하고 재생성 후
              import하도록 한다.)

    정상적으로 DATABASE가 오픈된 후 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 

* 위의 글은 Oracle Korea Customer Support Technical Bulletins에서 인용했습니다.
[Top]
No.
제목
작성자
작성일
조회
8772특정 TABLE을 다른 TABLESPACE로 옮기는 방법 [1]
정재익
2001-12-08
5562
8771DB 이름과 오라클 SID 를 변경하는 방법
정재익
2001-12-08
11556
8770OPS 란 - 간략한 개요
정재익
2001-12-08
8487
8769OS 명령으로 DATAFILE을 삭제한 경우:ORA-1157,1110
정재익
2001-12-08
5831
8768오라클 데이터베이스 생성방법
정재익
2001-12-08
14799
8767SQL*Loader 사용법
정재익
2001-12-08
11200
8765OCP 강좌 - Performance and Tuning (1)
정재익
2001-12-07
13174
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다