2015-11-26 7 views
0

Я изо всех сил пытаюсь получить таблицы с заданным именем пользователя или текущим сеансом/пользователем; Я могу получить все таблицы, используя select table_name from all_tables;, но также извлекает созданные по умолчанию таблицы. Мне просто нужны таблицы, которые мы создали.Как получить таблицы из текущего сеанса/пользователя

Даже когда я извлекаю таблицы из базы данных Pluggable, он также извлекает все таблицы (по умолчанию-tables-with-$ - sign-name), но когда я подключаю подключаемый пользователь в ORACLE SQL DEVELOPER, тогда он просто отображается (создается пользователем) таблицы без таблиц по умолчанию.

Я хочу, чтобы все запросы, отображающие таблицы, пользователи без таблицы по умолчанию ($ sign name), пользователи; для sqlplus. Я использую ORACLE-12C.

+1

просто использовать выберите * от user_tables; –

+0

Возможный дубликат [Получить список всех таблиц в Oracle?] (Http://stackoverflow.com/questions/205736/get-list-of-all-tables-in-oracle) –

+0

@FlorinGhita Я знаю, но это также получить такие тупые таблицы, которые я не создал. может быть, это могут быть таблицы по умолчанию. –

ответ

0

Просто фильтр на владельце:

select table_name from all_tables where owner='YOUR OWNER NAME'; 
+0

показать ошибку 'row row'. даже я создал одну таблицу; –

+0

какой пользователь вы используете? 'выберите пользователя из dual;', чтобы найти его. –

+0

У меня СИСТЕМА. но он также извлекает таблицы, которые я не создал. (с некоторым значком $ sign) даже для пользователя SYSTEM и пользователя SCOTT для PDBORCL (Pluggable_databse); –

0

Вы можете запросить вид [DBA | ALL | USER] _TABLES в зависимости от привилегий у вас есть.

user_tables Запрашивание обеспечили бы все таблицы, принадлежащие текущего владельца вы вошли в.

Например,

SQL> show user 
USER is "LALIT" 
SQL> SELECT table_name FROM user_tables; 

TABLE_NAME 
-------------------------------------------------------------------------------- 

no rows selected 

SQL> create table t(a number); 

Table created. 

SQL> SELECT table_name FROM user_tables; 

TABLE_NAME 
-------------------------------------------------------------------------------- 
T 

При использовании DBA/ALL вы должны фильтровать ВЛАДЕЛЬЦА в ВЕРХНИЙ.

Например,

SQL> show user 
USER is "SYS" 
SQL> SELECT table_name FROM dba_tables WHERE OWNER='LALIT'; 

TABLE_NAME 
-------------------------------------------------------------------------------- 
T 
+2

Почему бы просто не использовать 'user_tables' вместо этого? У обычных пользователей не будет доступа к 'dba_tables' в любом случае –

+0

hmm ... Обновлено ... Надеюсь, теперь это имеет больше смысла. –

Смежные вопросы