INVALID OBJECT 를 위한 스크립트 실행

INVALID OBJECT 를 위한 스크립트 실행


select *
from dba_objects
where STATUS  = 'INVALID';


있는지 확인하고 INVALID 된것이 있으면 모든 INVALID OBJECT 를 recompile 해주는 스크립트를 실행시켜 줍니다.




SQL> @?/rdbms/admin/utlrp.sql

error while loading shared libraries 해결방법

Linux 64bit 5.x 버전에 oracle 10g 설치후

vipca 나 srvctl 실행시

/oracle/base/product/10g/db/jdk/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory


에러 발생


$ vi ORA_CRS_HOME/bin/vipca


# if [ "$arch" = "i686" -o "$arch" = "ia64" -o "$arch" = "x86_64" ]
# then
#   LD_ASSUME_KERNEL=2.4.19
#   export LD_ASSUME_KERNEL
# fi


해당 부분 주석처리



$ vi $ORA_CRS_HOME/bin/srvctl



# LD_ASSUME_KERNEL=2.4.19
# export LD_ASSUME_KERNEL



$ vi /$ORACLE_HOME/bin/srvctl


# LD_ASSUME_KERNEL=2.4.19
# export LD_ASSUME_KERNEL


해당부분 주석처리

ORA-03113: 통신 채널에 EOF가 있습니다.

1. 가장 많은 원인은 서버의 Oracle 쉐도 프로세스가 예기치 않게 종료된 경우 입니다.

따라서 수행중에 갑자기 ORA-3113과 3114가 발생했다면, 우선 서버의 alert.log를 점검하여 다른 Oracle 오류가 발생했는지 알아보십시요.

<< alert.log >> 서버가 UNIX 인경우 $ORACLE_HOME/rdbms/log/alert_.log 화일에 ORA-3113 에러가 발생했던 시점에서 다른 에러가 발생했는지 점검 합니다.

특히 ORA-600[],[]이 발생했으면 에러 내용을 Oracle Technical Support Center로 연락 하십시오.

2. ORA-3113의 원인 중 그 다음으로 많은 것은 SQL*NET 드라이버가 Unix의 ORACLE 실행 파일과 연결되지 않아 발생한 경우입니다.

연결을 공식적으로 수신하고 그것을 ORACLE 쉐도 프로세스에 전달한다 해도, 쉐도 프로세스는 처리방법을 모르기 때문에 어떤 방법으로도 응답하지 못할 수 있습니다.

그러므로 클라이언트는 연결순간에 ORA-3113을 보게 됩니다.

3. 세번째로 많은 원인은 서버쪽의 기계 손상이나 네트워크 고장입니다.

4. 자주 있는 것은 아니지만 같은 네트워크에서 두 서버가 같은 노드 이름을 가질 때에도 이 오류가 발생합니다.

5. ORA-3113은 토큰링 카드의 공유 RAM 크기가 16KB가 아니라 8KB로 설정 되었음을 나타내기도 합니다.

토큰 링을 사용중이라면 공유 버크 크기를 점검하고 키워 보십시요.

6. ORA-3113은 INIT.ORA 매개변수 CONTEXT_AREA와 CONTEXT_INCR이 4096이라는 값으로 설정된 경우에도 발생합니다.

그럴때는 값을 8192로 키우면ORA-3113이 해소됩니다.

이상 말한 모든 원인은 결국 클라이언트가 서버로부터 어떤 정보를 읽으러 갔다가 거기서 더 이상 연결이 없음을 발견했다는 뜻입니다.

ORA-3113은 좀 더 진단해야 추적 가능한 더 큰 문제가 있음을 알리는 신호탄에 불과합니다.

다행히도 앞서 말한 여섯가지 정보를 참고하면 해결책을 찾는 방향은 잡힐 것입니다.


우선 ORA-3113을 디버깅하려면, 루프백을 수행중에 같은 CONNECTING을 여러번 시도해 보는 것이 좋습니다.

즉, 서버의 어떤 툴이든 데스크탑 클라이언트에서 지정하는 것과 같은 연결 스트링을 사용하여 연결할 수 있습니다.

루프백을 수행중에도 똑같은 문제가 발생하면 데스크탑 클라이언트 쪽이 아니라 서버쪽에 문제가 있다고 보아야 합니다.

루프백을 수행하려면 서버에서 SQLPLUS 또는 SQLDBA를 호출하고, 서버의 SQLPLUS 또는 SQLDBA 프롬프트에서 다음과 같이 입력하십시요.

 CONNECT USERNAME/PASSWORD@t:/:

예를 들어, SQL*NET TCP/IP를 통해 Unix 서버에 연결돼 있고 SQL*Plus를 호출하고, 같은 "t::" 연결 스트링을 사용하여, 같은 SELECT 문을 내서 루프백을 해 보십시요.

ORA-00600, ORA-7445

오라클에는 7445, 600 에러에 대한 Trouble shooting 위한 검색 툴을 메타링크를 통해제공하고 있다원인 분석이라기 보다는 입력한 값에 대한 내부 검색을 통해 관련 자료들만 찾아주는 형식이지만 비교적 정확한 검색 값을 출력한다는 점에서 쓸모가 있을  같다. [메타링크 바로가기]

  

Lookup By Code :

- ORA-00600: internal error code, arguments: [17113], [0x000000000]

 메시지 발생한 경우 First Argument  17113 대입

ORA-07445: exception encountered: core dump [kkehbs()+44] [SIGSEGV] [Address not mapped to object]

 메시지 발생한 경우 First Argument  kkehbs 대입

  

Search Call Stack :

- 7445 에러의 경우 아직 지원하지 않으며 Call Stack 내용을 입력하고 검색을 누르면메타링크의 고급검색 기능이 대신 작동한다.

- 600 에러의 경우 Argument/Register Dump 항목 이전까지의 trace파일을 입력하고 검색을 시작.

  

  

 밖에 ORA-00600 에러는 아래 기재된 METALINK 문서를 확인하여 Trouble shooting진행할  있다.

  

ORA-600 Errors 1 to 3000

Note 138300.1 "ORA-600 [105]"

Note 263295.1 "ORA-600 [106]"

Note 28104.1 "ORA-600 [504]"

Note 138871.1 "ORA-600 [510]"

Note 138888.1 "ORA-600 [525]"

Note 138939.1 "ORA-600 [711]"

Note 39308.1 "ORA-600 [723]"

Note 31056.1 "ORA-600 [729]"

Note 131490.1 "ORA-600 [733]"

Note 217860.1 "ORA-600 [1013]"

Note 138123.1 "ORA-600 [1100]"

Note 41767.1 "ORA-600 [1113]"

Note 40514.1 "ORA-600 [1114]"

Note 137262.1 "ORA-600 [1115]"

Note 66387.1 "ORA-600 [1158]"

Note 138354.1 "ORA-600 [1236]"

Note 28045.1 "ORA-600 [2103]"

Note 28929.1 "ORA-600 [2662]"

Note 31057.1 "ORA-600 [2845]"

Note 138733.1 "ORA-600 [2865]"

  

  

ORA-600 Errors 3001 to 6000

Note 30866.1 "ORA-600 [3020]"

Note 93665.1 "ORA-600 [3668]"

Note 47456.1 "ORA-600 [4000]"

Note 96642.1 "ORA-600 [4036]"

Note 43914.1 "ORA-600 [4137]"

Note 28226.1 "ORA-600 [4146]"

Note 39282.1 "ORA-600 [4193]"

Note 39283.1 "ORA-600 [4194]"

Note 138822.1 "ORA-600 [4400]"

Note 29702.1 "ORA-600 [4414]"

Note 138836.1 "ORA-600 [4454]"

Note 39553.1 "ORA-600 [4511]"

Note 73455.1 "ORA-600 [4512]"

Note 27955.1 "ORA-600 [4519]"

Note 204536.1 "ORA-600 [4820]"

Note 41840.1 "ORA-600 [4882]"

  

  

ORA-600 Errors 6001 to 9000

Note 47449.1 "ORA-600 [6002]"

Note 116552.1 "ORA-600 [6034]"

Note 40640.1 "ORA-600 [6101]"

Note 99300.1 "ORA-600 [6122]"

Note 138913.1 "ORA-600 [6193]"

Note 39399.1 "ORA-600 [6731]"

Note 41719.1 "ORA-600 [6856]"

  

  

ORA-600 Errors 9001 to 15000

Note 138325.1 "ORA-600 [12209]"

Note 33174.1 "ORA-600 [12235]"

Note 138332.1 "ORA-600 [12261]"

Note 138340.1 "ORA-600 [12304]"

Note 35928.1 "ORA-600 [12333]"

Note 28229.1 "ORA-600 [12700]"

Note 67496.1 "ORA-600 [13009]"

Note:28185.1 "ORA-600 [13013]"

  

  

ORA-600 Errors 15001 to 17000

Note 138428.1 "ORA-600 [15160]"

Note 138430.1 "ORA-600 [15201]"

Note 138431.1 "ORA-600 [15203]"

Note 131186.1 "ORA-600 [15212]"

Note 137266.1 "ORA-600 [15419]"

Note 216277.1 "ORA-600 [15456]"

Note 138457.1 "ORA-600 [15709]"

Note 67490.1 "ORA-600 [15851]"

Note 76528.1 "ORA-600 [15868]"

Note 138499.1 "ORA-600 [16201]"

Note 106607.1 "ORA-600 [16365]"

Note 138523.1 "ORA-600 [16515]"

Note 138526.1 "ORA-600 [16607]"

  

ORA-600 Errors 17001 to 30000

Note 138537.1 "ORA-600 [17003]"

Note 138541.1 "ORA-600 [17012]"

Note 41472.1 "ORA-600 [17034]"

Note 138554.1 "ORA-600 [17059]"

Note 39616.1 "ORA-600 [17069]"

Note 29616.1 "ORA-600 [17090]"

Note 138565.1 "ORA-600 [17099]"

Note 47411.1 "ORA-600 [17112]"

Note 39453.1 "ORA-600 [17113]"

Note 34782.1 "ORA-600 [17114]"

Note 138576.1 "ORA-600 [17128]"

Note 138580.1 "ORA-600 [17147]"

Note 34781.1 "ORA-600 [17148]"

Note 138586.1 "ORA-600 [17172]"

Note 263110.1 "ORA-600 [17175]"

Note 34779.1 "ORA-600 [17182]"

Note 45725.1 "ORA-600 [17271]"

Note 138597.1 "ORA-600 [17274]"

Note 134139.1 "ORA-600 [17280]"

Note 39361.1 "ORA-600 [17281]"

Note 138602.1 "ORA-600 [17285]"

Note 138621.1 "ORA-600 [17585]"

Note 138640.1 "ORA-600 [18209]"

Note 216278.1 "ORA-600 [18261]"

Note 138678.1 "ORA-600 [20084]"

Note 100073.1 "ORA-600 [25012]"

  

  

ORA-600 Errors kc

Note 138981.1 "ORA-600 [kcbgcur_2]"

Note 70097.1 "ORA-600 [kcbgcur_3]"

Note 114058.1 "ORA-600 [kcbgcur_9]"

Note 138990.1 "ORA-600 [kcbgtcr_4]"

Note 138991.1 "ORA-600 [kcbgtcr_5]"

Note 261264.1 "ORA-600 [kcbgtcr]"

Note 248874.1 "ORA-600 [kcbgtcr_6]"

Note 233612.1 "ORA-600 [kcbgtcr_12]"

Note 204512.1 "ORA-600 [kcbnew_3]"

Note 216104.1 "ORA-600 [kcbrbo1]"

Note 139011.1 "ORA-600 [kcbzpb_1]"

Note 139012.1 "ORA-600 [kcbzpb_2]"

Note 229467.1 "ORA-600 [kcbzwb_4]"

Note 139013.1 "ORA-600 [kccsbck_first]"

Note 216108.1 "ORA-600 [kcllcu_0]"

Note 263225.1 "ORA-600 [kclwcrs_15]"

Note 76434.1 "ORA-600 [kcoapl_blkchk]"

Note 248718.1 "ORA-600 [kcratr1_lostwrt]"

  

  

ORA-600 Errors kd to kw

Note 139037.1 "ORA-600 [kdddgb2]"

Note 139042.1 "ORA-600 [kdisle:nrows]"

Note 139051.1 "ORA-600 [kghalo2]"

Note 139052.1 "ORA-600 [kghasp1]"

Note 139066.1 "ORA-600 [kghxhdr1]"

Note 229809.1 "ORA-600 [kgliep_1]"

Note 66501.1 "ORA-600 [kkrqtab2]"

Note 139095.1 "ORA-600 [kkslgop1]"

Note 139116.1 "ORA-600 [kohdtf048]"

Note 264061.1 "ORA-600 [kqludp2]"

Note 139162.1 "ORA-600 [kssrmp1]"

Note 247822.1 "ORA-600 [ksmals]"

Note 139153.1 "ORA-600 [ksmguard2]"

Note 233864.1 "ORA-600 [kteuproptime-2]"

Note 139180.1 "ORA-600 [ktsgsp5]"

Note 139193.1 "ORA-600 [kttmupd_segment-]"

Note 228480.1 "ORA-600 [kwqitnmptme:read]"

Note 228480.1 "ORA-600 [kwqitnmptme:ready]"

Note 228364.1 "ORA-600 [kwqitnmptme:wait]"

  

  

ORA-600 Errors q to z

Note 248095.1 "ORA-600 [qctcte1]"

Note 216273.1 "ORA-600 [qctstc2o1]"

Note 209363.1 "ORA-600 [qerrmofbu1]"

Note 237598.1 "ORA-600 [qertqtableallocate2]"

Note 226887.1 "ORA-600 [qkagby4]"

Note 222876.1 "ORA-600 [qmxiunppacked2]"

Note 244365.1 "ORA-600 [rworupo.1]"

Note 139263.1 "ORA-600 [srsget_1]"

Note 260951.1 "ORA-600 [ttcgcshnd]"

Note 216452.1 "ORA-600 [ttcgcshnd-1]"

Note 216453.1 "ORA-600 [ttcgcshnd-2]"

ORA-00604 ORA-20101 클라이언트로 접속시 나는 에러

클라이언트 프로그램으로 DB 접속시에 이런 에러가 나는 경우가 있습니다.


ORA-00604: error occurred at recursive SQL level 1
ORA-20101: You are not allowed to login to the <오라클계정> user!!
ORA-06512: at line 12 (<-strings)


이것 때문에 완전 애먹었는데요.


sqlnet.ora 에서 ip단위가 아닌, DB에서 유저 단위로 접속 제한을 걸어놓으면 이런 현상이 생깁니다.

유저 제한 트리거만 만들어놓고 allow_ip 테이블을 생성해두지 않아 허용 ip의 정보는 없는 상태라면 이런 현상이 발생합니다.



<DB에서 유저 단위로 접속 제한>


sys계정에서 작업 해줘야 합니다.


1. ip-address 를 저장할 Table생성


SQL> create table allow_ip ( ip_address varchar2(15), real_user varchar2(30) )


2. Scott user에 login 할 때 client 의 ip-address를 check하는 trigger 생성

SQL> create or replace trigger check_log_오라클계정 after logon on 오라클계정.schema declare flag number; begin if ora_client_ip_address is not null then select 1 into flag from allow_ip where ip_address = ora_client_ip_address;

if flag = 1 then null;

end if;

end if;

exception when no_data_found then raise_application_error (-20101, 'You are not allowed to login to the 오라클계정 user!!');

end;
/


3. 실행한 후에 table에 저장되지 않은 ip-address 를 가진 client 에서 접속하면 다음과 같이 에러가 발생하면서 접속이 실패합니다.

SQL> connect 오라클계정/비번@oracledb


ERROR: ORA-00604: error occurred at recursive SQL level 1

ORA-20101: You are not allowed to login to the Scott user!!

ORA-06512: at line 12


server 에서 터미널로 접속하는 경우에는 ora_client_ip_address 의 값이 null 이 되므로 이 경우에는 무조건 접속됩니다.



접속 제한 트리거의 조회


SELECT * FROM all_source WHERE text LIKE '%ora_client%';


로 검색을 하면 접속 제한이 걸려있는 계정을 알수 있습니다.



트리거 내용 조회


SELECT line, text FROM all_source WHERE name = '트리거이름' order by line;


1 trigger check_log_오라클계정
2 after logon on seromedu.schema
3 declare
4 flag number;
5 begin
6 if ora_client_ip_address is not null then
7 select 1 into flag from allow_ip where ip_address = ora_client_ip_address;
8 if flag = 1 then
9 null;
10 end if;
11 end if;
12 exception
13 when no_data_found then
14 raise_application_error (-20101, 'You are not allowed to login to the 오라클계정 user!!');
15 end;



트리거에 대한 자세한 정보 보기


SQL> SELECT * FROM ALL_TRIGGERS where TRIGGER_NAME='CHECK_LOG_오라클계정';


조회를 하면 권한, 소유자, 소유된 테이블, 트리거의 이름이나 트리거의 대한 모든 정보를 알수 있습니다.

특정 컬럼 값만 선택해서 셀렉트를 날려주면, 원하는 값만 조회가 가능하죠.

status에 ENABLED 되어 있으면 비활성화 해줍니다.


SQL> select distinct a.name, b.status from all_source a, ALL_TRIGGERS b where a.text like '%ora_client_ip_address%' and a.NAME=b.TRIGGER_NAME;



유저 접속 제한 풀기


SQL> alter trigger system.CHECK_LOG_오라클계disable;


스키마 자체는 system이 소유하고 있습니다.

이렇게 해주면 allow_ip가 없어 접속 제한이 걸린 계정으로 접속할수가 있습니다.

Archive hang 해결 방법

** Archive Hang : Archive파일이 저장되는 디렉토리에 여유공간이 없거나, 권한문제로 쓸 수 없는 경우에 발생하며,
                             redo log를 덮어 쓸 수 없으므로, DB가 멈춰버리는 현상
해결방법 순서
1. 여유공간을 만들어주거나, 권한문제 해결
2. 파라미터 변경 후 Archiver restart(DB는 끄지마세요)
alter system set log_archive_dest_state_1=defer;
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=defer;
alter system set log_archive_dest_state_2=enable;
(저장공간으로 지정한 디렉토리 전부 defer로 설정했다가, enable로 설정해야합니다. 여기서는 2군데(arc 다중화개념) )
alter system archive log stop;
alter system archive log start;
alter system switch logfile;

ORA-00704, ORA-39700

ORA-00704: bootstrap process failure

ORA-39700: database must be opened with UPGRADE option


오라클의 데이터 파일과 엔진의 버전이 맞지 않기 때문에 생기는 오류.


SQL> startup upgrade;


모드를 이용해서 접속 후 


SQL> @ $ORACLE_HOME/rdbms/admin/catupgrd.sql;

SQL> @ $ORACLE_HOME/rdbms/admin/catproc.sql;


실행시킨후 DB 재구동을 해주면 된다.

ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []

실제 호스트 명과 /etc/hosts 안의 호스트 명이 다를때 발생


/etc/hosts 안데


127.0.0.1     (호스트명)    localhost.localdomain localhost


저 사이에 호스트명을 넣어줍니다.