Синтаксис Oracle для создания ссылки базы данных, находящейся в собственности другого пользователя

Maven загружает все зависимости в папку .m2/repository в домашнем каталоге пользователя (то есть C:\users\[your user name]\.m2\repository в Windows. Когда вы удаляете эту папку, Maven создает папку и загружает зависимости для проектов, которые вы строите, с этого момента). .

Если вы хотите изменить папку на другой каталог, вы можете поместить файл конфигурации Maven settings.xml в каталог .m2. Пример файла можно найти в вашем дистрибутиве Maven в conf. Затем найдите запись localRepository, которая должна быть закомментирована следующим образом:

<!-- localRepository
 | The path to the local repository maven will use to store artifacts.
 |
 | Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->

Активируйте ее, установите желаемый путь, например, заставьте Maven загрузить зависимости в D:\myMavenRepository и установить ее. до

<localRepository>D:/myMavenRepository</localRepository>
7
задан Jeff 12 June 2009 в 18:25
поделиться

2 ответа

Ограничения на DBLinks - Вы не можете создать ссылку на базу данных в схеме другого пользователя, и вы не можете квалифицировать dblink с именем схемы.

9
ответ дан 6 December 2019 в 08:45
поделиться

Сатья прав в том, что синтаксис CREATE DATABASE LINK не позволяет создать ссылку на базу данных в другой схеме. ОДНАКО ...

ВОЗМОЖНОЕ РЕШЕНИЕ

Возможно создать ссылку на базу данных в схеме другого пользователя, если другой пользователь имеет СОЗДАТЬ ССЫЛКУ БАЗЫ ДАННЫХ привилегия, а пользователь, с которым вы подключены, имеет привилегию CREATE ANY PROCEDURE .

Вот обходной путь, который я использую:

    create procedure anotheruser."tmp_doit_200906121431"
    is
    begin
      execute immediate '
        create database link remote_db_link 
        connect to remote_user 
        identified by remote_password 
        using ''remote_db'' ';
    end;
    /
    begin
      anotheruser."tmp_doit_200906121431";
    end;
    /
    drop procedure anotheruser."tmp_doit_200906121431"
    /

Давайте раскрутим его. Сначала я создаю процедуру в схеме anotherusers ; эта процедура содержит оператор CREATE DATABASE LINK , который я хочу запустить.

Когда процедура выполняется, она запускается как владелец процедуры, так что оператор CREATE DATABASE LINK выполняется другим пользователем .

Имя процедуры не имеет значения, за исключением того, что мне нужно убедиться, что оно не конфликтует с любое существующее имя объекта. Я использую строчные буквы (заключаю имя процедуры в двойные кавычки), использую «tmp», чтобы пометить этот объект как «временный», и использую текущий yyyymmddhh24miss как часть имени процедуры. (Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

Имя процедуры не имеет значения, за исключением того, что мне нужно убедиться, что оно не конфликтует с каким-либо существующим именем объекта. Я использую строчные буквы (заключаю имя процедуры в двойные кавычки), использую «tmp», чтобы пометить этот объект как «временный», и использую текущий yyyymmddhh24miss как часть имени процедуры. (Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

Имя процедуры не имеет значения, за исключением того, что мне нужно убедиться, что оно не конфликтует с каким-либо существующим именем объекта. Я использую строчные буквы (заключаю имя процедуры в двойные кавычки), использую «tmp», чтобы пометить этот объект как «временный», и использую текущий yyyymmddhh24miss как часть имени процедуры. (Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

t конфликтует с любым существующим именем объекта. Я использую строчные буквы (заключаю имя процедуры в двойные кавычки), использую «tmp», чтобы пометить этот объект как «временный», и использую текущий yyyymmddhh24miss как часть имени процедуры. (Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

t конфликтует с любым существующим именем объекта. Я использую строчные буквы (заключаю имя процедуры в двойные кавычки), использую «tmp», чтобы пометить этот объект как «временный», и использую текущий yyyymmddhh24miss как часть имени процедуры. (Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

(Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

(Обычно я запускаю запрос DBA_OBJECTS, чтобы проверить, что соответствующее имя_объекта не существует.)

Для функции администратора «одноразового» типа это жизнеспособный обходной путь. Я предпочитаю это другой альтернативе: сохранение пароля другого пользователя, изменение пароля, подключение в качестве пользователя и сброс пароля другого пользователя обратно на сохраненный.)

15
ответ дан 6 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: