db link oracle что это

Db link oracle что это

Use the CREATE DATABASE LINK statement to create a database link. A database link is a schema object in one database that enables you to access objects on another database. The other database need not be an Oracle Database system. However, to access non-Oracle systems you must use Oracle Heterogeneous Services.

Oracle Database Development Guide for information about accessing remote tables or views with PL/SQL functions, procedures, packages, and data types

Oracle Database Administrator’s Guide for information on distributed database systems

ALTER DATABASE LINK for information on altering a database link when the password of a connection or authentication user changes.

DROP DATABASE LINK for information on dropping existing database links

INSERT, UPDATE, DELETE, and LOCK TABLE for using links in DML operations

To create a private database link, you must have the CREATE DATABASE LINK system privilege. To create a public database link, you must have the CREATE PUBLIC DATABASE LINK system privilege. Also, you must have the CREATE SESSION system privilege on the remote Oracle Database.

Oracle Net must be installed on both the local and remote Oracle Databases.

Specify SHARED to create a database link that can be shared by multiple sessions using a single network connection from the source database to the target database. In a shared server configuration, shared database links can keep the number of connections into the remote database from becoming too large. Shared links are typically also public database links. However, a shared private database link can be useful when many clients access the same local schema, and therefore use the same private database link.

In a shared database link, multiple sessions in the source database share the same connection to the target database. Once a session is established on the target database, that session is disassociated from the connection, to make the connection available to another session on the source database. To prevent an unauthorized session from attempting to connect through the database link, when you specify SHARED you must also specify the dblink_authentication clause for the users authorized to use the database link.

Oracle Database Administrator’s Guide for more information about shared database links

Specify PUBLIC to create a public database link visible to all users. If you omit this clause, then the database link is private and is available only to you.

The data accessible on the remote database depends on the identity the database link uses when connecting to the remote database:

If you omit both of those clauses, then the database link connects to the remote database as the locally connected user.

Specify the complete or partial name of the database link. If you specify only the database name, then Oracle Database implicitly appends the database domain of the local database.

The maximum number of database links that can be open in one session or one instance of an Oracle RAC configuration depends on the value of the OPEN_LINKS and OPEN_LINKS_PER_INSTANCE initialization parameters.

Restriction on Creating Database Links

«References to Objects in Remote Databases» for guidelines for naming database links

«RENAME GLOBAL_NAME Clause» (an ALTER DATABASE clause) for information on changing the database global name

The CONNECT TO clause lets you specify the user and credentials, if any, to be used to connect to the remote database.

If the database link is used directly rather than from within a stored object, then the current user is the same as the connected user.

CREATE FUNCTION for more information on invoker-rights functions

user IDENTIFIED BY password

You can specify this clause only if you are creating a shared database link—that is, you have specified the SHARED clause. Specify the username and password on the target instance. This clause authenticates the user to the remote server and is required for security. The specified username and password must be a valid username and password on the remote instance. The username and password are used only for authentication. No other operations are performed on behalf of this user.

USING ‘ connect string ‘

Specify the service name of a remote database. If you specify only the database name, then Oracle Database implicitly appends the database domain to the connect string to create a complete service name. Therefore, if the database domain of the remote database is different from that of the current database, then you must specify the complete service name.

Oracle Database Administrator’s Guide for information on specifying remote databases

Defining a Public Database Link: Example

The following statement defines a shared public database link named remote that refers to the database specified by the service name remote :

This database link allows user hr on the local database to update a table on the remote database (assuming hr has appropriate privileges):

Defining a Fixed-User Database Link: Example

In the following statement, user hr on the remote database defines a fixed-user database link named local to the hr schema on the local database:

After this database link is created, hr can query tables in the schema hr on the local database in this manner:

User hr can also use DML statements to modify data on the local database:

Defining a CURRENT_USER Database Link: Example

The following statement defines a current-user database link to the remote database, using the entire service name as the link name:

The user who issues this statement must be a global user registered with the LDAP directory service.

You can create a synonym to hide the fact that a particular table is on the remote database. The following statement causes all future references to emp_table to access the employees table owned by hr on the remote database:

Источник

Русские Блоги

1. Определение dblink

Ссылка базы данных dblink (ссылка на базу данных), как следует из названия, является ссылкой на базу данных. Когда мы хотим получить доступ к данным в другой таблице базы данных в локальной базе данных, мы должны создать dblink удаленной базы данных в локальной базе данных. • Через dblink локальная база данных может получить доступ к локальной базе данных. База данных получает доступ к данным в таблице удаленной базы данных. Короче говоря, это доступ к данным в таблице в другой базе данных в текущей базе данных.

2. Краткое описание dblinkКак создать

① Пройдено pl/sql developer Графическое создание

② Передать sql Создание заявления

создать ссылку на базу данных имя ссылки

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

③ Создано оператором sql (аналогично методу ②, но этот метод лучше, избегая локальной конфигурации)

создать ссылку на базу данных имя ссылки

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

using ‘(DESCRIPTION =(ADDRESS_LIST =

(PROTOCOL = TCP) (HOST = IP-адрес сервера, на котором расположена база данных, которая будет подключена) (PORT = 1521)))

(SERVICE_NAME = имя локальной службы подключаемой базы данных (то есть SID подключаемой базы данных)))) ‘;

Примечания: После использования содержимое файла tnsnames.ora находится в папке C: \ DevSuiteHome1 \ network \ ADMIN. Получается конкретное содержимое внутри, а не используемый псевдоним. Этот метод лучше, чем описанный выше, и не требует локальных имен tns. файл ora и поместите базу данных напрямую, что более гибко.

3. Подробная авторизация

① Сначала определите, есть ли у пользователя разрешение на создание dblink:

select * from user_sys_privs where privilege like upper(‘%DATABASE LINK%’);

Разрешения для пользователя моих приложений:

объяснять:

CREATE PUBLIC DATABASE LINK: указывает, что все пользователи созданной dblink могут использовать

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

Читайте также:  что делать если onetap v3 крашит

DROP PUBLIC DATABASE LINK: указывает, что всех пользователей созданной dblink можно удалить

② Если указанный пользователь не имеет нескольких вышеперечисленных разрешений, вам необходимо предоставить разрешения через пользователя sys (он действует как администратор и имеет большие разрешения). Вам необходимо войти в систему под пользователем sys и выполнить следующую инструкцию под sys пользователь:

4. Некоторые рутинные операции.

1. Метод получения данных из подключенной базы данных после успешного подключения

выберите * from table_name (имя таблицы) @dblink (имя dblink);

2. Просмотрите все файлы в текущей базе данных. DBLINK Методы

3. Удалить указанный в текущей базе данных DBLINK Методы

① Если вы создаете общедоступный DBLINK, вам необходимо использовать его при удалении

Удалить ссылку на общедоступную базу данных dblink (имя dblink)

② Если вы создаете частный DBLINK, вам нужно использовать его при удалении

Удаление ссылки на базу данных dblink (имя dblink)

4. На заметку

Учетная запись, которая создает ссылку на базу данных, должна иметь системные полномочия CREATE DATABASE LINK или CREATE PUBLIC DATABASE LINK;

Учетная запись, используемая для входа в удаленную базу данных, должна иметь разрешение CREATE SESSION.

V. Конкретный рабочий процесс

1. Требуются две учетные записи

пользователь приложений, пароль: apps

основной пользователь, пароль: 1234

2. Пользовательские приложения (существующие пользователи), создайте основного пользователя (необходимо создать в sys user) пользователя

create user core identified by 1234

3. Предоставьте основные разрешения на вход в систему (вам необходимо назначить разрешения в sys user)

grant create session to core

4. Проверьте, есть ли у пользователя приложения разрешение на создание dblink.

select * from user_sys_privs where privilege like upper(‘%DATABASE LINK%’) ;

Получите следующие разрешения:

5. Сначала создайте таблицу в основной таблице и вставьте данные.

Создайте студенческий стол:

create table student

( STUDENT_NO VARCHAR2(10) not null,

Вставьте данные в таблицу учеников:

Вставить в значения учеников (‘s001’, ‘ ‘, 23, ‘ ‘);

Вставить в значения NT ученика (‘s002’, ‘ ‘, 23, ‘ ‘);

Вставить в значения учеников (‘s003’, ‘ ‘, 25, ‘ ‘);

Вставить в значения учеников (‘s004’, ‘ ‘, 20, ‘ ‘);

6. Просмотрите таблицу учеников в основном пользователе.

7. Создайте dblink в приложениях и выполните

create public database link link2

connect to core identified by «1234»

8. Просмотрите таблицу учеников в основном пользователе в приложении пользователя.

Вы можете увидеть таблицу учеников в ядре

Источник

Связь базы данных Oracle (database link) — это одностороннее соединение локальной базы данных с удаленной базой данных. Связь всегда односторонняя. Пользователи удаленной базы не могут применять ее для подключения к локальной базе — вместо этого они должны создать отдельную связь базы данных.

Database Link (cвязь) базы данных позволяет получать доступ к разным базам данных через учетную запись пользователя удаленной базы; вы сами не обязаны быть зарегистрированным пользователем удаленной базы данных. Привилегии в этой базе данных будут идентичны привилегиям пользовательской учетной записи, которая применялась для создания связи. Связи баз данных удобны, когда необходимо запросить таблицу в распределенной базе данных, или даже вставить данные из таблицы другой базы в собственную локальную таблицу. Связи баз данных позволяют пользователям обращаться к множеству баз данных как к единой логической базе данных.

Создавать можно приватные и общедоступные связи баз данных. Далее мы рассмотрим соответствующие примеры.

Создание приватной связи базы данных

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

После создания связи пользователь SYSTEM может выполнять запросы к таблице hr.employees в удаленной базе данных.

На заметку! Для создания связи базы данных пользователь должен иметь привилегию CREATE PRIVATE DATABASE LINK или CREATE PUBLIC DATABASE LINK в локальной базе данных

Обратите внимание, что в предыдущем операторе имя связи удаленной базы данных — MONITOR — совпадает с TNS-псевдонимом удаленной базы (псевдонимом Oracle Net Service), но вообще может быть любым, по вашему усмотрению. Конструкция CONNECT TO. IDENTIFIED BY означает, что пользователь этой связи базы данных применяет указанное имя и пароль для входа на удаленную базу данных. Конструкция USING ‘monitor’ просто специфицирует TNS-псевдоним удаленной базы данных.

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

Создание общедоступной связи базы данных

Общедоступная связь базы данных позволяет любому пользователю или любому модулю программы PL/SQL обращаться к объектам удаленной базы данных. Оператор создания такой связи очень похож на оператор создания приватной связи. К оператору CREATE DATABASE LINK просто добавляется ключевое слово PUBLIC :

Совет. Если нескольким пользователям требуется доступ к удаленной базе данных Oracle из локальной, можно создать общедоступную связь. В противном случае создавайте приватную связь базы данных, которая позволяет обращаться к объектам удаленной базы данных только владельцу.

На заметку! Пользователь tester может обращаться к удаленной базе, даже не будучи ее зарегистрированным пользователем, потому что применяет общедоступную связь, что избавляет его от необходимости указывать комбинацию имени и пароля пользователя hr для доступа к объектам удаленной базы. Разумеется, с точки зрения безопасности общедоступная связь базы данных — не слишком хорошая идея, особенно с точки зрения аудиторов базы данных.

Использование Database Control для создания связей баз данных

С помощью OEM Database Control очень легко создать связь базы данных. Для этого на домашней странице Database Control нужно щелкнуть на вкладке Administration (Администрирование), а затем на ссылке Database Links (Связи базы данных) в группе Schema (Схема). На этой странице можно создать связь базы данных, ответив на несколько простых вопросов.

Источник

Русские Блоги

Введение в Oracle dblink

Введение в Oracle dblink

Когда пользователь хочет получить доступ к данным в другой таблице базы данных в локальной базе данных, удаленная база данных должна быть создана в локальной базе данных. DBLINK, по DBLINK К данным в таблице удаленной базы данных можно получить доступ как к локальной базе данных. на самом деле, DBLINK И в базе VIEW Почти создать DBLINK Когда вам нужно знать базу данных для чтения IP адрес, ORACLE_SID И имя пользователя и пароль базы данных.

в Создайте До DBLINK обычный Пользователь должен иметь связанные с разрешение Способность Создайте DBLINK, Чтобы SYS Пользователь входит в локальную базу данных Вы можете увидеть соответствующие разрешения :

SELECT * FROM USER_SYS_PRIVS T WHERE T.PRIVILEGE LIKE UPPER(‘%LINK%’);

[email protected]> SELECT * FROM USER_SYS_PRIVS T WHERE T.PRIVILEGE LIKE UPPER(‘%LINK%’);

GRANT CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK TO SCOTT;

База данных запросов DBLINK можно использовать SQL Утверждение: SELECT * FROM DBA_DB_LINKS 。

CREATE PUBLIC DATABASE LINK

DBL_BJLHR CONNECT TO SCOTT IDENTIFIED BY TIGER USING ‘TNS_BJLHR’;

среди них, DBL_BJLHR Создано DBLINK Имя, SCOTT/TIGER Пользователь вошел в удаленную базу данных имя/ пароль , Затем перейдите в локальную базу данных DBLINK Доступ к удаленной базе данных “TNS_BJLHR” в SCOTT.TB_TEST Таблица ,SQL Утверждение выглядит следующим образом :

CREATE DATABASE LINK DBL_BJLHR

CONNECT TO SCOTT IDENTIFIED BY TIGER

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.10)(PORT = 1521))

Кроме того, когда Параметры базы данных GLOBAL_NAMES за TRUE Когда имя ссылки на базу данных совпадает с именем удаленной базы данных 。 Глобальное имя базы данных можно найти с помощью следующей команды :

SELECT * FROM GLOBAL_NAME;

Используйте следующий оператор, чтобы изменить значение параметра:

ALTER SYSTEM SET GLOBAL_NAMES=FALSE/TRUE;

Когда параметр базы данных GLOBAL_NAMES за FALSE В настоящее время имя связи с базой данных не обязательно должно совпадать с именем удаленной базы данных.

[email protected]> create database link sh.prod2_2 connect to sh identified by sh using ‘PROD2’;

Database link created.

[email protected]> COL DB_LINK FORMAT A10

[email protected]> COL USERNAME FORMAT A10

[email protected]> select * from dba_db_links d WHERE D.db_link LIKE ‘%PROD2_2%’;

Читайте также:  что делает вахтер на вахте

OWNER DB_LINK USERNAME HOST CREATED

SYS SH.PROD2_2 SH PROD2 15-DEC-17

[email protected]> create database link prod2 connect to sh identified by sh using ‘PROD2’;

Database link created.

[email protected]> drop database link sh.PROD2;

drop database link sh.PROD2

ORA-02024: database link not found

11.4.2 Экзаменационный вопрос OCM
1. Create DBLINK
1.1 Create DBLINK, should query on the PROD2 database all the table under the system user in the PROD1 Database.

1. Create Synonym
1.1 Create a [email protected] on the public synonyms in the PROD2, requires that all users can access.

Заголовок требует, чтобы все таблицы под системным пользователем в базе данных PROD1 можно было запрашивать в базе данных PROD2, а синоним [email protected] можно было создать в prod2:
create public database link PROD1 connect to system identified by oracle using ‘PROD1’;
create public synonym sy_ss for [email protected];

Позволяет запрашивать удаленные таблицы и выполнять удаленные программы.

2 、 настроить database link Что нужно подтвердить перед тем:

Подтвердить от local database Чтобы remote database Сетевое соединение S в норме, tnsping Чтобы быть успешным.

Подтверждено в remote database Соответствующие права доступа указаны выше.

3 、 database link классификация :

Создайте database link из user Владеть database link

Public из database link Это уровень базы данных, все пользователи в локальной базе данных с разрешениями на доступ к базе данных или pl/sql Программа может использовать это database link Для доступа к соответствующей удаленной базе данных.

Global из database link Уровень сети, When an Oracle network uses a directory server, the directory server automatically create and manages global database links (as net service names) for every Oracle Database in the network. Users and PL/SQL subprograms in any database can use a global link to access objects in the corresponding remote database.

Note: In earlier releases of Oracle Database, a global database link referred to a database link that was registered with an Oracle Names server. The use of an Oracle Names server has been deprecated. In this document, global database links refer to the use of net service names from the directory server.

4 、 Создайте dblink Необходимые разрешения

CREATE DATABASE LINK

Creation of a private database link.

CREATE PUBLIC DATABASE LINK

Creation of a public database link.

Creation of any type of database link.

1. Если вам нужно создать глобальный DBLink, вы должны убедиться, что у пользователя есть разрешение на создание dblink:

Если нет, вам нужно использовать роль sysdba для расширения возможностей пользователя:

2. Используйте этого пользователя для входа в PL / SQL и используйте команду:

Графический интерфейс конфигурации выглядит следующим образом:

5. Создавайте и удаляйте синонимы.

6. Создавайте и удаляйте представления.

Создать DBLink очень просто, но блокировка существует в фоновом режиме и используется. Вы можете проверить блокировку в консоли, чтобы просмотреть или запросить базу данных. Каждый раз, когда вы используете dblink для запроса, он создает соединение с удаленной базой данных. Dblink не должен автоматически освобождать это соединение. Если вы используете dblink для большого количества запросов, количество подключений для веб-проекта будет недостаточным, что приведет к сбоям в нормальной работе системы и Нормальной работы нет.

Функция: база данных Oracle на нескольких серверах в разных местах логически рассматривается как одна база данных, что означает, что объекты в другой удаленной базе данных могут работать в одной базе данных. Чтобы
грамматика:
CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING ‘connect_string’;
DROP [PUBLIC] DATABASE LINK dblink;
Примечание. У вас должны быть разрешения CREATE DATABASE LINK или CREATE PUBLIC DATABASE LINK (может быть назначено как sys), а также разрешения для базы данных, к которой вы хотите подключиться.
grant CREATE DATABASE LINK to hr;

Описание параметра:
Dblink: имя созданной вами ссылки на базу данных,
Пользователь и пароль: имя пользователя и пароль подключаемой базы данных.
Connect_string: это может быть имя службы, настроенное Net Manager (tnsnames.ora) и протестированное для подключения, но также более прямое использование строки в tnsnames: (DESCRIPTION =

(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) )

Через SHOW PARAMETER GLOBAL_NAMES вы можете увидеть, является ли его значение FALSE или TRUE.

1) В случае GLOBAL_NAMES = FALSE имя DBLINK можно настроить, и соответствующий процесс выглядит следующим образом:
Реализуйте соединение локальной базы данных с удаленным сервером базы данных:
Удаленный сервер необходимо настроить для мониторинга и запуска.
Локальный сервер должен быть настроен с tnsnames

Осуществите подключение к базе данных удаленного сервера на локальном сервере:

SQL> CREATE DATABASE LINK LinkRemoteTestDB CONNECT TO hr IDENTIFIED BY hr USING ‘test’;

Database link created.

Конечно, вы также можете написать строку подключения напрямую
SQL>create database link LinkRemoteTestDB2 connect to hr identified by hr
using ‘TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)’;
Затем создается ссылка LinkRemoteTestDB с пользователем hr и база данных TEST.

3. Используйте ссылку базы данных, чтобы запросить информацию таблицы testdblink в удаленной схеме HR.
SQL> select * from [email protected] ;

2) В случае GLOBAL_NAMES = TRUE имя ссылки на базу данных (DATABASE LINK) должно совпадать с именем базы данных:
Выполните следующую инструкцию на локальном сервере, чтобы GLOBAL_NAMES = TRUE:
SQL>ALTER SYSTEM SET GLOBAL_NAMES=TRUE;
При повторном запросе будут следующие ошибки:
SQL> select * from [email protected] ;
select * from [email protected]
*
ERROR at line 1:
ORA-02085: database link LINKREMOTETESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM
connects to TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM

Войдите в удаленную базу данных и выполните
SQL> SELECT * FROM GLOBAL_NAME; получить полное имя своей базы данных TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
В исходном варианте SQL> СОЗДАТЬ ССЫЛКУ БАЗЫ ДАННЫХ LinkRemoteTestDB CONNECT TO hr IDENTIFIED BY hr USING’test ‘; процесс создания не пойдет неправильно, но реализация «select * from

[email protected] ; «, ORA-02085: появится ссылка на базу данных LINKREMOTETESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM
Подключается к TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM неправильно
Итак, вам нужно создать DBLINK следующим образом:
SQL> create database link TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to HR identified by HR using ‘TEST’;

Связь с базой данных создана. Выполнить снова.
SQL> select * from [email protected] REGRESS.RDBMS.DEV.US.ORACLE.COM ;

SQL> UPDATE [email protected] t set t.name=’WatsonModified’ where >

DBLINK другие связанные знания:
1. Просмотреть все ссылки на базу данных
SQL>select owner,object_name from dba_objects where object_type=’DATABASE LINK’;
SQL>select * from dba_db_links;

2. Удалите соединение с базой данных.
SQL> drop database link LinkRemoteTestDB;

Database link dropped.

Использование ссылки на базу данных
Базовая грамматика
CREATE [SHARED][PUBLIC] database link link_name

[CONNECT TO [user][current_user] IDENTIFIED BY password]
[AUTHENTICATED BY user IDENTIFIED BY password]
[USING ‘connect_string’]
Описание:
1) Полномочия: учетная запись, которая создает ссылку на базу данных, должна иметь системные полномочия CREATE DATABASE LINK или CREATE PUBLIC DATABASE LINK, а учетная запись, используемая для входа в удаленную базу данных, должна иметь полномочия CREATE SESSION. Оба эти разрешения включены в роль CONNECT (разрешения CREATE PUBLIC DATABASE LINK находятся в DBA). Ссылка на общедоступную базу данных доступна всем пользователям в базе данных, а частная ссылка доступна только для пользователя, который ее создал. Один пользователь не может авторизовать ссылку на частную базу данных для другого пользователя. Ссылка на базу данных может быть публичной или частной.
2) ссылка: когда база данных GLOBAL_NAME = TRUE на стороне источника, имя ссылки должно совпадать с именем глобальной базы данных удаленной базы данных (global_name); в противном случае ее можно назвать произвольно.

3) Current_user использует эту опцию для создания dblink глобального типа. Если в распределенной системе несколько баз данных. Если вы хотите использовать одно и то же имя в каждой базе данных для доступа к базе данных a, вы должны создать db_link для базы данных a в каждой базе данных, что слишком сложно. Так что теперь есть такая возможность. Вам нужно создать его только один раз. Доступ ко всем базам данных можно получить с помощью этой db_link. Чтобы использовать эту функцию, у вас должен быть сервер имен Oracle или сервер каталогов ORACLE. И параметр global_names = true базы данных a. Я его специально не создавал, и такой среды нет.
4) connectstring: строка подключения, строка подключения к удаленной базе данных определена в tnsnames.ora или может быть напрямую указана при создании dblink.
5) логин, пароль: логин и пароль удаленной базы данных. Если не указано, текущее имя пользователя и пароль используются для входа в удаленную базу данных.При создании подключенного пользователя dblink, если используется аутентификация по словарю данных, имя пользователя и пароль обеих баз данных должны быть согласованы.
Описание опции создания ссылки на базу данных

Читайте также:  какой код нужен в майнкрафте чтобы я оказался в городе

Ценность Описание

Не указывать Значение по умолчанию устанавливает выделенное соединение, и каждый локальный сеанс, использующий ссылку на базу данных, соответствует удаленному сеансу базы данных.
SHARED Создайте соединение с общей базой данных и одновременно укажите базу данных link_authentication.
Использование связи с общей базой данных означает, что база данных будет ограничивать количество подключений к удаленной базе данных, чтобы избежать слишком большого количества подключений, вызывающих слишком большую нагрузку на удаленную базу данных. При использовании ссылки на общую базу данных соединение с ссылкой на базу данных будет отключено от локального соединения после подключения.Чтобы предотвратить использование этой ссылки неавторизованными сеансами, при создании ссылки на общую базу данных необходимо указать базу данных link_authentication.
(from Oracle document: A shared database link is a link between a local server process and the remote database. The link is shared because multiple client processes can use the same link simultaneously.)

Как использовать ссылку на базу данных

Ценность Описание

Не указывать Значение по умолчанию устанавливает ссылку на частную базу данных.
PUBLIC Общедоступное соединение, это соединение может быть доступно для всех пользователей данных

Метод аутентификации пользователя связи с базой данных Ценность Описание

Не указывать По умолчанию используется метод аутентификации подключенного пользователя.
CONNECT TO CURRENT_USER Возьмите метод проверки CURRENT_USER
CONNECT TO user_name IDENTIFIED BY password Принять метод проверки фиксированного пользователя

Пример создания ссылки на базу данных

SQL Statement Connects To Database Connects As Link Type

CREATE database link
sales.us.americas.acme_auto.com USING ‘sales_us’;
sales using net service name sales_us Connected user Private connected user
CREATE database link foo
CONNECT TO CURRENT_USER USING
‘am_sls’;
sales using service name am_sls Current global user Private current user
CREATE database link
sales.us.americas.acme_auto.com
CONNECT TO scott IDENTIFIED
BY tiger USING ‘sales_us’;
sales using net service name sales_us scott using password tiger Private fixed user
CREATE PUBLIC database link
sales CONNECT TO scott
IDENTIFIED BY tiger USING ‘rev’;
sales using net service name rev scott using password tiger Public fixed user
CREATE SHARED PUBLIC database link
sales.us.americas.acme_auto.com
CONNECT TO scott IDENTIFIED
BY tiger AUTHENTICATED BY
anupam IDENTIFIED BY bhide USING ‘sales’;
sales using net service name sales scott using password tiger, authenticated as anupam using password bhide Shared public fixed user

delete from link$ where owner#=user_id and name=dblink_name

Конечно, напрямую манипулировать словарем данных опасно, поэтому перед продолжением лучше сделать резервную копию.

Используйте dblink для выполнения ddl

Мы знаем, что любой оператор ddl не может быть выполнен непосредственно в dblink, пример следующий

SQL> drop table [email protected]_CONNECTED_HR;
drop table [email protected]_CONNECTED_HR
*
ERROR at line 1:
ORA-02021: DDL operations are not allowed on a remote database

SQL> exec [email protected](‘drop table db_test ‘)
PL/SQL procedure successfully completed.

SQL> desc db_test;
ERROR:
ORA-04043: object db_test does not exist

Ограничения dblink
You cannot perform the following operations using database links:
Grant privileges on remote objects
Execute DESCRIBE operations on some remote objects. The following remote objects, however, do support DESCRIBE operations:
Tables
Views
Procedures
Functions
Analyze remote objects
Define or enforce referential integrity
Grant roles to users in a remote database
Obtain nondefault roles on a remote database. For example, if jane connects to the local database and executes a stored procedure that uses a fixed user link connecting as scott, jane receives scott’s default roles on the remote database. Jane cannot issue SET ROLE to obtain a nondefault role.
Execute hash query joins that use shared server connections
Use a current user link without authentication through SSL, password, or NT native authentication

Ошибка при удалении ссылки на базу данных: ORA-02024: ссылка на базу данных не найдена

1. Подтвердите, является ли ссылка на базу данных общедоступной ссылкой на базу данных, если это так, она не обязательно должна быть владельцем этой dblink, да
Вы можете удалить, если у вас достаточно прав.

2. Если это ссылка на частную базу данных, вам необходимо удалить ее владельцем, иначе будет сообщено об ошибке.

Ошибка удаления Dblink ORA-02024: ссылка на базу данных не найдена, решение

Друг сказал удалить DBLINK Ошибка: ORA-02024: database link not found 。

в Metalink Найти на 2 Статьи, связанные с этой ошибкой:

Cannot drop a database link after changing the global_name ORA-02024 [ID 382994.1]

ORA-02024: Database Link Not Found [ID 1058949.1]

В двух статьях говорится о 2 Эта ситуация.

Продемонстрируем эту ситуацию.

SQL> conn system/admin;

SQL> create database link dave connect to system identified by admin using ‘

4 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.100)(PORT = 1521))

7 (SERVICE_NAME = newccs)

Ссылка на базу данных создана.

DBLINK Чтобы создать это произведение, обратитесь к описанию официального сайта:

CREATE DATABASE LINK

— Посмотреть подтверждение dblink

SQL> alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;

Разговор был изменен.

SQL> select * from all_db_links;

OWNER DB_LINK USERNAME HOST CREATED

SYSTEM DAVE SYSTEM 2011-01-23 21:17:31

— Удалим не того владельца

SQL> drop public database link dave;

drop public database link dave

Первый 1 Ошибка линии :

ORA-02024: Ссылка на базу данных не найдена

— Удалить с правильным пользователем

SQL> drop database link dave;

Ссылка на базу данных удалена.

Взглянем на абзац на официальном сайте:

The maximum number of database links that can be open in one session or one instance of an Oracle RAC configuration depends on the value of the OPEN_LINKS and OPEN_LINKS_PER_INSTANCE initialization parameters.

Global_name По db_name.db_domain составляют.

DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME,SERVICE_NAMES И описание параметров мониторинга

CREATE DATABASE LINK

open_links_per_instance с open_links Параметр Описание

Давайте посмотрим на пример:

SQL> show parameter global_names

global_names boolean FALSE

SQL> select * from global_name;

SQL> create database link dave connect to system identified by admin using ‘newccs’;

Ссылка на базу данных создана.

SQL> select * from dba_db_links;

OWNER DB_LINK USERNAME HOST CREATED

SYSTEM DAVE SYSTEM newccs 2011-01-23 21:45:41

Здесь стоит отметить одну вещь: я создал это здесь dblink Используется имя слушателя: newccs. dba_db_links В таблице host Отображается название монитора. В первом примере я создал dblink Записывается с помощью команд, в этом случае host Пусто.

Сначала проверьте global_name Проблемы, которые вступают в силу после изменения.

SQL> select * from global_name;

SQL> alter database rename global_name to newccs.tianlesoftware.com;

База данных была изменена.

SQL> select * from global_name;

SQL> alter database rename global_name to newccs;

База данных была изменена.

SQL> select * from global_name;

— Здесь это не действует.

SQL> drop database link dave;

drop database link dave

Первый 1 Ошибка линии :

ORA-02024: Ссылка на базу данных не найдена

Из вышеуказанной операции подтверждается, что если только пройдено alter Команда, невозможно сделать global_name Восстановлено до первоначального значения. И когда global_name После изменения существующие dblink Его нельзя удалить.

SQL> update props$ set value$ = » where name =’GLOBAL_DB_NAME’;

SQL> conn / as sysdba;

SQL> update props$ set value$ = ‘NEWCCS’ where name =’GLOBAL_DB_NAME’;

Затем переключитесь на dblink Пользователи, удалите dblink :

SQL> conn system/admin;

SQL> drop database link dave;

Ссылка на базу данных удалена.

Если вы по-прежнему сообщаете об этой ошибке, вы можете обновить ее три раза shared pool , В исполнении drop команда:

alter system flush SHARED_POOL;

alter system flush SHARED_POOL;

alter system flush SHARED_POOL;

Cannot drop a database link after changing the global_name ORA-02024 (Doc ID 382994.1)

Источник

Сказочный портал