글검색결과 [2008/07/11] : 2

  1. 2008/07/11 3G iPhone 에는 한글 키보드가 기본으로??
  2. 2008/07/11 ORA-01002 fetch out of sequence

3G iPhone 에는 한글 키보드가 기본으로??

it/etc | 2008/07/11 18:06


3G iPhone 개봉 UCC가 올라왔길래 보는데..
한글 키보드가 들어가 있네요 @.@
한국 출시 기대해도 될까봐요.

아래 인증 샷 입니다.
사용자 삽입 이미지

아.. 뽐뿌가.. ㅡㅡ;

ORA-01002 fetch out of sequence

it/db | 2008/07/11 17:24



ORA-01002 fetch out of sequence 는 여러 경우에 발생을 한다.

그중 한가지에 대한 오류 발생 사례 이다.

DB Link로 Remote 테이블을 참조 하고 있는 프로세스가 작업을 수행하고 있는 상태에서,
Remote DB가 Shotdown 되는 경우 위 에러가 발생 한다.
Remote DB가 Start되고 새로운 세션을 맺어야 프로세스가 정상 동작을 한다.
세션을 유지한 상태에서 Remote DB가 Start 되어도 위 에러가 계속 발생한다.

말이 어렵다 테스트 해보자.

1. ORA TNS에 RemoteDB를 추가한다.

2. DB 링크를 생성한다.
CREATE PUBLIC DATABASE LINK test_link CONNECT TO remoteDBid IDENTIFIED BY remoteDBpwd USING 'remoteDB';
CREATE SYNONYM test_proc FOR test_proc_table@test_link
SELECT * FROM test_proc

3. 데이터를 삽입한다.
insert into test_proc values ( 1, 1 );
insert into test_proc values ( 2, 1 );
~~~~~~
insert into test_proc values ( 33, 1 );
insert into test_proc values ( 44, 1 );

4. 테스트 프로그램을 작성한다.
$ vi t.pc
#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

#define MAX_ARRAY_SIZE 10

int main()
{
    int n;

    EXEC SQL BEGIN DECLARE SECTION;
        int  hSEQ;
        char hOracleUser[20] = "localDBid";
        char hOraclePwd[20]  = "localDBpwd";
    EXEC SQL END DECLARE SECTION; 
   
    EXEC SQL CONNECT :hOracleUser IDENTIFIED BY :hOraclePwd;
    if(sqlca.sqlcode !=0)
    {
        printf( "login fail\n"); 
        return 0;
    }
   
    for (n=0; n<10; n++)
    {
        printf( "start of job\n"); 
 
        EXEC SQL DECLARE CUR_TEST_PROC CURSOR FOR 
            SELECT SEQ FROM TEST_PROC;
    
        EXEC SQL OPEN CUR_TEST_PROC;        

        while(1)
        {
            EXEC SQL FETCH CUR_TEST_PROC INTO :hSEQ;
               
            sleep(3);           
               
            if(sqlca.sqlcode != 0)
            {
                if(sqlca.sqlcode == 1403)
                {
                    printf( "data not found\n");
                    break;
                }
                else
                {
                    printf( "fetch Error [%20s]\n" , sqlca.sqlerrm.sqlerrmc);
                    break;
                }
            }

            printf("fetch [%d]\n", hSEQ );
        }
        EXEC SQL CLOSE CUR_TEST_PROC;     
        printf( "end of job\n"); 
       
    } /* for */

    return 0;
}

$ proc iname=t.pc
$ cc -o t t.c -L/home/oracle/app/oracle/product/8.1.7/lib -lclntsh -R/home/oracle/app/oracle/product/8.1.7/lib

5. 프로세스 구동
start of job

6. Remote DB Shutdown

7. 에러 확인
fetch Error [ORA-01002: fetch out of sequence]


이거 원인을 파악하려고, 오늘 하루를 다 보냈다. ㅡ.ㅡ




 이전  1   다음