list tables;라는 명령을 치면 시스템관련 테이블이 아닌 사용자 정의 테이블이 나오는데요
근데 이 결과가 그리드(표)형식이 아니라 텍스트형식으로 출력됩니다.
그리드(표)형식으로 나타나는 결과로 사용자가 만든 테이블만 볼수 있는 쿼리좀
알려주세요.
감사합니다.
추가
select rtrim(tabschema)||'.'||tabname||' '||type||' '||hex(CREATE_TIME)||' '||char(day(current timestamp - STATS_TIME))
char(day(current timestamp - STATS_TIME))는 마지막 통계장성일로부터 지난 날짜입니다. 데이터 변경이 많은 테이블은 이걸 참조해서 runstats를 해주시면 갑자기 sql이 느려지는 것을 방지할수 있어요
sys로 시작하면 모두 시스템 관련 테이블이군요~
그런데요 order by뒤에 with us는 무슨 뜻인가요?
with ur은 isolation level의 지정방법중 하나입니다.
select 문에서 with ur은 변경중인 데이타를 읽을 수 있습니다.
db2의 isolation level은 4가지입니다.
RR : repeatable read
RS : read stability
CS : cursor stability
UR : uncommitted read
isolation level ( 분리레벨)
응용프로그램 프로세스와 연관되는 분리 레벨 은 동시에 실행되는 다른 응용프로그램 프로세스로부터 응용프로그램 프로세스의 분리 정도를 정의합니다. 응용프로그램 프로세스의 분리 레벨은 다음을 지정합니다.
- 응용프로그램이 읽고 갱신한 행을 동시에 실행 중인 다른 응용프로그램 프로세스에 사용할 수 있는 정도 - 동시에 실행 중인 다른 응용프로그램 프로세스의 갱신 활동이 응용프로그램에 영향을 줄 수 있는 정도
UR (언커미트 읽기)
읽기 전용 커서가 있는 SELECT INTO, FETCH 또는 INSERT의 fullselect, UPDATE의 행 fullselect 또는 스칼라 fullselect의 경우(사용되는 곳 어디에서나), 언커미트 읽기 레벨은 다음을 허용합니다.
- 작업 단위 동안 읽어들인 모든 행을 다른 응용프로그램 프로세스가 변경하도록 합니다. - 해당 응용프로그램 프로세스가에서 변경사항을 커미트하지 않은 경우에도 다른 응용프로그램 프로세스가 변경한 모든 행을 읽어들이도록 합니다.
오라클은 조회시 해당 row에 대한 변경을 할 수가 있지만 db2는 변경을 하지 못하도록 합니다. 오라클에서만 개발을 한 개발자들은 이를 모르고 문제를 발생시키는 application개발을 하는 경우가 있습니다.
예로 크기가 크고 변경이 매우 빈번한 중요 테이블에 full scan select를 한 경우 이 sql이 끝날 때까지 테이블에 lock이 발생하면서 대기하는 application들이 많이 발생하게 됩니다.
이를 방지하기 위해 UR isolation을 사용합니다. 말그대로 commit이 발생하지 않아도 당시의 데이터를 읽어 오겠다는 겁니다. 오라클은 rbs에 작업 대상 데이터를 따로 보관하기 때문에 데이터의 변경과는 무관하게 작업을 할 수 있는 것으로 알고 있습니다.