오랜만에 Linux 환경 실제 사이트에 RAC 설치를 진행했는데

 

grid 설치 도중 문제가 발생해 원인을 잡는다고 2시간 반을 소모했다.

 

grid 과정 중 노드 add하고 ssh 설정과 test 할 수 있는 단계의 다음 단계가 진행이 안된다.

 

확인해보니 exectask를 remote node에서 retrieve할 수 없다고 한다.

(version of exectask could not be retrieved from node node02)

 

runcluvfy도 시도해보았지만 3번째 확인 과정에서 역시 hang되어버렸다.

 

한참 있다가 ctrl+c로 취소하면 비슷한 에러메시지가 나타난다.

 

음.. 왜그럴까 처음엔 OS 보안 설정을 의심했었다.

 

그런데 좀 자세히 조사해보니 node1의  /tmp/CVU_11.2.0.4.0_grid 밑에 약 30개의 sh 파일이 있고 그 중에 exectask.sh가 있다.

하지만 node2는 디렉토리는 있는데 스크립트가 하나밖에 없는 상태였다.

 

1. 음 혹시? 하고 scp로 /tmp/CVU_11.2.0.4.0_grid 아래의 모든 파일을 node2의 같은 위치로 넘겨보았다.(public hostname으로)

파일이 하나 전송되다가 더 진행이 되지 않네?

 

2. reboot을 해보았다. 동일 증상이다.

 

원래대로라면 설치했던 OS 엔지니어에게 확인해달라고 하겠지만, OS 설치 엔지니어는 새벽까지 설치해서 연락하기 힘든 상황이다. 원인을 찾기 위해 계속 다른 시도를 해보았다.

 

3. node2에서 node1로 파일을 아무거나 넘겨보았다. 안된다.

 

4. 여태 grid 유저로 시도했었는데, root도 안되나? 안된다

 

5. root 유저와 grid 유저의 ~/.ssh 아래 내용을 전부 삭제하고 시도. 안된다..

 

6. private 링크(인터커넥트)를 통해서는 될까? 된!다!된!다!!

 

그럼 설마?? 서버 설치 요구사항에 Jumboframe을 위해 MTU 9000 설정해달라고 했는데, 인터커넥트는 9000이 맞는데 왠걸 ifconfig -a로 확인해보니 양쪽 노드 모두 public 링크까지 MTU를 9000 설정되어있는걸 확인했다.

 

public 인터페이스의 MTU size를 1500으로 변경하고 scp 전송 정상 확인하고 grid 막혔던 부분도 진행되어 무사히 설치 완료.

 

중간중간 메타링크와 구글을 확인해보았지만 이 문제는 둘 다 도움을 줄 수 없었다.

 

나름 재미있었던 케이스였다.

'TroubleShoot' 카테고리의 다른 글

SQL*Net break/reset to client  (0) 2017.02.02
flashback on 시도시 ora-38788 에러  (0) 2016.02.23
cacti troubleshoot  (0) 2015.03.02
yum update시 package duplicate error 해결  (0) 2015.01.30
MAX_DUMP_FILE_SIZE 변경 적용 이상 해결  (0) 2014.05.12
Posted by neo-orcl
,

srvctl start instance -d db -i instance
명령으로 인스턴스를 시작하려 할 때
아래처럼 에러가 나오는 경우가 있다.

 

PRKP-1001 : Error starting instance rac2 on node rac2
CRS-0215: Could not start resource 'ora.rac.rac1.inst'.

 

이 경우 db의 얼럿로그를 보거나 ocssd나 crsd나 crs의 얼럿로그를 봐야 한다.
그런데 이렇게 시작하려고 하면 db의 얼럿로그에 딱히 남는 로그가 없다.

 

제일 문제는 인스턴트가 왜 시작이 안되냐 이지만 왜 안되는지에 대한 정보를 로그에 남지 않을 경우가 있다.

 

이 때 먼저

which srvctl 명령으로 srvctl 이 어디서 실행되는 것인지 확인하고
vi로 OHOME과 CHOME이 제대로 설정되어있는지 확인한다.

 

또한 $ORACLE_HOME/bin/racgwrap 파일도 확인해 ORACLE_HOME과 CRS_HOME이 제대로 설정되어있는지 확인한다.

그리고 마지막으로

 

sqlplus / as sysdba 등의 방식으로 db에 접근해 직접 인스턴스를 시작시켜본다.

참고로 필자는 sqlplus로 인스턴스 시작시켜보니 log_archive_dest_2 가 NFS로 잡혀있는데 이것이 마운트되어있지 않아
시작을 못하고 있었다.

Posted by neo-orcl
,

윈도우에서 별다른 이벤트 로그가 안남을 수 있다.

Mon Apr 08 06:48:35 2013
Errors in file .\orcl_arc1_1340.trc:
ORA-00202: control file: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL'
ORA-27091: unable to queue I/O
ORA-27070: async read/write failed
OSD-04006: ReadFile() 실패, 파일에서 읽을 수 없음
O/S-Error: (OS 1450) 시스템 리소스가 부족하기 때문에 요청한 서비스를 완성할 수 없습니다.

-반복하다가 아래 나오며 종료됨-

Mon Apr 08 06:48:36 2013
Master background archival failure: 204

OS 로그 이상 없음
##########################################################################################
OS: Windows2003
oracle: 10.2.0.3 s/e

원인: 순간적인디스크 파일 접근 불가
해결: 리부팅후 정상복구됨. 추후 발생시 대비 서버의 array controller? disk controller 펌웨어 업그레이드

Posted by neo-orcl
,

테스트환경에서 우연찮게 발견한 현상이다.

OS: centos 5.6
oracle ver: 10.2.0.5

창을 두개 뜨우고 하나는 rman target / 로 접속했다.
다른 하나는 sqlplus 에서 shutdown immediate 를 실행했다.
아무리 시간이 지나도 shutdown이 되지 않는다.
얼럿로그에 다음과 같은 내용이 있다.

Shutting down instance (immediate)
Fri Mar 15 16:02:59 KST 2013
Shutting down instance: further logons disabled
Fri Mar 15 16:02:59 KST 2013
Stopping background process QMNC
Fri Mar 15 16:02:59 KST 2013
Stopping background process CJQ0
Fri Mar 15 16:03:01 KST 2013
Stopping background process MMNL
Fri Mar 15 16:03:02 KST 2013
Stopping background process MMON
License high water mark = 4
Fri Mar 15 16:03:03 KST 2013
Process OS id : 28767 alive after kill
Errors in file /oracle/admin/testdb/udump/testdb_ora_28754.trc
Fri Mar 15 16:03:06 KST 2013
Waiting for Job queue slaves to complete
Fri Mar 15 16:03:06 KST 2013
Job queue slave processes stopped
All dispatchers and shared servers shutdown

28767 OS process ID로 검색해보았다.
[oracle@centos5 testdb]$ ps -ef | grep 28767
oracle   28844 27374  0 16:04 pts/3    00:00:00 grep 28767
안나온다. rman target / 로 접속한걸 확인해봤다.
[oracle@centos5 testdb]$ ps -ef | grep rman
oracle   28789 27154  0 16:02 pts/2    00:00:00 rman target /
oracle   28861 27374  0 16:05 pts/3    00:00:00 grep rman

나온다. 하지만 PID가 틀리다.
트레이스파일 확인해보니
*** 2013-03-15 16:08:54.984
Process diagnostic dump for oracle@centos5.6x64 (TNS V1-V3), OS id=28796,
pid: 23, proc_ser: 2, sid: 144, sess_ser: 14
-------------------------------------------------------------------------------
loadavg : 0.98 0.76 0.40
Memory (Avail / Total) = 89.61M / 1504.47M
Swap (Avail / Total) = 2306.11M /  2306.20M
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z oracle   28796 28789  0  78   0 -     0 exit   16:02 ?        00:00:00 [oracle] <defunct>
 
계속 이 프로세스를 죽이려고 시도하고 있다.

해결방법: 결국 아래 두개 모두 같은 결과긴 하다.
1. rman 세션을 exit로 정상 종료한다.
2. ppid인 28789를 죽인다.

Posted by neo-orcl
,

ORA-01545: rollback segment 'string' specified not available

01545, 00000, "rollback segment '%s' specified not available"
// *Cause: Either:
//         1) An attempt was made to bring a rollback segment online that is
//            unavailable during startup; for example, the rollback segment
//            is in an offline tablespace.
//         2) An attempt was made to bring a rollback segment online that is
//            already online.  This is because the rollback segment is
//            specified twice in the ROLLBACK_SEGMENTS parameter in the
//            initialization parameter file or the rollback segment is already
//            online by another instance.
//         3) An attempt was made to drop a rollback segment that is
//            currently online.
//         4) An attempt was made to alter a rollback segment that is
//            currently online to use unlimited extents.
//         5) An attempt was made to online a rollback segment that is
//            corrupted. This is because the rollback is specified in
//            _corrupted_rollback_segments parameter in initialization
//            parameter file.
// *Action: Either:
//         1) Make the rollback segment available; for example, bring an
//            offline tablespace online.
//         2) Remove the name from the ROLLBACK_SEGMENTS parameter if the name
//            is a duplicate or if another instance has already acquired the
//            rollback segment.
//         3) Bring the rollback segment offline first. This may involve
//            waiting for the active transactions to finish, or, if the
//            rollback segment needs recovery, discover which errors are
//            holding up the rolling back of the transactions and take
//            appropriate actions.
//         4) Same as 3).
//         5) Remove the name from the _corrupted_rollback_segments parameter.

발생 OS: SunOS 5.7
Oracle db version: 8.2.7.4

1. 복구 후 DB startup 시 에러 나타남

SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
SQL> startup
ORACLE instance started.

Total System Global Area  919359164 bytes
Fixed Size                   102076 bytes
Variable Size             487653376 bytes
Database Buffers          429490176 bytes
Redo Buffers                2113536 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced

얼럿로그: ORA-01545: rollback segment 'RBS1' specified not available

2. init파일에서 rollback_segments 주석처리 후 open

SQL> startup
ORACLE instance started.

Total System Global Area  919359164 bytes
Fixed Size                   102076 bytes
Variable Size             487653376 bytes
Database Buffers          429490176 bytes
Redo Buffers                2113536 bytes
Database mounted.
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 3 cannot be read at this time
ORA-01110: data file 3: '/oradata/rbs01.dbf'

3. v$recover_file 확인해서 파일별 복구 수행후 online

SQL> select * from v$recover_file;
SQL> recover datafile 8;
ORA-00279: change 377347436 generated at 03/06/2013 22:10:36 needed for thread 1
ORA-00289: suggestion : /oradata/archive/arch_1_37864.arc
ORA-00280: change 377347436 for thread 1 is in sequence #37864
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

SQL> alter database datafile 8 online;
Database altered.

4. rbs파일인 (여기선 3번) 3번파일 offline + recover + online 수행

SQL> alter database datafile 3 offline;
Database altered.

SQL> recover datafile 3;      
Media recovery complete.

SQL> alter database datafile 3 online;
Database altered.

5. db shutdown 후 init파일 rollback_segments 주석처리 제거하여 startup 후 정상 확인

※해당 상황은 필요 아카이브 로그가 전부 있는 상황이다.

Posted by neo-orcl
,

error in invoking target 'agent agent oratclsh nmo nmb' of makefile '/oracle/product/102/db/sysmanlib/ins_sysman.mk'

이런 에러가 나타날 수 있는데 해당 에러는 EM을 사용하지 않는다면 무시해도 된다.
만약 이 에러를 해결하려고 한다면 IBM 엔지니어에게 요청해 아래 FIX를 적용해달라고 해야 한다.

For AIX 6.1 TL6 SP1, IBM have released fix IZ88711:

IZ89304 for AIX 6.1 TL3
IZ89302 for AIX 6.1 TL4
IZ89300 for AIX 6.1 TL5
IZ88711 or IZ89514 for AIX 6.1 TL6 - check with IBM
IZ89165 for AIX 7.1 TL0 SP2

If these errors occur on AIX 6.1 TL4 SP6/SP7, you may alternatively be hitting the AIX defect below:

IZ44217 CRASH CAUSED BY STALE FILE DESCRIPTOR IN FORKED CHILD

이후 링크를 다시 한다.

% make -f $ORACLE_HOME/sysman/lib/ins_emagent.mk relink_sharedobj SHAREDOBJ=libnmemso

Posted by neo-orcl
,

11.2.0.1 shutdown hang

TroubleShoot 2012. 12. 21. 15:16

10.2.0.1에서만 자주 나던 셧다운 행이라고 생각했는데 11.2.0.1 버젼에서 나타나서 잠깐 당황했던 기억이 있다.
그것도 자주 행났던 윈도우 환경이 아닌 리눅스 환경에서.. Centos 5대였던거 같다.

다른 세션을 열어서 트레이스 파일을 보니 어느 특정 프로세스를 계속 죽이려고 하는데 실패하고 있었다.
ksukia: Attempt 9 to re-kill process OS PID=19145.
ksukia: killed 1 out of 1 processes.

*** 2012-12-28 15:48:24.552
ksukia: Starting kill, flags = 1
ksukia: killed 0 out of 1 processes.

*** 2012-12-28 15:48:25.553
ksukia: Starting kill, flags = 1
ksukia: killed 0 out of 1 processes.

*** 2012-12-28 15:48:26.554
ksukia: Starting kill, flags = 1
ksukia: killed 0 out of 1 processes.

*** 2012-12-28 15:48:27.555
ksukia: Starting kill, flags = 1
ksukia: killed 0 out of 1 processes.

*** 2012-12-28 15:48:28.556
ksukia: Starting kill, flags = 1
ksukia: Attempt 10 to re-kill process OS PID=19145.
ksukia: killed 1 out of 1 processes.

[oracle@centos5 trace]$ ps -ef | grep 19145
oracle   19145 18844  0 15:46 ?        00:00:00 [oracle] <defunct>
oracle   19310 19271  0 15:48 pts/1    00:00:00 grep 19145
[oracle@centos5 trace]$ kill -9 19145
[oracle@centos5 trace]$ ps -ef | grep 19145
oracle   19145 18844  0 15:46 ?        00:00:00 [oracle] <defunct>
oracle   19315 19271  0 15:49 pts/1    00:00:00 grep 19145
[oracle@centos5 trace]$ ps -ef | grep 18844
oracle   18844 18736  0 15:45 pts/2    00:00:00 sqlplus   as sysdba
oracle   19145 18844  0 15:46 ?        00:00:00 [oracle] <defunct>
oracle   19208 18844  0 15:47 pts/2    00:00:00 /bin/bash
oracle   19319 19271  0 15:49 pts/1    00:00:00 grep 18844
[oracle@centos5 trace]$ kill -9 18844

이렇게 하니 접속해있던 sys 유저로 접속했던 세션은 접속이 끊기지만 오라클 shutdown이 제대로 되어서 접속 가능하게 되었다.

 

 

Posted by neo-orcl
,

기존에 어떤 사이트에서 윈도우 64bit의 DB를 윈도우 32bit로 핫백업을 통해 데이터를 이관한 적이 있다.
데이터 이관을 완료 했는데 SQLGATE라는 프로그램으로 접속을 해보면
OCI: NO_DATA 같은 내용의 에러가 떨어졌다.(정확하지는 않음)
그래서 sqlplus로 접속하려고 해보니

conn scott/tiger
ERROR:
ORA-06553: PLS-801: 내부 오류 [56327]

패키지 DBMS_APPLICATION_INFO를 액세스하는데 오류입니다
연결되었습니다.

로그인은 되는데 PLS 에러가 나타났다.
찾아보니 해결은 64bit용 PLSQL을 32bit용으로 Recomplie 해야한다는 것.

SQL> spool recom.log
SQL> startup upgrade
SQL> @?/rdbms/admin/utlrip.sql

로그를 확인해서 에러가 없다면 OK

 

Posted by neo-orcl
,