Пакет Oracle 10g — UTL_MAIL

#oracle #email

Вопрос:

У меня возникли небольшие проблемы с пакетом UTL_MAIL в Oracle 10g, и мне было интересно, есть ли у кого-нибудь какие-либо решения?

Я подключаюсь к своей базе данных как системный пользователь и загружаю следующие два сценария;

@C:oracleproduct10.2.0db_1rdbmsadminutlmail.sql

@C:oracleproduct10.2.0db_1rdbmsadminprvtmail.plb

Я настроил SMTP-сервер;

ИЗМЕНИТЬ СИСТЕМНЫЙ НАБОР smtp_out_server=’mymailserver.fake:25′ ОБЛАСТЬ ДЕЙСТВИЯ=ОБА;

Я предоставляю пользователю необходимое разрешение;

ПРЕДОСТАВЬТЕ выполнение НА utl_mail МОЕМУ ПОЛЬЗОВАТЕЛЮ;

Но затем, если я подключусь к «MYTABLESPACE» (где существует МОЙ ПОЛЬЗОВАТЕЛЬ), я получу следующую ошибку, если сделаю ссылку на UTL_MAIL.SEND;

PLS-00201: идентификатор ‘UTL_MAIL.»ОТПРАВИТЬ» должно быть объявлено

Если я добавлю к нему префикс SYSMAN (SYSMAN.UTL_MAIL.SEND), это работает, но я не хочу этого делать, так как эта процедура, содержащая этот вызов, не знает табличного пространства, в котором установлены сценарии.

Есть ли способ установить эти сценарии так, чтобы они были доступны повсеместно и не требовали для выполнения префикса SYSMAN?

Овации,

Крис

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

1.в дополнение к добавлению PUBLIC синонима, желательно, чтобы вы установили его, используя SYSDBA , как советуют эксперты Oracle. Подробнее читайте здесь: dba-oracle.com/oracle_tips_10g_utl_mail.htm oracle-base.com/articles/10g/plsql-enhancements-10g#UTL_MAIL

Ответ №1:

Я почти уверен, что публичные синонимы будут единственной разницей.

 SELECT * FROM ALL_SYNONYMS WHERE OWNER = 'PUBLIC' and table_name LIKE 'UTL%'
 

подтвердит или опровергнет

Ответ №2:

Похоже, вам нужно создать ОБЩЕДОСТУПНЫЙ СИНОНИМ для пакета..

 CREATE PUBLIC SYNONYM UTL_MAIL FOR SYSMAN.UTL_MAIL;
 

Ответ №3:

попробуйте ALTER SYSTEM SET smtp_out_server='mymailserver.fake:25' SCOPE=BOTH; выполнить процедуру от имени пользователя, а не от имени системы.

т. е. подключитесь MYTABLESPACE as MYUSER и запустите сеанс изменения, надеюсь, все ясно

Ответ №4:

войдите в систему как sys и запустите сценарии