본문 바로가기

DB/Oracle

모르는 테이블 조회

필요한 정보가 있는지 찾기 위해 다른 서버의 DB를 들어가서 검색해보니 나오는 정보가 없다.

그래서 조회하는 방법을 적어본다. oracle SQL Developer나 토드같은 툴을 이용할 수 있는 상황이라면 이런 번거로움은 필요없겠지만, 툴을 이용한 접근을 막아버린 곳이 많아서 SQL Plus로 작업 중에 생각한 방법이다.


먼저 table 목록은 다음 쿼리로 알 수 있다.

select table_name from all_tables;


그런데 이런저런 테이블이 많다. 특히 $가 들어간 테이블이 많이 있다. $가 들어간 테이블명은 보통 시스템과 관련된 테이블이어서 정리가 필요하다. 그래서 시스템 테이블같은 테이블을 제외해보자.

select distinct tablespace_name from all_tables;


쿼리를 실행해보면 SYSAUX, SYSTEM이 있고 다른건 잘 모르겠다. 그래서 일딴 두개를 제외해보기로 했다.

select table_name from all_tables where tablespace_name not in('SYSAUX','SYSTEM') order by table_name;


테이블 갯수가 많이 줄어들었다. 그런데 아직도 전혀 짐작할 수 없는 테이블이 있다. 하지만 처음 목적보다는 많이 줄어들었다. 이제 특정 테이블을 조회하고 싶어진다. 그런데 SQL Plus라는 놈은 컬럼이 많으면 조회가 힘들다. 그래서 먼저 컬럼명을 확인해보고 싶으니 다음 쿼리를 이용해보자.

select column_name from all_tab_columns where table_name = 'TABLE';


*를 이용하여 조회하면 다른 정보들도 볼 수 있으니 필요하다면 다른 정보도 확인해보자. 예를들어 컬럼의 data type, nullable, data length 등이 있다. 이건 번거로울 수 있으니 좀 더 간단한 방법을 적어본다.

describe TABLE;


그런데 데이터를 많이 조회하면 SQL Plus 특성상 가독성이 떨어진다. 그래서 화면에 보이는 컬럼의 폭을 정할 수 있다.

column        DATA_TYPE        format a10;


a10이란 부분이 크기이니 저 값을 수정해보면서 가독성이 좋아지게 변경하면서 해보자.


툴에 적응하면서 생각지도 못했는데, 강제로 SQL Plus를 다시 쓰게 되니, 예전에는 어떻게 작업했는지 모르겠다. 분명 전에는 사용했었는데.... 좀 더 편한 방법이 생기면 좋겠다.

'DB > Oracle' 카테고리의 다른 글

ojdbc와 jdk 버전  (0) 2018.04.26
like in 해보자. regexp_like  (0) 2016.08.17
DB에서 컬럼 순서 랜덤하게 가져오기  (0) 2015.08.05
오라클 포트 설정하기  (0) 2014.05.21
한글 - 알파벳 - 숫자 순으로 정렬  (0) 2013.07.29