안녕하세요.
데이터베이스의 테이블에 관한 정보는 시스템 카달로그를 검색해서 볼 수 있습니다.
테이블 목록:
select * from systables where tabid >= 100;
tabid가 100미만인 경우 시스템 카달로그 테이블입니다.
컬럼의 목록:
select a.*, b.tabname from syscolumns a, systables b
where a.tabid = b.tabid and b.tabname = 'test'
order by colno;
여기서 a.coltype은 smallint형이며 각 컬럼의 자료형을 가리킵니다.
각 숫자가 의미하는 값은 직접 테이블을 만든 후 select 해봅니다.
테이블의 사이즈는 다음과 같이 계산될 수 있습니다.
select rowsize*nrows from systables where tabname = 'test';
그러나 이것은 할당된 사이즈가 아닌 실제 데이터의 값만을 가리키며
update statistics;
를 실행하지 않으면 nrows가 정확한 값을 가지지 않기 때문에
정확한 값이라고 할 수 없습니다.
select count(*) from test;한 값과 rowsize를 곱한 값이 더 정확하죠.
실제 할당된 페이지 수는 sysmaster라는 DBMS전체 카달로그 데이테 베이스로
부터 얻어낼 수 있습니다.
select sum(size) from sysmaster:sysextents where dbsname = '데이터베이스명'
and tabname = '테이블명';
페이지의 크기는 시스템에 따라 다른 데, 일반 UNIX의 경우 2K AIX와 NT의
경우는 4K입니다.
커맨드 라인에서 oncheck를 사용할 경우는
$ oncheck -pe | grep 데이터베이스명."사용자ID".test
를 하면 할당된 extent(페이지그룹)이 출력됩니다.
흠~ 그리고 최종갱신일은 잘 모르겠군요.
그럼 수고하세요.
>>김종렬 님께서 쓰시길<<
:: 일정한 데이터 베이스내에 있는 테이블 정보를 알고 싶읍니다.
:: dbaccess나 isql을 사용하면 데이터 베이스와 테이블 단위로 설정상태등을 알수
:: 있지요.
:: 하지만 한거번에 테이블에 대한 정보를 알고 싶고 테이블의 최종 변경 시간등도
:: 함께 알고 싶읍니다.
:: mysql에서는 show tables이란 명령을 통해서 모든 테이블 이름을 알수 있고
:: desc table명을 통해서 테이블 설정 상태등을 확인하면 되는데 informix에서는
:: mysql에서와 동일한 명령어가 있을듯 하네요.
:: 답변 부탁드립니다.
:: 그리고 아까와 같이 최종 갱신시간을 알아보려면 어느 테이블을 뒤져야 하고
:: 현재 테이블이 차지하고 있는 사이즈등을 알수있으면 더욱 좋겠죠.
:: 이런 내용등을 가지고 프로그램을 짜려고 해요.
:: 그러기 위해서는 visual환경인 dbaccess같은 환경 말고 oracle, mysql처럼
:: 스크립트 형태로 보내어줄 메세지면 더욱 좋을듯 한데요.
:: 이런 내용등에 대해서 답변을 부탁 하네요...
::
:: 그럼..
::
|