Oracle 跨库 查询 复制表数据 分布式查询
方法一:
在眼下絕大部分數據庫有分布式查詢的須要。以下簡單的介紹怎樣在oracle中配置實現跨庫訪問。
比方如今有2個數據庫服務器,安裝了2個數據庫。數據庫server A和B。如今來實如今A庫中訪問B的數據庫。
第一步、配置Aserver端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),該文件存放的位置為:
$ORACLE_HOME/network/admin/tnsnames.ora
加入例如以下行,當中DBLINK為連接名(可自己定義),HOST和PORT為數據庫偵聽的IP及port,SERVICE_NAME為數據庫的SID,? MEDIADBLINK =? (DESCRIPTION =? (ADDRESS_LIST =? (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))? )? (CONNECT_DATA =? (SERVICE_NAME = db)? )? )?
第二步、在Aserver的一個庫中建立B的一個數據的DBLINK。語法例如以下:
運行例如以下查詢語句,當中MEDIADB為database link名(可自己定義),MEDIADBLINK為先前在tnsnames.ora中定義的連接名,? dbuser為username,password為密碼? -- Create database link? ? create database link MEDIADB? ? connect to dbuser identified by password? ? using 'MEDIADBLINK';?
第三步.使用鏈接的數據庫? 3.1 查詢、刪除和插入數據和操作本地的數據庫是一樣的。僅僅只是表名須要寫成“表名@database link名”,如? ? select * from table_name@MEDIADB ;? 3.2 也能夠為這個表創建一個同義詞? create synonym aaa for table_name@MEDIADB ;? 例如以下語句的效果和3.1中的一樣? select * from aaa;? 刪除同義詞的語句為? drop synonym aaa;?
select * from?tabname@dcmdb?where 1=1;
方法二:
首先創建數據庫鏈接:
CREATE PUBLIC DATABASE LINK 數據鏈名稱 CONNECT TO 登陸username IDENTIFIED BY password USING '(DESCRIPTION =
???? (ADDRESS_LIST =
?????? (ADDRESS = (PROTOCOL = TCP)(HOST = 對方Oracleserver的IP地址)(PORT = port號))
???? )
???? (CONNECT_DATA =
(SERVICE_NAME = 對方Oracleserver服務名)
???? )
?? )'?
當中 數據鏈名稱 為加入到本地Oracle數據庫控制臺(Oracle Enterprise Manager Console)樹節點的服務名
要查詢對方數據庫的表TableName語句例如以下:
SELECT 字段名 FROM TableName@數據鏈名稱;
復制表數據:
insert into 表名(字段名) (SELECT 字段名 FROM TableName@數據鏈名稱);
查看DBLINK:
select owner, db_link from dba_db_links;
刪除:?
drop database link dblink名稱
drop public database link dblink名稱
Oraclepassword的問題:
SQL> CREATE USER AAA IDENTIFIED BY 1;
CREATE USER AAA IDENTIFIED BY 1
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?*
ERROR 位于第 1 行:
ORA-00988: 缺少或無效口令
SQL> CREATE USER AAA IDENTIFIED BY"1";
用戶已創建
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。
轉載于:https://www.cnblogs.com/mengfanrong/p/4620933.html
總結
以上是生活随笔為你收集整理的Oracle 跨库 查询 复制表数据 分布式查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未捕获的异常 'NSInternalIn
- 下一篇: Week 10 homework