2013-06-26 8 views
0

Каков способ запроса нескольких баз данных с помощью SQL * Plus?Запросить несколько баз данных?

В MySQL это можно сделать что-то вроде этого:

create table WK_LINK_JOINT_IDEOREQ AS 
select k.constraint_name cn, k.table_name tl, l.column_name lc 
    , k.referenced_table_name tg, k.column_name cg, l.referenced_table_name td 
    , l.referenced_column_name cd 
    from information_schema.KEY_COLUMN_USAGE k 

Это просто пример, это не полный: а как вы можете видеть, мы работаем над двумя базами данных, INFORMATION_SCHEMA и другой.

Я хочу сделать что-то подобное с помощью SQL * Plus, но проблема в том, что при подключении с использованием SQL * Plus мы указываем базу данных (SID), что означает, что другие недоступны.

Есть ли способ сделать это?

+1

ma be helpfull http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_5005.htm –

+0

Предложение Йозефа верное - ссылки на базы данных - это механизм, который Oracle предоставляет для кросс-запросов к базе данных. – marceljg

ответ

1

Oracle имеет a different interpretation of DATABASE from MySQL. В Oracle у нас есть несколько пользователей или схемы в одной базе данных.

Итак, если вы действительно хотите получить доступ к объектам из другой схемы, все, что должно произойти, - это то, что эта схема предоставляет вам привилегии. Затем вы можете ссылаться на таблицы (или что-то еще) в вашем SQL.

JOE Пользователь предоставляет вам выбрать на столе

SQL> conn JOE/SOAP 
SQL> grant select on my_table to ABC; 

Вы можете выполнять запросы на нем:

SQL> conn ABC/DEF 
SQL> select * from joe.my_table; 

В вашем примере вы использовали INFORMATION_SCHEMA. Oracle эквивалент этого словаря данных, огромная библиотека представлений. Find out more.

Открытый доступ предоставляется по умолчанию для большинства из них. Таким образом, вы можете выбрать USER_TABLES, USER_CONSTRAINTS и USER_CONS_COLUMNS для повторного создания этого запроса (при условии, что я понял его правильно).

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