DB_LINKを使用して、別のデータベースのテーブルデータに直接アクセスします

DBLINKの役割:データベースへのクロスドメインアクセス、対応するデータベーステーブルに直接アクセスでき、バックアップ中にデータベーステーブルを直接移行できます

DBLINKステートメントの作成:

CREATE [SHARED] [PUBLIC]データベースリンクlink_name
  [CONNECT TO [user] [current_user] IDENTIFIED BY password] 
  [AUTHENTICATED BY user IDENTIFIED BY password] 
  [USING'connect_string ']

public:publicは、作成されたdblinkのすべてのユーザーを使用できることを意味します。dblinkの接続ユーザーにselect any table権限がある場合、すべてのユーザーがdblinkの任意のテーブルにアクセスでき、作成されたユーザーのみがパラメーターなしで使用できます。

データベースにDBLINKがあることを確認してください

select owner,object_name from dba_objects where object_type='DATABASE LINK';

または

select * from dba_db_links;

DBLINKを作成する権限があるかどうかを確認してください

例としてscottユーザーを取り上げます

select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='scott';

クエリがデータを返さない場合は、sysまたはシステムユーザーのログインを使用して権限を付与します

grant create public database link to scott;

DBLINKを作成する

testlinkという名前のリンクを作成します。対応するデータベースはユーザー名scott、パスワードは123456です。

1.データベース構成ファイルtnsnames.oraには、データベースエイリアスorcl(ユーザー名:scott、パスワード:123456)があります。

         

           作成方法は次のとおりです。使用時にエイリアスを直接使用します。

create public database link testlink connect to scott identified by '123456' USING 'ORCL'

2.データベース構成ファイルtnsnames.oraに対応するデータベースエイリアスがありません:orcl(ユーザー名:scott、パスワード:123456)

           作成方法は以下のとおりです。使用する場合は、対応するデータベースのIPアドレスを入力してください。

create database link 'linkname' connect to scott identified by '123456'
  using '(DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVICE_NAME = orcl)
                )
              )';

対応するDBLINKを削除します

drop databse link testlink
drop public databse link testlink

対応するDBLINKを使用します

ローカルデータベース内の別のデータベースのstudentテーブルにアクセスするには、ステートメントは次のとおりです。他のtestlinkはDBLINKの名前であり、他のDML操作は同じです。対応するテーブル名の代わりにstudent @testlinkを使用してください。

select * from student@testlink

1.挿入

insert into student@testlink values('id','name');

2.変更

update student@testlink set name='name' where id='id';

3.削除

delete from student@testlink where id='id';

対応するDBLINKの同義語を作成します。使いやすく、DBLINKの名前を人々に知らせることはできません。

create synonym student for student@testlink;

DQLおよびDMLステートメントの実行では、student @tesklinkの代わりにstudentを直接使用できます。

select * from student;
insert into student values('id','name');
delete from student where id='id';
create synonym student for student;

 

おすすめ

転載: blog.csdn.net/springlan/article/details/106293124