доступ к таблице плана из другой схемы

#oracle #optimization

#Oracle #оптимизация

Вопрос:

У меня нет доступа к обновлению или вставке к определенной схеме. Я хочу иметь возможность запускать свой анализатор в одном регионе и размещать план в другом. Итак, что-то вроде этого:

Область 1 — это место, где находятся таблицы. Region2 — это место, где у меня есть доступ к таблице планов.

Я хочу запустить sql, подобный explain plan, В region2.plan_table для выбора * из region1.sometable

Но когда я выполняю приведенное выше утверждение, оно говорит, что region2.plan_table не существует.

Но если я сделаю это: alter session set current_schema=region2; выберите * из plan_table

Я вижу данные!

Есть мысли? Спасибо, Саро

Комментарии:

1. Какую версию Oracle вы используете? Что SELECT object_name, object_type, owner where object_name = 'PLAN_TABLE' возвращает? Последние версии Oracle по умолчанию и многие системы до того, как он стал стандартным, создавали центральную PLAN_TABLE , предоставляли доступ к этой таблице PUBLIC и создавали для нее общедоступный синоним. Я не уверен, что последний запрос фактически выбирает из таблицы REGION2 схемы, а не из общедоступного синонима.

2. Я использую 11g. Последний запрос наверняка выбирается из region2, потому что у меня была только одна запись, и я ее вставил. В вашем выборе отсутствует имя таблицы. Не уверен, что туда поместить. Спасибо

3. Извините, я имел в виду выбрать из ALL_OBJECTS . Как вы вставили 1 строку в REGION2.PLAN_TABLE ? Вы уверены, что не вставляли данные в общедоступный синоним?

4. Я получаю: PLAN_TABLE СИНОНИМ ОБЩЕДОСТУПНОЙ ТАБЛИЦЫ PLAN_TABLE SCGFAD Первое, что я сделал, это изменил сеанс:alter session set current_schema=E517518; а затем я запустил запрос, обращающийся к схеме таблиц. выберите * из SCGFAD.Currencies; ВЫБЕРИТЕ PLAN_TABLE_OUTPUT ИЗ ТАБЛИЦЫ(DBMS_XPLAN.DISPLAY()); Это вернуло мне правильные значения. Если я не введу оператор alter, он не будет работать.