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 Q&A 40126 게시물 읽기
No. 40126
ORA-08102 어떤 테이블이던 오브젝트id= 39 로 오류 납니다.
작성자
최명환(sccmh)
작성일
2013-05-08 19:16ⓒ
2013-05-08 19:49ⓜ
조회수
10,887


정전으로 startup 시 아래 오류

ORA-00607:
ORA-00600: [4193], [19834], [19915], [], [], [], [], []


작업 내역은 undo 테이블 스페이스 변경 및 pfile undo_management = AUTO 추가 했습니다.

drop,select,update,delete 는 정상...이고 create, tuncate 하면

ORA-00604: 순환 SQL 레벨 1 에 오류가 발생했습니다
ORA-08102: 인덱스 키를 찾을 수 없음. obj# 39, 1 파일, 116791 블록(2)

위 오류가 발생합니다.

어떤 테이블, 어떤 계정으로 하던  ORA-08102(obj# 39) 오류라서 39가 먼지 확인해 봤는데

sys계정에 index... I_OBJ4 이고 LAST_DDL_TIME 이  2007-10-14:15:03:41  인데 먼가 이상한거 같네요.

SQL> SELECT owner, object_name, object_type, object_id FROM all_objects where object_id = 39;
 
OWNER    OBJECT_NAME    OBJECT_TYPE    OBJECT_ID
SYS          I_OBJ4                   INDEX                   39   


SQL> select * from all_objects where DATA_OBJECT_ID = 39;

OWNER    OBJECT_NAME    SUBOBJECT_NAME    OBJECT_ID    DATA_OBJECT_ID    OBJECT_TYPE    CREATED    LAST_DDL_TIME    TIMESTAMP    STATUS    TEMPORARY    GENERATED    SECONDARY    NAMESPACE    EDITION_NAME
SYS    I_OBJ4        39    39    INDEX    2007-10-14 오후 3:03:41    2007-10-14 오후 3:03:41    2007-10-14:15:03:41    VALID    N    N    N    4       

위처럼 나오더라구요..

SYS.I_OBJ4 라는데 .... REBILD 도 안 되더라구요..;;;

방법 좀 알려주세요.

pfile에 undo_management,undo_tablespace 항목이 없는걸 추가했는데 해당 정보가 다른 곳이 있는건지도 의심스럽구요.

해당 pfile 변경하면 변경 내역이 적용은 됩니다.

 


-------------------------------------------------------------------------------------------
아래는 작업 내용이구요.
-------------------------------------------------------------------------------------------
/data1/oracle/app/11g/dbs]$ vi initGDSDB73.ora

변경 내역(기존 undo_management, undo_tablespace 셋팅이 없었는데 추가함)

undo_management = AUTO
undo_tablespace = UNDOTBS1

SQL> select  SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME         TABLESPACE_NAME        STATUS
------------------------------ ------------------------------ ----------------
SYSTEM          SYSTEM         ONLINE
_SYSSMU10_1367996827$        UNDOTBS1         ONLINE
_SYSSMU9_1367996827$        UNDOTBS1         ONLINE
_SYSSMU8_1367996827$        UNDOTBS1         ONLINE
_SYSSMU7_1367996827$        UNDOTBS1         ONLINE
_SYSSMU6_1367996827$        UNDOTBS1         ONLINE
_SYSSMU5_1367996827$        UNDOTBS1         ONLINE
_SYSSMU4_1367996827$        UNDOTBS1         ONLINE
_SYSSMU3_1367996827$        UNDOTBS1         ONLINE
_SYSSMU2_1367996827$        UNDOTBS1         ONLINE
_SYSSMU1_1367996827$        UNDOTBS1         ONLINE

11 개의 행이 선택되었습니다.

위 undo 테이블 스페이스 변경 후 정상 기동됨
근데 아래 처럼 drop,update을 제외한 변경 사항시 오류


create, tuncate 시 같은 오류 ORA-08102(obj# 39)
drop 시 정상
update 시  ORA-01552

create table aaaaa as  select * from ref.src_b_ri
SQL> show parameter undo;

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
undo_management        string  AUTO
undo_retention               integer  900
undo_tablespace           string  UNDOTBS1
1행에 오류:
ORA-00604: 순환 SQL 레벨 1 에 오류가 발생했습니다
ORA-08102: 인덱스 키를 찾을 수 없음. obj# 39, 1 파일, 116791 블록(2)

object_id가 39번에 해당하는 값 확인해 봤습니다.
아래 처럼 sys.I_OBJ4 로 나오네요.

SQL> SELECT owner, object_name, object_type, object_id FROM all_objects where object_id = 39;
 
OWNER    OBJECT_NAME    OBJECT_TYPE    OBJECT_ID
SYS          I_OBJ4                   INDEX                   39   

이 글에 대한 댓글이 총 1건 있습니다.

일주일이 넘어서 처리는 어찌되셨는지 궁금하네요.

에러는 undo 블럭문제인데 글 내용으로 봐서는 index가 깨진거 같기도 하고요.

I_OBJ4인덱스가 sys유저 소유고 OBJ$의 인덱스라 다시 만들수 있는지도 의문이구요.

(I_OBJ4인덱스는 11g에서만 확인되네요. 이하버전은 없구요..  )

 

MOS문서 ID 1428786.1에는 UNDO Tablespace를 다시 생성하라고 되어 있긴 합니다.

잘 해결되셨길..

 

 

 
1. Shutdown the instance
 
2. set the following parameters in the pfile
    undo_management = manual
    event = '10513 trace name context forever, level 2'
 
3. >startup restrict pfile=<initsid.ora>
 
4. >select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
 
If any are 'PARTLY AVAILABLE' or 'NEEDS RECOVERY' - Please open an issue with Oracle Support or update the current SR.  There are many options from this moment and Oracle Support Analyst can offer different solutions for the bad undo segments.
 
If all offline then continue to the next step
 
5. Create new undo tablespace 
 
6. Drop old undo tablespace
 
7. >shutdown immediate;
 
8. modify the pfile with the new undo tablespace name
 
9. startup
 
================
The reason we create a new undo tablespace first is to use new undo segment numbers that are higher then the current segments being used.  This way when a transaction goes to do block clean-out the reference to that undo segment does not exist and continues with the block clean-out.

 

,님이 2013-05-16 13:58에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40130connect by 로 구현한 결과 하위정보 sum 하기 [2]
무는무다
2013-05-15
6790
40129테이블 키값 만들기 [1]
아폴론
2013-05-14
6137
40128뷰테이블 인서트 문의드립니다. [1]
이훈
2013-05-13
6130
40126ORA-08102 어떤 테이블이던 오브젝트id= 39 로 오류 납니다. [1]
최명환
2013-05-08
10887
40125쿼리문의드립니다. [1]
헬프
2013-05-07
6221
40124중복 제거 질문드립니다. [2]
이용헌
2013-05-03
6918
40123Procedure명 알기 [1]
나재호
2013-05-02
6954
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다