Экспорт или импорт пакетов от других пользователей - PullRequest
0 голосов
/ 16 мая 2019

У меня проблемы с экспортом или импортом пакета (включая тело) от другого пользователя (пользователя, который не подключен) через командную строку.Каков наилучший способ исправить это.Я могу просмотреть пакет через Oracle SQL Developer, в пакете Другой пользователь.Но я хочу выполнить это в командной строке.

Пока я пытаюсь экспортировать пакет, я пытаюсь использовать следующую команду, к сожалению, это не экспорт пакетов от других пользователей.

SET HEAD OFF
SET ECHO OFF
SET FEED OFF
SET TERM OFF
SET LINE 1500
SET NEWPAGE NONE
set pagesize 0
SPOOL C:\app\export\TEST.SQL
PROMPT CREATE OR REPLACE
select trim(text) from user_source
where name='USR_RUNNER' AND type='PACKAGE';
SPOOL OFF

Выше будут получать пакеты только от текущего пользователя, а не от других пользователей.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Используйте ALL_OBJECTS вместо USER_SOURCE для просмотра результатов для всех схем, к которым у вашего пользователя есть доступ. Вы также, вероятно, захотите использовать DBMS_METADATA.GET_DDL вместо того, чтобы пытаться создать DDL самостоятельно со словарем данных. Воссоздание объектов может быть чрезвычайно сложным, и DBMS_METADATA - лучший способ гарантировать, что вы правильно захватите объекты.

SET HEAD OFF
SET ECHO OFF
SET FEED OFF
SET TERM OFF
SET LINE 1500
SET NEWPAGE NONE
set pagesize 0
SET LONG 999999999
SPOOL C:\temp\TEST.SQL
select dbms_metadata.get_ddl('PACKAGE', object_name, owner) ddl
from all_objects
where owner = 'SOME_USERNAME'
    and object_type = 'PACKAGE'
order by owner, object_name;
SPOOL OFF

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

begin
    dbms_metadata.set_transform_param
    (
        dbms_metadata.session_transform, 'EMIT_SCHEMA', false
    );
end;
/
0 голосов
/ 16 мая 2019

Вы используете представление USER_SOURCE в своем запросе, вместо этого используйте ALL_SOURCE или DBA_SOURCE. Существует столбец ВЛАДЕЛЕЦ этих просмотров. Вы можете использовать его в фильтре вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...