2. 데이터 타입#
이 장은 Monitoring API와 함께 사용되는 데이터 타입에 대해서 설명한다.
데이터 구조체#
이 절은 Monitoring API의 함수를 호출할 때 인자로 사용하는 데이터 구조체를 설명한다.
ABIVSession#
V$SESSION 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SESSION 성능 뷰를 참고한다.
멤버 | 타입 | V$SESSION의 대응하는 칼럼 |
---|---|---|
mID | int | ID |
mTransID | long long | TRANS_ID |
mTaskState[11+1] | char | TASK_STATE |
mCommName[64+1] | char | COMM_NAME |
mXASessionFlag | int | XA_SESSION_FLAG |
mXAAssociateFlag | int | XA_ASSOCIATE_FLAG |
mQueryTimeLimit | int | QUERY_TIME_LIMIT |
mDdlTimeLimit | int | DDL_TIME_LIMIT |
mFetchTimeLimit | int | FETCH_TIME_LIMIT |
mUTransTimeLimit | int | UTRANS_TIME_LIMIT |
mIdleTimeLimit | int | IDLE_TIME_LIMIT |
mIdleStartTime | int | IDLE_START_TIME |
mActiveFlag | int | ACTIVE_FLAG |
mOpenedStmtCount | int | OPENED_STMT_COUNT |
mClientPackageVersion[40+1] | char | CLIENT_PACKAGE_VERSION |
mClientProtocolVersion[40+1] | char | CLIENT_PROTOCOL_VERSION |
mClientPID | long long | CLIENT_PID |
mClientType[40+1] | char | CLIENT_TYPE |
mClientAppInfo[128+1] | char | CLIENT_APP_INFO |
mClientNls[40+1] | char | CLIENT_NLS |
mDBUserName[40+1] | char | DB_USERNAME |
mDBUserID | int | DB_USERID |
mDefaultTbsID | long long | DEFAULT_TBSID |
mDefaultTempTbsID | long long | DEFAULT_TEMP_TBSID |
mSysDbaFlag | int | SYSDBA_FLAG |
mAutoCommitFlag | int | AUTOCOMMIT_FLAG |
mSessionState[13+1] | char | SESSION_STATE |
mIsolationLevel | int | ISOLATION_LEVEL |
mReplicationMode | int | REPLICATION_MODE |
mTransactionMode | int | TRANSACTION_MODE |
mCommitWriteWaitMode | int | COMMIT_WRITE_WAIT_MODE |
mOptimizerMode | int | OPTIMIZER_MODE |
mHeaderDisplayMode | int | HEADER_DISPLAY_MODE |
mCurrentStmtID | int | CURRENT_STMT_ID |
mStackSize | int | STACK_SIZE |
mDefaultDateFormat[64+1] | char | DEFAULT_DATE_FORMAT |
mTrxUpdateMaxLogSize | long long | TRX_UPDATE_MAX_LOGSIZE |
mParallelDmlMode | int | PARALLEL_DML_MODE |
mLoginTime | int | LOGIN_TIME |
mFailOverSource[64+1] | char | FAILOVER_SOURCE |
ABIVSysstat#
데이터베이스 시스템 전체의 통계 정보를 보여주는 V$SYSSTAT 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SYSSTAT 성능 뷰를 참고한다.
멤버 | 타입 | V$SYSSTAT의 대응하는 칼럼 |
---|---|---|
mValue | long long | VALUE |
ABIVSesstat#
세션 별 통계 정보를 보여주는 V$SESSTAT 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SESSTAT 성능 뷰를 참고한다.
멤버 | 타입 | V$SESSTAT의 대응하는 칼럼 |
---|---|---|
mSID | int | SID |
mValue | long long | VALUE |
ABIStatName#
V$SYSSTAT 또는 V$SESSTAT 성능 뷰의 고정 칼럼들의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SYSSTAT와 V$SESSTAT 성능 뷰를 참고한다.
멤버 | 타입 | V$SYSSTAT 또는 V$SESSTAT의 대응하는 칼럼 |
---|---|---|
mSeqNum | int | SEQNUM |
mName[128+1] | char | NAME |
ABIVSystemEvent#
V$SYSTEM_EVENT 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SYSTEM_EVENT 성능 뷰를 참고한다.
멤버 | 타입 | V$SYSTEM_EVENT의 대응하는 칼럼 |
---|---|---|
mTotalWaits | long long | TOTAL_WAITS |
mTotalTimeOuts | long long | TOTAL_TIMEOUTS |
mTimeWaited | long long | TIME_WAITED |
mAverageWait | long long | AVERAGE_WAIT |
mTimeWaitedMicro | long long | TIME_WAITED_MICRO |
ABIVSessionEvent#
V$SESSION_EVENT 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SESSION _EVENT 성능 뷰를 참고한다.
멤버 | 타입 | V$SESSION_EVENT의 대응하는 칼럼 |
---|---|---|
mSID | int | SID |
mTotalWaits | long long | TOTAL_WAITS |
mTotalTimeOuts | long long | TOTAL_TIMEOUTS |
mTimeWaited | long long | TIME_WAITED |
mAverageWait | long long | AVERAGE_WAIT |
mMaxWait | long long | MAX_WAIT |
mTimeWaitedMicro | long long | TIME_WAITED_MICRO |
ABIEventName#
V$SYSTEM_EVENT 또는 V$SESSION_EVENT 성능 뷰의 고정 칼럼들의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SYSTEM_EVENT와 V$SESSION_EVENT 성능 뷰를 참고한다.
멤버 | 타입 | V$SYSTEM_EVENT 또는 V$SESSION_EVENT의 대응하는 칼럼 |
---|---|---|
mEventID | int | EVENT_ID |
mEvent[128+1] | char | EVENT |
mWaitClassID | int | WAIT_CLASS_ID |
mWaitClass[128+1] | char | WAIT_CLASS |
ABIVSessionWait#
V$SESSION_WAIT 성능 뷰의 조회 결과를 저장하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다. 각 칼럼의 의미는 General Reference에서 V$SESSION_WAIT 성능 뷰를 참고한다.
멤버 | 타입 | V$SESSION_WAIT의 대응하는 칼럼 |
---|---|---|
mSID | int | SID |
mSeqNum | int | SEQNUM |
mP1 | long long | P1 |
mP2 | long long | P2 |
mP3 | long long | P3 |
mWaitClassID | int | WAIT_CLASS_ID |
mWaitTime | long long | WAIT_TIME |
mSecondInTime | long long | SECOND_IN_TIME |
ABISqlText#
Statement ID로 SQL문 텍스트, 쿼리 시작 시간, 쿼리의 수행 여부를 조회하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mSessID | int | 세션 ID |
mStmtID | int | Statement ID |
mSqlText | char * | SQL문 텍스트 |
mTextLength | int | mSqlText에 저장된 문자열의 길이 |
mQueryStartTime | int | 쿼리 시작 시간 |
mExecuteFlag | int | 쿼리의 수행 여부 0 : 수행됨 1: 수행안됨 |
mParseTime | long | 파싱 소요 시간 |
mSoftPrepareTime | long | Prepare 과정중 SQL Plan Cache에서 plan 탐색 시간 |
mLastQueryStartTime | int | 가장 최근의 쿼리 시작 시간 |
mExecuteTime | long | 실행 소요 시간 |
mFetchTime | long | Fetch 소요 시간 |
mFetchStartTime | int | 현재 Fetch 시작 시간 |
mTotalTime | long | 총 경과 시간 |
mValidateTime | long | 정당성 검사 소요 시간 |
mOptimizeTime | long | 최적화 소요 시간 |
ABILockPair#
락(Lock)을 잡고 있는 세션과 이 락을 획득하기 위해 대기하는 세션의 쌍을 조회하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mHolderSID | int | 락을 잡고 있는 세션의 ID |
mWaiterSID | int | 락을 잡고 있는 세션(mHolderSID)으로 인해 대기중인 세션의 ID |
mLockDesc[32+1] | char | 대기중인 세션(mWaiterSID)이 획득하고자 하는 락 모드 |
ABIDBInfo#
데이터베이스의 이름, 버전 번호를 조회하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mDBName[128+1] | char | 데이터베이스 이름 |
mDBVersion[128+1] | char | 데이터베이스 버전 번호 |
ABIReadCount#
Altibase 서버에서 발생한 데이터 페이지 읽기 횟수를 조회하는 데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mLogicalReadCount | int | 메모리 버퍼에서 데이터 페이지를 읽은 횟수 |
mPhysicalReadCount | int | 디스크에서 데이터 페이지를 읽은 횟수 |
ABIRepGap#
Altibase 서버에서 발생하는 이중화 송신자의 작업 로그 레코드와 가장 최근에 생성된 로그 레코드간의 차이를 조회하는데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mRepName[40+1] | char | 이중화 객체의 이름 |
mRepGap | long long | 마지막으로 전송된 로그 레코드의 번호(REP_LAST_SN)와 현재 전송중인 로그 레코드(REP_SN)의 차이 |
ABIRepSentLogCount#
Altibase 서버에서 이중화 송신자가 전송한 로그의 개수를 조회하는데 사용되는 데이터 구조체이다.
이 구조체는 아래 표와 같은 멤버를 가진다.
멤버 | 타입 | 설명 |
---|---|---|
mRepName[40+1] | char | 이중화 객체의 이름 |
mTableName[128+1] | char | 테이블 객체의 이름 |
mInsertLogCount | int | INSERT 로그의 개수 |
mDeleteLogCount | int | DELETE 로그의 개수 |
mUpdateLogCount | int | UPDATE 로그의 개수 |
열거형#
Monitoring API 애플리케이션 작성을 위해 제공되는 열거형은 다음과 같다.
enum ABIPropType#
Altibase 서버에 접속하기 위한 사용자와 사용자 암호를 지정하기 위해 ABISetProperty 함수와 함께 사용되는 열거형이다.
이 열거형의 원소는 다음과 같다
원소 | 설명 |
---|---|
ABI_USER | 사용자 이름을 지정할 때 사용된다. |
ABI_PASSWD | 사용자 암호를 지정할 때 사용된다. |
ABI_LOGFILE | Monitoring API에서 발생하는 에러 메시지가 기록되는 파일을 지정할 때 사용된다. |
주의사항#
Monitoring API 함수 대부분은 위의 절에서 설명한 구조체를 인자로 가진다. 이 절은 이들 구조체를 인자로 사용할 때의 주의점을 설명한다.
애플리케이션에서는 구조체형 포인터 변수를 선언하고, 이 포인터의 주소값(이중 포인터)을 Monitoring API 함수에 전달해야 한다. Monitoring API 함수는 전달받은 포인터에 힙 메모리를 할당하고 데이터베이스에서 조회한 결과를 셋팅함으로써 애플리케이션에 결과 셋을 반환한다.
즉, Monitoring API용의 데이터 구조체를 위한 메모리 할당과 해제는 Monitoring API 함수 내부에서 이루어지므로, 애플리케이션에서는 직접 해당 구조체형 포인터에 메모리를 할당하거나 함수 수행 결과로 반환받은 메모리를 해제하지 않아야 한다.
아래 예제 코드에서 보듯이 애플리케이션에서는 ABIVSession 구조체형 포인터 변수를 선언할 뿐, sVSession에 메모리를 할당해서는 안 된다. 또한 함수 수행 후 sVSession에서 결과 값을 참조할 때 결과 셋의 로우 개수 내에서 배열 요소들을 액세스해야 한다.
ABIVSession *sVSession;
int sRowCount;
sRowCount = ABIGetVSession( &sVSession, 0 );
/* sVSession에서 조회된 결과 참조하기 */
for (int i=0; i<sRowCount; i++)
{
/* sVSession[i].mID; */
/* sVSession[i].mTransID; */
}