select 문 질문2입니다. 0 7 5,208

by 임현식 [Oracle 기초] USER_TABLES [2012.03.13 14:52:51]


안녕하세요
아래 질문에 답변 주신 강서꽃미남 , 부쉬맨 두분께 감사드립니다.
링크해주신거 잘 보았습니다.^^

제가 select 하는 목적은 DB 테이블 분석을 하기 위해서 입니다.

로컬에서  SYSDBA로 접속해서 작업했습니다.

DB가 webLogic랑 연동하고 있습니다. 이 연동하고 있는 테이블을 찾는게 목적입니다.

인터넷에 검색해보니 
SELECT table_name FROM  USER_TABLES; 을 하면 된다고해서 
이 명령어를 사용했습니다.
헌데 이렇게 검색하니 시스템 테이블? 들만 나오는것 같습니다.
제가 select 하는 방법이 문제 인거 같은데..
다른 명령어로 알아 볼 수 있는 방법이 있나요?

by 부쉬맨 [2012.03.13 14:59:28]
SELECT table_name FROM  all_TABLES; 
SELECT table_name FROM  dba_TABLES;
 
SELECT table_name FROM  user_TABLES;

한번확인해보시기 바랍니다.


by 강서꽃미남 [2012.03.13 15:14:03]

찾고자 하시는게 웹로직과 연동하여서

특정 스키마의 테이블이 무엇이 있나 분석하고 싶어서 하는 목적이십니까.

SYSDBA 권한자가 특정 스키마의 테이블을 분석하고 싶다면
SQL> select owner, table_name from dba_tables
      2  where owner='HR';
등으로 owner name으로 확인 할 수 있구요.

SYSDBA권한자가 아닌 일반 유저가 테이블을 알고 싶다면,

SQL> select table_name,status from user_tables
  2  where table_name='EMPLOYEES';

TABLE_NAME STATUS
------------------------------ --------
EMPLOYEES   VALID

이런식으로 검색하시면 됩니다.
부가적 옵션은 desc user_tables 라던지, desc dba_tables 등으로 추출하고 싶은 정보만 컬럼네임을 추출해서 분석하시면됩니다.

그리고 웹로직이랑 연동되어 있다 하더라도,
이렇게 특정 스키마의 테이블 분석이나 이런부분은 프로시저 등을 이용해서, 변수값으로 파라미터를 받아와서 값을 뿌려주는 방법도 나쁘지 않을 것 같습니다...

제 답이 질문에 맞는 대답인지 모르겠습니다. 추가적인 사항 코멘트 부탁드립니다.
감사합니다.


by 강서꽃미남 [2012.03.13 15:14:58]

또한, dba_xxx 부분은 dba권한을 가진 유저만 select 가능합니다.

by 임현식 [2012.03.13 15:41:04]
1)SQL>SELECT table_name FROM  dba_TABLES; 
 
2)SQL> select owner, table_name from dba_tables

      2  where owner='SYS';
이렇게 2개의 명령어로 검색을 하니 테이블들이 나왔습니다.
KU$_DATAPUMP_MASTER_11_2
KU$_DATAPUMP_MASTER_11_1_07
KU$_DATAPUMP_MASTER_11_1
             ..............................
여기서 select * from 
KU$_DATAPUMP_MASTER_11_1;  명령어를 사용하면
선택된 레코드가 없습니다. 라는 메시지가 나타나네요  
어떻게 하면 테이블 안에 내용을 볼 수 있나요?

by 강서꽃미남 [2012.03.13 16:01:29]

음..혹시 오라클 버전이 어떻게 되시나요.?
11r2부터는 데이터가 들어간 시점에 적재되어서 일반일때는 no rows라고 뜨는게 정상이라고 하네요.'

버전 차이가 아니시라면

KU$_DATAPUMP_MASTER_11_1 를 통해 알려고 하시는 정보가 무엇인지요.?

저도 저런방식은 해본적이 없어서
dba_tables 같은 경우는 아날라이징 해서 분석정보를 얻을 때, 통계정보 수집할 때 사용해 본적이 있습니다.

SYS의 KU$_DATAPUMP_MASTER_11_2
   KU$_DATAPUMP_MASTER_11_1_07
   KU$_DATAPUMP_MASTER_11_1
             ..............................
테이블을 통해 알려고 하시는 정보가 무엇인가요?
그리고 왜 OWNER 가 SYS인가요 일반유저에 테이블을 만들지 않았나요?

by 임현식 [2012.03.13 18:01:23]
네 ^^ 
버전은 11g 11.2.0.1.0를 사용하고 있습니다.

SYS의 KU$_DATAPUMP_MASTER_11_2
   KU$_DATAPUMP_MASTER_11_1_07
   KU$_DATAPUMP_MASTER_11_1
이것을 통해 특별한것을 볼려고 한것은 아니고   테이블을 볼 수 있는지 없는지 테스트용이 었습니다.
이렇게 한 이유는 일반유저로 
SELECT table_name FROM  user_TABLES;  
활용해 테이블을 보았는데
BOM_EXCEL 
이라는 테이블이 있습니다. 여기 안에 내용을 보려고 select * from  BOM_EXCEL;
입력하면  
"선택된 레코드가 없습니다."  
하고 나오네요 그래서 혹시 SYS는 될까 싶어서 해보았습니다.
다른 명령어로 테이블을 볼 수 있나요?
 


by 마농 [2012.03.13 18:10:08]

[선택된 레코드가 없습니다] 는 매우 정상적인 메시지입니다.
말 그대로 데이터가 없는 것입니다.
테이블이 없는것이 아닙니다.
테이블이 없다면 테이블이 없다는 메시지가 나오겠지요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입