Фон:
2 хоста базы данных (с пользователями): DB1 (UserA), DB2 (UserA, UserB)
Ссылка на базу данных из DB1 , UserA , создан и отлично работает со следующим SQL
CREATE DATABASE LINK "DB_LINK"
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <DB2'S HOSTNAME>)(PORT = <PORT#>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DB2'S NAME>)
)
)';
, и он подключен к DB2, UserA , это одна и та же учетная запись.
Но в моем случае я хочу подключиться к другому пользователю БД ( UserB ) в приведенной выше ссылке на базу данных, попробовал какое-то предложение на Inte rnet, которое работает, но требует пароля User_b.
CREATE DATABASE LINK "DB_LINK"
CONNECT TO UserB IDENTIFIED by <pw>
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <DB2'S HOSTNAME>)(PORT = <PORT#>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DB2'S NAME>)
)
)';
Но в нашем случае мы хотим, чтобы соединение использовало аутентификацию Kerberos, поэтому мы попробовали другое предложение для подключения через UserA и пользовательской скобки к прокси в UserB, здесь у нас нет Пароль User_A в керберизованном виде, и мы используем кеш учетных данных для установления соединения. Итак, у нас нет UserA pw.
CREATE DATABASE LINK "DB_LINK"
CONNECT TO UserA[UserB] IDENTIFIED by <UserA's pw>
USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <DB2'S HOSTNAME>)(PORT = <PORT#>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DB2'S NAME>)
)
)';
Как подключиться к UserB без указания паролей?
Кроме того, разрешение было предоставлено
ALTER USER UserB GRANT CONNECT THROUGH UserA;