Як відобразити бази даних в Oracle 11g за допомогою SQL * Plus


79

За допомогою цієї команди show databases;я бачу бази даних у MySQL .

Як показати доступні бази даних в Oracle ?

Відповіді:


61

Ви можете уявити "базу даних" MySQL як схему / користувача в Oracle. Якщо у вас є привілеї, ви можете запитати DBA_USERSподання, щоб побачити список схем:

SELECT * FROM DBA_USERS;

21
Деякі бази даних Oracle мають багато користувачів без об’єктів. Для них, і альтернативою є ВИБІР ВИЗНАЧЕНОГО ВЛАСНИКА ВСІХ_ОБ’ЄКТІВ;
Gary Myers

1
+1 приємна альтернатива, лише майте на увазі, що якщо ви не є привілейованим користувачем і не видаєте цей запит, ви побачите лише тих ВЛАСНИКІВ, де у вас є привілеї принаймні на один із їх об’єктів.
dpbradley

5
Запит до DBA_USERS дає "ORA-00942: таблиця або подання не існує", можливо, питання дозволу? Той, що у коментарі "ВИБЕРИТЕ ВІДОМЛЕНОГО ВЛАСНИКА З ВСІХ_ОБ'ЄКТІВ;" працює з однаковими даними доступу. db 11g
a1

2
SELECT * FROM DBA_USERS;
Феліпе Августо,

95

SELECT NAME FROM v$database; показує ім'я бази даних в oracle


2
Я думаю, що саме це було питання. Або, принаймні, це те, про що я думаю, коли чую "базу даних" ... на відміну від схеми (або користувача).
Ренді Штегбауер

2
це повинна бути відповідь
Амея Дешпанде

Якщо, наприклад, ви запускаєте Oracle Database Express Edition, це друкує щось на зразок XE, тобто унікальне ім'я, яке однозначно ідентифікує ваш екземпляр / базу даних (це називається SID?). З іншого боку, show databasesкоманда MySQL друкує те, що MySQL називає базою даних aka schema (приблизно те, що ви отримуєте SELECT USERNAME FROM DBA_USERSв Oracle).
Альваро Гонсалес,

28

Oracle не має простої моделі бази даних, такої як MySQL або MS SQL Server. Я вважаю, що найближчим є запит до табличних просторів та відповідних користувачів у них.

Наприклад, у мене є таблична область DEV_DB із усіма моїми фактичними `` базами даних '' у них:

SQL> SELECT TABLESPACE_NAME FROM USER_TABLESPACES;

В результаті:

SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
DEV_DB

Також можна запитувати користувачів у всіх табличних просторах:

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS;

Або в межах певної табличної області (на прикладі моєї табличної області DEV_DB):

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS where DEFAULT_TABLESPACE = 'DEV_DB';

ROLES DEV_DB
DATAWARE DEV_DB
DATAMART DEV_DB
STAGING DEV_DB

14

Можливо, ви могли б використати цей погляд, але я не впевнений.

select * from v$database;

Але я думаю, що це покаже вам лише інформацію про поточну базу даних.

Інший варіант, якщо db працює в Linux ... це може бути приблизно так:

SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc

Перший не працює в 11g: "ORA-00942: таблиця або подання не існує"
a1,

2
Привіт @ a1an. Без сумніву, база даних v $ існує в 11g. Перевірте, чи виконуєте ви запит із достатніми правами. Тут ви маєте документацію про v $ database для oracle 11g. docs.oracle.com/cd/B28359_01/server.111/b28320/... Алго, ось у вас є допис із прикладом про використання бази даних v% в oracle 11g. neeraj-dba.blogspot.com.es/2011/10/… Удачі!
Джонатан,

2
Можливо, jsut проблема з дозволами, виконуючи її, як працює
sysdba

Гаразд @ a1an, просто надайте дозволи на вибір у цьому поданні. надати користувачеві вибір на базі даних v_ $; Зверніть увагу на підкреслення! v $ database є синонімом, і ви не можете надати proviledgest для синонімів (це може закінчитися помилкою ORA-02030).
Джонатан

1

Я не чітко про це, але зазвичай один сервер має одну базу даних (з великою кількістю користувачів), якщо ви створюєте багато баз даних, це означає, що ви також створюєте багато екземплярів, слухачів, .... Тож ви можете перевірити свійLISTENER щоб його ідентифікувати.

Під час тестування я створив 2 бази даних ( dbtestі dbtest_1), тому, коли я перевіряв свій статус LISTENER, він виглядав так:

lsnrctl status

....

СТАТУС СЛУХАЧА

.....

(ОПИС = (АДРЕСА = (ПРОТОКОЛ = tcp) (HOST = 10.10.20.20) (PORT = 1521)))

Підсумок послуг ...

Служба "dbtest" має 1 примірник (и).

Екземпляр "dbtest", статус ГОТОВИЙ, має 1 обробник (и) для цієї послуги ...

Служба "dbtest1XDB" має 1 примірник (и).

Екземпляр "dbtest1", статус ГОТОВИЙ, має 1 обробник (и) для цієї послуги ...

Послуга "dbtest_1" має 1 примірник (и).

Екземпляр "dbtest1", статус ГОТОВИЙ, має 1 обробник (и) для цієї послуги ... Команда успішно виконана

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.