求助,如何在兩個ORACLE資料庫中,同步結構相同的表的資料

2021-04-19 06:41:31 字數 4442 閱讀 2650

1樓:匿名使用者

最好的辦法就是用db_link 加物化檢視來實現資料同步。

當然還有像 oracle stream 和 gloden gate來實現同步,不過這兩個用在這裡有點大材小用了!

2樓:匿名使用者

同步的頻率是多少?

兩地網路互通?

可以建立dblink

然後 訪問 table_name@dblink

如何實現兩個oracle資料庫的資料同步?

3樓:匿名使用者

為方便完成指定資料表的同步操作,可以採用dblink與merge結合的方法完成。

62616964757a686964616fe4b893e5b19e31333337613762

操作環境: 此資料庫伺服器ip為192.168.

196.76,有center與branch兩個庫,一般需要將center的表資料同步到branch,center為源庫,branch為目標庫,具體步驟如下:

1.在源庫建立到目標庫的dblink

create database link branch     --輸入所要建立dblink的名稱,自定義

connect to dbuser identified by 「password」  --設定連線遠端資料庫的使用者名稱和密碼

using '192.168.196.76/branch';  --指定目標資料庫的連線方式,可用tns名稱

在建立dblink時,要注意,有時候可能會報使用者名稱和密碼錯誤,但實際上我們所輸入的賬戶資訊是正確的,此時就注意將密碼的大小寫按伺服器上所設定的輸入,並在賬號密碼前號加上雙引號(伺服器版本不同造成的)。

2.成功後驗證dblink

select * from tb_bd_action@branch; --查詢建立好的brach庫

正常情況下,如果建立dblink成功,可採用該方式訪問到遠端資料庫的表.

3.通過merge語句完成表資料同步

此例中需要將center庫中的tb_sys_sqlscripe表同步到branch,簡單的語法如下:

merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk)  --從center將表merge到branch,同步的依據是兩個表的pk

when matched then  update set b.sqlscripe=c.sqlscripe,b.

author=c.author  --如果pk值是相同則將指定表的值更新到目標表

when not matched then   --如果pk值不一至,則將源表中的資料整條插入到目標表中

insert values (c.pk, c.fk, c.

createtime, c.lastmodifytime,c.author,c.

module,c.deleteflag, c.scripttype);

commit;               --記得merge後必須commit,否則更改未能提交

4.為方便每次需要同步時自動完成同步工作,可將該語句做成儲存過程或指令碼來定時執行或按要求手動執行,簡單說一下建立指令碼的方法:

a.建立merge資料夾

b.先將merge語句寫完整後,存到merge.sql檔案中

c.新建merge.bat檔案,編輯後寫入以下內容

sqlplus user/password@serverip/database @"%cd%\merge.sql"

4樓:千鋒教育

datagurd:

主要備來

庫的方式,就是資料庫對自資料庫的備bai份方式,主要是解決容災的。du

流復zhi制:

主要是利用oracle的歸檔日誌,dao進行增量備份來實現的,不僅可以配置只複製某些表,還可以配置僅複製某些表上的ddl或dml。可以複製到表,使用者,資料庫級別。

高階複製:

主要是基於觸發器的原理來觸發資料同步的,因此,高階複製無法實現使用者,資料庫級別的物件複製,只能做些表、索引和儲存過程的複製。

5樓:王蘆詩涵

1、首先在抄oracle_b上做dblink連線oracle_a2、然後

襲做個儲存過程

大致bai如下:

1、找到table_db主鍵,duselect 主鍵 from table_db@dblink minus select table_db from table_db找到差異zhi資料

2、然後插入到oracle_b,再寫個daojob.定時執行這個儲存過程

6樓:匿名使用者

--建立連結伺服器

exec sp_addlinkedserver 'itsv ', ' ', 'sqloledb ', '遠端伺服器名或ip地址 '

exec sp_addlinkedsrvlogin 'itsv ', 'false ',null, '使用者名稱 ', '密碼 '

--查詢示例

select * from itsv.資料庫名.dbo.表名

--匯入示例

select * into 表 from itsv.資料庫名.dbo.表名

--以後不再使用時刪除連結伺服器

exec sp_dropserver 'itsv ', 'droplogins '

--連線遠端/區域網資料(openrowset/openquery/opendatasource)

--1、openrowset

--查詢示例

select * from openrowset( 'sqloledb ', 'sql伺服器名 '; '使用者名稱 '; '密碼 ',資料庫名.dbo.表名)

--生成本地表

select * into 表 from openrowset( 'sqloledb ', 'sql伺服器名 '; '使用者名稱 '; '密碼 ',資料庫名.dbo.表名)

--把本地表匯入遠端表

insert openrowset( 'sqloledb ', 'sql伺服器名 '; '使用者名稱 '; '密碼 ',資料庫名.dbo.表名)

select *from 本地表

--更新本地表

update b

set b.列a=a.列a

from openrowset( 'sqloledb ', 'sql伺服器名 '; '使用者名稱 '; '密碼 ',資料庫名.dbo.表名)as a inner join 本地表 b

on a.column1=b.column1

--openquery用法需要建立一個連線

--首先建立一個連線建立連結伺服器

exec sp_addlinkedserver 'itsv ', ' ', 'sqloledb ', '遠端伺服器名或ip地址 '

--查詢

select *

from openquery(itsv, 'select * from 資料庫.dbo.表名 ')

--把本地表匯入遠端表

insert openquery(itsv, 'select * from 資料庫.dbo.表名 ')

select * from 本地表

--更新本地表

update b

set b.列b=a.列b

from openquery(itsv, 'select * from 資料庫.dbo.表名 ') as a

inner join 本地表 b on a.列a=b.列a

--3、opendatasource/openrowset

select *

from opendatasource( 'sqloledb ', 'data source=ip/servername;user id=登陸名;password=密碼 ' ).test.dbo.

roy_ta

--把本地表匯入遠端表

insert opendatasource( 'sqloledb ', 'data source=ip/servername;user id=登陸名;password=密碼 ').資料庫.dbo.

表名select * from

7樓:匿名使用者

可以用treesoft, 資料定時同步,資料維護功能都具備。

8樓:

執行定時的 exp 資料庫a, 然後 imp 資料庫b

oracle資料庫,不同的資料庫,如何把表結構相同的資料從一個資料庫中匯入至另一個資料庫?

9樓:白羊

這個是可以的,不過要有許可權,首先建立一個dblink,讓資料庫可以互相關聯,假設要把a使用者的a表資料複製給b使用者b表就讓b賦予連線a的許可權,然後寫sql語句:insert into b.b (select * from a.

a);  這樣就可以了。

如何在兩個戀人中選擇,如何在兩個戀人中選擇?

可見,兩個人都不適合你,前女友是因為距離的問題,你覺得她似乎成長了,那是她沒有天天在你的身邊,因為距離產生美。在身邊的,你又覺得幼稚,不夠懂事。都是勉為其難的感情,長遠來說,如果是奔著結婚去的戀情物件,顯然兩人都不太滿 你的意 從你的表達和描述中,感覺到的。以上只是個人看法,如果有什麼說得不好的地方...

Excel如何在資料表中提取,同時滿足兩個條件不重複的多個值,使用函式

在sheet2的c4單元格中輸入公式 index sheet1 e e,small if sheet1 d 3 d 30 a4 sheet1 b 3 b 30 b4 row 3 30 4 8 row a1 公式輸入結束後按 組合鍵 確認,再將公式下拉填充。說的太籠統,通常情況下按你的描述應該使用su...

如何在中插入兩個圈中間一點,如何在word中插入兩個圈中間一點

選中要加上帶圈的文字,然後單擊 格式 中文版式 帶圈字元 命令,在出現的 帶圈字元 對話方塊中選擇好 樣式 及 圈號 型別,單擊 確定 按鈕即可。 漢虹彩 輸入發 軟鍵盤 特殊字元 帶雙圈字元 在word文件編輯時如何將字元加上兩個圓圈? 可以實現的 本來想文字描述呢,但是這裡帶圈的字貼上不進來,所...