[sql] Oracle SQL에서 스키마의 모든 테이블을 어떻게 나열합니까?

Oracle SQL에서 스키마의 모든 테이블을 어떻게 나열합니까?



답변

다른 스키마의 모든 테이블을 보려면 다음 시스템 권한 중 하나 이상이 있어야합니다.

SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE

또는 큰 망치, DBA 역할.

이들 중 하나를 사용하여 다음을 선택할 수 있습니다.

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM DBA_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

이러한 시스템 권한이 없으면 직접 또는 역할을 통해 어느 정도의 액세스 권한이 부여 된 테이블 만 볼 수 있습니다.

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM ALL_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

마지막으로, 테이블에 대한 권한을 취소 할 수 없으므로 (10g 기준) 언제든지 자신의 테이블에 대한 데이터 사전을 쿼리 할 수 ​​있습니다.

SELECT DISTINCT OBJECT_NAME 
  FROM USER_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'


답변

SELECT table_name  from all_tables where owner = 'YOURSCHEMA';


답변

당신은 쿼리 할 수 ​​있습니다 USER_TABLES

select TABLE_NAME from user_tables


답변

DBA 권한없이 일반 사용자로 로그인 한 경우 다음 명령을 사용하여 고유 한 스키마의 모든 테이블 및 뷰를 볼 수 있습니다.

select * from tab;


답변

이것을 시도하고 교체 하시겠습니까? 스키마 이름으로

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'


답변

JDBC (Java)로 Oracle에 액세스하는 경우 DatabaseMetadata 클래스를 사용할 수 있습니다 . ADO.NET을 사용하여 Oracle에 액세스하는 경우 비슷한 방법을 사용할 수 있습니다.

ODBC로 Oracle에 액세스하는 경우 SQLTables 함수를 사용할 수 있습니다 .

그렇지 않으면 SQLPlus 또는 유사한 Oracle 클라이언트의 정보 만 필요한 경우 이미 언급 한 쿼리 중 하나가 수행합니다. 예를 들어 :

select TABLE_NAME from user_tables


답변

select * from cat;

user_catalog의 스키마 cat 동의어에있는 모든 테이블을 표시합니다.