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
운영게시판
최근게시물
DB2 Q&A 1345 게시물 읽기
No. 1345
다시한번 세션정보에 대해 질문드립니다.
작성자
김재호
작성일
2007-05-18 10:08
조회수
10,336

아래의 내용이 원래 제가 질문한 내용입니다.

=================================================================================================

현재 DB2에 접속한 응용 자신의 세션정보를 알고싶습니다.


즉, 자기자신의 SESSION ID를 획득하는 쿼리를 알고 싶네요.


아래는 타사의 DB의 경우 사용하는 쿼리문을 나열했습니다.


오라클이나 인포믹스의 경우는 아래와 같은 쿼리로 가능한데, DB2에서도 가능한지 알고 싶습니다.


 


오라클> select to_char(userenv('SESSIONID')) from dual


MSSQL> select spid from master.dbo.sysprocesses where spid = @@spid


인포믹스> select DBINFO(\"sessionid\") from 'informix'.SysTables WHERE TabID = 1


아시는 분들은 답변 부탁드립니다. ^^

=================================================================================================

이 질문에 대해 답변이 아래와 같습니다. (답변해주신 박진복님 감사드립니다. ^^)

=================================================================================================

udb :
select CURRENT SCHEMA
from sysibm.sysdummy1


os/390 :
select CURRENT SQLID
from sysibm.sysdummy1

=================================================================================================

하지만 위의 질의로는 해당 접속 ID 또는 접속한 DB 이름만 획득할 수 있으며,

이 정보는 각 세션마다 사용할 수 있는 고유의 값이 될수는 없습니다.

이유는 서로 다른 응용이 서로 다른 세션으로 DB에 접속하여도 같은 DB나 같은 ID로 접속을 한다면

위의 정보로는 서로 다른 응용이 접속했다는 것을 알 수 없습니다.

저도 메뉴얼을 조금 공부하여 이것저것 찾아보다가 아래와 같은 테이블 정보를 알아내었지만

이 또한 분별해낼 방법을 몰라 고생하고 있습니다.

혹시 좋은 방법을 알고 계신분께서는 알려주세요. ^^


해당 질의문>

SELECT * FROM SYSIBMADM.APPLICATIONS;

이 질의를 이용하여 현재 접속한 응용의 여러 정보를 획득할 수 있습니다. 이 정보들 중 APPL_ID 나 AGENT_ID, CLIENT_PID 같은 경우가

제가 원하는 정보인 것 같은데, 해당 응용이 자신의 정보만을 획득할 방법을 잘 모르겠습니다. 좀 도와주세요. ^^

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

DB2 버전, 사용기종이 뭔가요?

박진복(pjb708)님이 2007-05-22 08:00에 작성한 댓글입니다.

DB2 V9 버전입니다.

김재호님이 2007-05-22 18:35에 작성한 댓글입니다. Edit

CONNECT 명령을 수행한후 SQLCA를 참조하세요.
 (DB2 UDB for z/OS V8 이상에서는 GET DIAGNOSTICS 명령으로도 정보알수 있슴.)
 (DB2 UDB for z/OS V7 에서는 SQLCA 참조해도 안나옴. ㅜㅜ )

CONNECT TO문이 성공하면,

o 모든 열린 커서가 닫히고, 모든 준비된 명령문이 파괴되며,
  모든 잠금이 이전 응용프로그램 서버로부터 해제됩니다.

o 존재하는 경우 응용프로그램 프로세스는 이전 응용프로그램 서버(AS)로부터
  분리되고 식별된 응용프로그램 서버(AS)에 연결됩니다.

o 응용프로그램 서버(AS)의 실제 이름(별명이 아님)은
  CURRENT SERVER 특수 레지스터에 위치됩니다.

o 응용프로그램 서버(AS)에 대한 정보는 SQLCA의 SQLERRP 필드에 위치됩니다.
  응용프로그램 서버(AS)가 IBM 제품이면, 정보는 pppvvrrm 양식으로 되어 있습니다.
  여기서,
  ppp는 다음과 같은 제품을 식별합니다.
    MVS용 DB2에 대한 DSN
    SQL/DS용 ARI
    DB2/400용 QSQ
    DB2 Universal Database용 SQL
    vv는 '02'와 같은 두 자리의 버전 식별자입니다.
    rr은 '01'과 같은 두 자리의 릴리스 식별자입니다.
    m은 '0'과 같은 한 자리의 수정 레벨 식별자입니다.

  예를 들어, 응용프로그램 서버(AS)가 OS/2용 DB2 버전 1 릴리스 1일 경우,
  SQLERRP의 값은 'sQL01010'입니다. 66

o SQLCA의 SQLERRMC 필드는 다음 값(X'FF'로 구분됨)으로 설정됩니다.
 1. 응용프로그램 서버의 국가 코드(또는 DDCS를 사용할 경우 공백)
 2. 응용프로그램 서버의 코드 페이지(또는 DDCS를 사용할 경우 CCSID)
 3. 권한 부여 ID(처음부터 8 바이트까지만)
 4. 데이터베이스 별명
 5. 응용프로그램 서버의 플랫폼 유형.
    현재 식별되는 값은 다음과 같습니다.
    토큰            서버
    QAS             AS/400용 DB2 Universal Database
    QDB2            OS/390용 DB2 Universal Database
    QDB2/2          OS/2용 DB2 Universal Database
    QDB2/6000       AIX용 DB2 Universal Database
    QDB2/HPUX       HP-UX용 DB2 Universal Database
    QDB2/LINUX      Linux용 DB2 Universal Database
    QDB2/NT         Windows NT용 DB2 Universal Database
    QDB2/PTX        NUMA-Q용 DB2 Universal Database
    QDB2/SCO        SCO UnixWare용 DB2 Universal Database
    QDB2/SNI        Siemens Nixdorf용 DB2 Universal Database
    QDB2/SUN        Solaris 운영 체제용 DB2 Universal Database
    QDB2/Windows 95 Windows 95 또는 Windows 98용 DB2 Universal Database
    QSQLDS/VM       VM용 DB2 서버
    QSQLDS/VSE      VSE용 DB2 서버
 6. 에이전트 ID. 응용프로그램 대신 데이터베이스 관리 프로그램 내에서
    실행하는 대행자를 식별합니다. 이 필드는 데이터베이스 모니터에 의해 리턴되는
    agent_id 요소와 같습니다.
 7. 대행자 색인. 대행자의 색인을 식별하고 서비스에 사용됩니다.
 8. 파티션 번호. 비파티션된 데이터베이스에 대해서 존재시, 그 값은 항상 0입니다.
 9. 응용프로그램 클라이언트의 코드 페이지.
 10. 파티션된 데이터베이스의 파티션 번호 데이터베이스를 파티션할 수 없는 경우,
     값은 0입니다. 토큰은 버전 5 이상에 있습니다.

o SQLCA의 SQLERRD(1) 필드는 응용프로그램 코드 페이지에서 데이터베이스 코드 페이지로
  변환시 예상되는 최대 차이를  혼합문자 데이터(CHAR 데이터유형)의 길이로 나타냅니다.
  값 0 또는 1은 확장되지 않음을 나타냅니다. 1보다 큰 값은 가능한 확장값의 길이로
  나타내며, 음수값은 가능한 축소값을 나타냅니다. 67

o SQLCA의 SQLERRD(2) 필드는 데이터베이스 코드 페이지에서 응용프로그램 코드 페이지로
  변환시 예상되는 최대 차이를 혼합 문자 데이터(CHAR 데이터 유형)의 길이로 나타냅니다.
  값 0 또는 1은 확장되지 않음을 나타냅니다. 1보다 큰 값은 가능한 확장값의 길이로
  나타내며, 음수값은 가능한 축소값을 나타냅니다. 67

o SQLCA의 SQLERRD(3) 필드는 연결시 데이터베이스를 갱신할 수 있는 지를 나타냅니다.
  데이터베이스는 처음에는 갱신 가능하지만, 작업 단위(UOW)에서 권한 부여 ID가 갱신을
  수행할 수 없다고 판별할 경우 읽기 전용으로 변경됩니다. 값은 다음 중 하나입니다.
  1 - 갱신 가능
  2 - 읽기 전용

o SQLCA의 SQLERRD(4) 필드는 연결의 특정한 특성을 리턴합니다. 값은 다음 중 하나입니다.
  0 - N/A(1 단계 확약이면서 갱신자인 하위 레벨 클라이언트로부터 수행중인
      경우에만 가능함).
  1 - 1단계 확약
  2 - 1단계 확약; 읽기 전용(TP 모니터 환경에서의 DRDA1 데이터베이스에 대한 연결에
      대해서만 적용 가능함).
  3 - 2단계 확약

o SQLCA의 SQLERRD(5) 필드는 연결의 인증 유형을 리턴합니다. 값은 다음 중 하나입니다.
  0 - 서버에 대해 인증됨
  1 - 클라이언트에 대해 인증됨
  2 - DB2 연결 사용에 인증됨
  3 - DCE 보안 사용에 인증됨
  255 - 지정되지 않은 인증.

o SQLCA의 SQLERRD(6) 필드는 데이터베이스가 파티션될 때 연결된 파티션의
  파티선 번호를 리턴합니다. 그렇지 않으면, 0의 값이 리턴됩니다.

o 성공적인 연결의 권한 부여 ID가 8 바이트보다 클 경우,
  SQLCA의 SQLWARN1 필드는 'A'로 설정됩니다. 이는 절단이 발생하였음을 나타냅니다.
  SQLCA의 SQLWARN0 필드는 이러한 경고를 나타내기 위해 'W'로 설정됩니다.

o 데이터베이스에 대한 데이터베이스 구성 매개변수 DYN_QUERY_MGMT가
  사용 가능할 경우 SQLCA의 SQLWARN7 필드는 'E'로 설정됩니다.
  SQLCA의 SQLWARN0 필드는 이러한 경고를 나타내기 위해 'W'로 설정됩니다.

휴~~ 메뉴얼 긁어 붙이기 힘들어요 (이정보가 맞나 몰겠네요)

박진복(pjb708)님이 2007-05-22 18:53에 작성한 댓글입니다.
이 댓글은 2007-05-25 14:15에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
1348트리거 내에서 프로시져 사용방법...
김재호
2007-05-22
8678
1347유닉스에서 백업한 것을 윈도우에서 restore 가능한가요? [1]
심현철
2007-05-21
7604
1346이 sql좀 봐주세요 오브젝트가 실제 별칭인지 확인하십시오 이런오류가나요.. [1]
이해준
2007-05-18
10437
1345다시한번 세션정보에 대해 질문드립니다. [3]
김재호
2007-05-18
10336
1344DB2 전문가를 찾고있습니다.
Humins
2007-05-17
8410
1343Translate 함수 잘아시는 분 설명부탁드려도 될런지요 [1]
2007-05-17
8367
1342[질문] AS400서버 LOAD하는 유틸리티 설치방법
디비투
2007-05-16
8155
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.044초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다