Что такое dblink в oracle
Specify SHARED to use a single network connection to create a public database link that can be shared among multiple users. При использовании SHARED необходимо указывать параметр dblink_authentication .
4- Oracle Synonym
Synonym можно перевести как "Единообразный объект" для определенного объекта. Если вы не хотите добавлять @dblinkName при доступе в объект через Database link, вы можете создать Synonym для того объекта.
Create database link - создание связей на примерах
Создавать можно приватные и общедоступные связи баз данных. Далее мы рассмотрим соответствующие примеры.
3- Доступ к объектам через Database Link
После того как у вас есть Database Link, вы можете получить доступ к объектам в Database2 через Database Link.
Создание общедоступной связи базы данных
Общедоступная связь базы данных позволяет любому пользователю или любому модулю программы PL/SQL обращаться к объектам удаленной базы данных. Оператор создания такой связи очень похож на оператор создания приватной связи. К оператору CREATE DATABASE LINK просто добавляется ключевое слово PUBLIC :
Совет. Если нескольким пользователям требуется доступ к удаленной базе данных Oracle из локальной, можно создать общедоступную связь. В противном случае создавайте приватную связь базы данных, которая позволяет обращаться к объектам удаленной базы данных только владельцу.
Как только общедоступная связь MONITOR создана, любой пользователь может с ее помощью входить в удаленную базу. В следующем примере пользователь tester применяет общедоступную связь для выполнения запросов к удаленной базе MONITOR .
USING 'connect string'
Укажите имя службы удаленной базы данных. Если указать только имя базы данных, то 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.
After you have created a database link, you can use it in SQL statements to refer to tables, views, and PL/SQL objects in the other database by appending @ dblink to the table, view, or PL/SQL object name. You can query a table or view in the other database with the SELECT statement. You can also access remote tables and views using any INSERT , UPDATE , DELETE , or LOCK TABLE statement.
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
Oracle Database Reference for descriptions of existing database links in the ALL_DB_LINKS , DBA_DB_LINKS , and USER_DB_LINKS data dictionary views and for information on monitoring the performance of existing links through the V$DBLINK dynamic performance view
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 specify CONNECT TO user IDENTIFIED BY password , then the database link connects with the specified user and password.
If you specify CONNECT TO CURRENT_USER , then the database link connects with the user in effect based on the scope in which the link is used.
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.
Use only ASCII characters for dblink . Multibyte characters are not supported. The database link name is case insensitive and is stored in uppercase ASCII characters. If you specify the database name as a quoted identifier, then the quotation marks are silently ignored.
If the value of the GLOBAL_NAMES initialization parameter is TRUE , then the database link must have the same name as the database to which it connects. If the value of GLOBAL_NAMES is FALSE , and if you have changed the global name of the database, then you can specify the global name.
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
You cannot create a database link in another user's schema, and you cannot qualify dblink with the name of a schema. Periods are permitted in names of database links, so Oracle Database interprets the entire name, such as ralph.linktosales , as the name of a database link in your schema rather than as a database link named linktosales in the schema ralph .
"References to Objects in Remote Databases" for guidelines for naming database links
Oracle Database Reference for information on the GLOBAL_NAMES , OPEN_LINKS , and OPEN_LINKS_PER_INSTANCE initialization parameters
"RENAME GLOBAL_NAME Clause" (an ALTER DATABASE clause) for information on changing the database global name
CONNECT TO Clause
The CONNECT TO clause lets you specify the user and credentials, if any, to be used to connect to the remote database.
Specify CURRENT_USER to create a current user database link . The current user must be a global user with a valid account on 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.
When executing a stored object (such as a procedure, view, or trigger) that initiates a database link, CURRENT_USER is the name of the user that owns the stored object, and not the name of the user that called the object. For example, if the database link appears inside procedure scott.p (created by scott ), and user jane calls procedure scott.p , then the current user is scott .
However, if the stored object is an invoker-rights function, procedure, or package, then the invoker's authorization ID is used to connect as a remote user. For example, if the privileged database link appears inside procedure scott.p (an invoker-rights procedure created by scott ), and user Jane calls procedure scott.p , then CURRENT_USER is jane and the procedure executes with Jane's privileges.
CREATE FUNCTION for more information on invoker-rights functions
user IDENTIFIED BY password
Specify the user name and password used to connect to the remote database using a fixed user database link . If you omit this clause, then the database link uses the user name and password of each user who is connected to the database. This is called a connected user database link .
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
The examples that follow assume two databases, one with the database name local and the other with the database name remote . The examples use the Oracle Database domain. Your database domain will be different.
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:
Using this fixed database link, user hr on the remote database can also access tables owned by other users on the same database. This statement assumes that user hr has the READ or SELECT privilege on the oe.customers table. The statement connects to the user hr on the local database and then queries the oe . customers table:
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:
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.
After you have created a database link, you can use it in SQL statements to refer to tables, views, and PL/SQL objects in the other database by appending @ dblink to the table, view, or PL/SQL object name. You can query a table or view in the other database with the SELECT statement. You can also access remote tables and views using any INSERT , UPDATE , DELETE , or LOCK TABLE statement.
Oracle Database Advanced Application Developer's 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
Oracle Database Reference for descriptions of existing database links in the ALL_DB_LINKS , DBA_DB_LINKS , and USER_DB_LINKS data dictionary views and for information on monitoring the performance of existing links through the V$DBLINK dynamic performance view
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 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 specify CONNECT TO user IDENTIFIED BY password , then the database link connects with the specified user and password.
If you specify CONNECT TO CURRENT_USER , then the database link connects with the user in effect based on the scope in which the link is used.
If you omit both of those clauses, then the database link connects to the remote database as the locally connected user.
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 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.
Use only ASCII characters for dblink . Multibyte characters are not supported. The database link name is case insensitive and is stored in uppercase ASCII characters. If you specify the database name as a quoted identifier, then the quotation marks are silently ignored.
If the value of the GLOBAL_NAMES initialization parameter is TRUE , then the database link must have the same name as the database to which it connects. If the value of GLOBAL_NAMES is FALSE , and if you have changed the global name of the database, then you can specify the global name.
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 You cannot create a database link in another user's schema, and you cannot qualify dblink with the name of a schema. Periods are permitted in names of database links, so Oracle Database interprets the entire name, such as ralph.linktosales , as the name of a database link in your schema rather than as a database link named linktosales in the schema ralph .)
"References to Objects in Remote Databases" for guidelines for naming database links
Oracle Database Reference for information on the GLOBAL_NAMES , OPEN_LINKS , and OPEN_LINKS_PER_INSTANCE initialization parameters
"RENAME GLOBAL_NAME Clause" (an ALTER DATABASE clause) for information on changing the database global name
CONNECT TO Clause
The CONNECT TO clause lets you specify the user and credentials, if any, to be used to connect to the remote database.
Specify CURRENT_USER to create a current user database link . The current user must be a global user with a valid account on 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.
When executing a stored object (such as a procedure, view, or trigger) that initiates a database link, CURRENT_USER is the name of the user that owns the stored object, and not the name of the user that called the object. For example, if the database link appears inside procedure scott.p (created by scott ), and user jane calls procedure scott.p , then the current user is scott .
However, if the stored object is an invoker-rights function, procedure, or package, then the invoker's authorization ID is used to connect as a remote user. For example, if the privileged database link appears inside procedure scott.p (an invoker-rights procedure created by scott ), and user Jane calls procedure scott.p , then CURRENT_USER is jane and the procedure executes with Jane's privileges.
CREATE FUNCTION for more information on invoker-rights functions
user IDENTIFIED BY password
Specify the user name and password used to connect to the remote database using a fixed user database link . If you omit this clause, then the database link uses the user name and password of each user who is connected to the database. This is called a connected user database link .
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
The examples that follow assume two databases, one with the database name local and the other with the database name remote . The examples use the Oracle Database domain. Your database domain will be different.
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:
Using this fixed database link, user hr on the remote database can also access tables owned by other users on the same database. This statement assumes that user hr has SELECT privileges on the oe.customers table. The statement connects to the user hr on the local database and then queries the oe . customers table:
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:
Связь базы данных Oracle (database link) — это одностороннее соединение локальной базы данных с удаленной базой данных. Связь всегда односторонняя. Пользователи удаленной базы не могут применять ее для подключения к локальной базе — вместо этого они должны создать отдельную связь базы данных.
2- Создать Database Link
Для начала, вам нужно понять о файле tnsnames.ora в Oracle.
tnsname.ora это файл описывающие базу данных Oracle, вы можете найти этот файл в папке установки Oracle.
- \product\12.1.0\dbhome_1\NETWORK\ADMIN
Ниже является изображение иллюстрирующее две системы баз данных Oracle находящиеся на 2 разных компьютерах.
Если информация описания Database2 объявлена в файле tnsname.ora в Database1, вы можете создать Database Link из Database1 в Database2 с более кратким синтаксисом.
CONNECT TO
Предложение позволяет подключиться к удаленной базе данных. Предложения CONNECT TO и dblink_authentication можно использовать только при создании общедоступного dblink, использую ключевое слово SHARED .
CURRENT_USER
Пользователь от имени которого создается database link . Этот пользователь должен должен быть глобальным с действующей учетной записью в удаленной базе.
Если использовать ссылку не из хранимого объекта oracle, непосредственно, то текущий пользователь будет назначен в качестве CURRENT_USER .
В случае вызова из хранимого объекта (процедуры, триггера) в качестве CURRENT_USER , будет указан создатель этого объекта.
Однако, если хранимый объект это invoker-rights функция, процедура или пакет, в качестве CURRENT_USER будет выступать вызывающий ее пользователь, а не создатель этого объекта.
user IDENTIFIED BY password
Имя пользователя и пароль для подключения к удаленной базе данных. Указание этого параметра определяет фиксированного пользователя для подключения ( fixed user database link ). Если параметр опущен будет использоваться имя и пароль пользователя который обращается к dblink, подключенный пользователь ( connected user database link ).
dblink_authentication
Укажите имя пользователя и пароль на целевом экземпляре. Это заявление проверяет подлинность пользователя на удаленном сервер и требуется для обеспечения безопасности. Указанное имя пользователя и пароль должен быть действительными на удаленном экземпляре. Имя пользователя и пароль используются только для проверки подлинности. Никакие другие операции не выполняются от имени этого пользователя.
dblink
Полная или частичная ссылка на базу данных. Если указать только имя базы, Oracle неявно выберет локальный домен для соединения.
GLOBAL_NAMES равное TRUE , требует равенства имен между объектом DATABASE LINK и подключаемой базой данных. Значение FALSE равенства не требует.
Количество открытых соединений dblink устанавливается параметрами инициализации OPEN_LINKS и OPEN_LINKS_PER_INSTANCE .
PUBLIC
Заявление указывает что нужно создать ссылку доступной для всех пользователей базы данных. Если заявление не указано то доступ к ссылке будет иметь только создавший ее пользователь.
PUBLIC
Заявление указывает что нужно создать ссылку доступной для всех пользователей базы данных. Если заявление не указано то доступ к ссылке будет иметь только создавший ее пользователь.
1- Что такое Database Link?
Database Link это объект в SCHEMA в Oracle, похож на мост для соединения с другой базой данных, помогающий вам иметь доступ к объектам другой базы данных.
Вы так же можете создать Database Link чтобы соединить Oracle к другому виду базы данных, как например MySQL, SQL Server, . в данном случае вам нужно использовать сервис Oracle Heterogeneous (Oracle Heterogeneous Service)
Создание приватной связи базы данных
Приватная связь базы данных принадлежит пользователю, который ее создал. В следующем операторе пользователь 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 попытается воспользоваться этой связью удаленной базы данных, произойдет следующее:
Использование Database Control для создания связей баз данных
С помощью OEM Database Control очень легко создать связь базы данных. Для этого на домашней странице Database Control нужно щелкнуть на вкладке Administration (Администрирование), а затем на ссылке Database Links (Связи базы данных) в группе Schema (Схема). На этой странице можно создать связь базы данных, ответив на несколько простых вопросов.
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи. Facebook
Читайте также: