當前位置:首頁 » 編程語言 » sqlserver同步oracle

sqlserver同步oracle

發布時間: 2022-12-10 12:11:49

sqlserver資料庫與oracle資料庫實現數據同步

能實現,
sqlserver 到oracle可以用觸發器實現,前提是你需要先在sql server上創建到oracle的連接。
之後oracle 到外網你可用通過程序或別的方法實現。

② Etl工具將sqlserver數據同步到oracle設計說明

軟體說明



通過etl工具定時將SqlServer指定的表數據同步到oracle資料庫

在資料庫建立增刪改的觸發器。觸發器將變更放到臨時表裡。

通過etl工具讀取臨時表同步給oracle

優點:比較實時
缺點:影響到業務系統,因為需要在業務系統建立觸發器


實例說明:

例如在sqlserver有一張用戶表(sys_user)需定時同步oracle資料庫的用戶表,

包括新增、刪除、修改同步

給同步的表建三類觸發器:
insert觸發器:向表中插入數據時被觸發;
update觸發器:修改表中數據時被觸發;
delete觸發器:從表中刪除數據時被觸發。


以sqlserver的用戶表舉例,

Sqlserver的sys_user表,有兩個欄位id,name

具體流程:

以新增數據舉例

Ø 一、在sqlserver新建觸發器trigger_sysuser_insert

if (object_id('trigger_sysuser_insert') is not null)

drop trigger trigger_sysuser_insert

go

create trigger trigger_sysuser_insert

on sys_user --表名

for insert --插入後觸發

--instead of insert --插入前觸發,使用插入前觸發時,不執行默認插入

as


--開始執行邏輯

declare @id int, @name varchar(20);

select @id = id, @name = name from sys_user; -------------- inserted 存放了當前插入的值

--select @name,@age


---創建臨時表

if not exists (select * from sysobjects where id = object_id('##sys_user_insert')

and OBJECTPROPERTY(id, 'IsUserTable') = 1)

create table ##sys_user_insert

(

id int,

name varchar(32)

);


insert into ##sys_user_insert (id,name) values(@id,@name);

go



在sys_user新增數據時會被觸發,將新增的數據加入臨時表##sys_user_insert,此時

的臨時表 ##sys_user_insert會增加一條記錄


Ø 二、配置elt流程



節點1 從臨時表讀取數據,寫入數據流

節點2 從數據流獲取數據寫入oracle

節點3 從sqlserver的臨時表刪除已經被同步的記錄


Ø 三、建立作業調度

設置調度周期


適用增量數據同步

在要同步的源表裡有時間戳欄位,每當數據發生新增,時間戳會記錄發生變化的時間,etl工具根據時間范圍定時同步數據

優點:基本不影響業務系統
缺點:要求源表必須有時間戳這一列,適用增量場景,修改、刪除不太適用

定時清空oracle數據源,將sqlserver的數據全盤拷貝到oracle數據源。一般用於數據量不大,實時性要求不高的場景。

優點:基本不影響業務系統,開發、部署都很簡單
缺點:效率低


Etl流程

結論

准能現場數據同步,涉及增、刪、改的同步,比較適用觸發器的方式進行數據同步,但觸發器仍會存在失效的情況,若現場有數據質量系統,定期數據稽核,查缺補漏,保證兩邊資料庫的一致性;

③ 如何把sql server一張表的數據實時同步到Oracle資料庫

1. SQLSERVER伺服器上面安裝oracle客戶端,配置服務命名(假設為 test)
2. 在SQLSERVER伺服器上面建立鏈接伺服器,腳本如下

SQL code?
SQL code-- Adding linked server:

exec sp_addlinkedserver @server = 'test' ,
@srvproct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --資料庫用戶
@rmtpassword = 'password' --密碼
3. 建立一個作業,通過作業調度存儲過程,存儲過程使用類似的語句將oracle的數據插入到sqlserver表中

SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE數據是實時增加的,並且ORACLE記錄上有遞增的欄位,可以在SQLSERVER上面建立一個表記錄上次插入的id,然後下次可以從上次的ID+1開始繼續插入

SQL code?
insert into sqlserver表 select * from test..oracle表名 where id>@id
5. 防止sqlserver同步的時候oracle仍在不斷的插入,每次要取一個結束ID

SQL code?
select @endid=max(id) from test..oracle表名.

④ 如何把sql server一張表的數據實時同步到Oracle資料庫

如何把sql
server一張表的數據實時同步到oracle資料庫
1.
sqlserver伺服器上面安裝oracle客戶端,配置服務命名(假設為
test)
2.
在sqlserver伺服器上面建立鏈接伺服器,腳本如下
sql
code?
sql
code--
adding
linked
server:
exec
sp_addlinkedserver
@server
=
'test'
,
@srvproct
=
'oracle',
@provider
=
'msra',
@datasrc
=
'test'

⑤ 如何同步ORACLE和sqlserver的數據

有時由於項目開發的需要,必須將SQLServer2005中的某些表同步到Oracle資料庫中,由其他其他系統來讀取這些數據。不同資料庫類型之間的數據同步我們可以使用鏈接伺服器和SQLAgent來實現。假設我們這邊(SQLServer2005)有一個合同管理系統,其中有表contract 和contract_project是需要同步到一個MIS系統中的(Oracle9i)那麼,我們可以按照以下幾步實現資料庫的同步。
1.在Oracle中建立對應的contract 和 contract_project表,需要同步哪些欄位我們就建那些欄位到Oracle表中。
這里需要注意的是Oracle的數據類型和SQLServer的數據類型是不一樣的,那麼他們之間是什麼樣的關系拉?我們可以在SQLServer下運行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings

SELECT *
FROM msdb.dbo.sysdatatypemappings
來查看SQLServer和其他資料庫系統的數據類型對應關系。第一個SQL語句是看SQL轉Oracle的類型對應,而第二個表則更詳細得顯示了各個資料庫系統的類型對應。根據第一個表和我們的SQLServer中的欄位類型我們就可以建立好Oracle表了。

SQLServer和Oracle的對應

2.建立鏈接伺服器。我們將Oracle系統作為SQLServer的鏈接伺服器加入到SQLServer中。
具體做法參見我以前的文章http://www.cnblogs.com/studyzy/archive/2006/12/08/690307.html
3.使用SQL語句通過鏈接伺服器將SQLServer數據寫入Oracle中。
比如我們建立了鏈接伺服器MIS,而Oracle中在MIS用戶下面建立了表contract_project,那麼我們的SQL語句就是:
DELETE FROM MIS..MIS.CONTRACT_PROJECT
--清空Oracle表中的數據
INSERT into MIS..MIS.CONTRACT_PROJECT--將SQLServer中的數據寫到Oracle中
SELECT contract_id,project_code,actual_money
FROM contract_project

如果報告成功,那麼我們的數據就已經寫入到Oracle中了。用
SELECT *
FROM MIS..MIS.CONTRACT_PROJECT
查看Oracle資料庫中是否已經有數據了。
4.建立SQLAgent,將以上同步SQL語句作為執行語句,每天定時同步兩次。
這樣我們的同步就完成了。
這里需要注意的是MIS..MIS.CONTRACT_PROJECT 這里必須要大寫,如果是小寫的話會造成同步失敗。

⑥ 如何同步ORACLE和sqlserver的數據

有時候項目開發的需要,必須將sqlServer中的某縣表同步到Oracle資料庫匯總,有其他系統來讀取這些數據,不同資料庫類型之間的數據同步我們可以使用連接伺服器和sqlAgent來實現。加入我們澤凱有一個和聽合同管理系統,其中有表contract和contract_project是需要同步到一個MIS系統中的ORACLE,那麼我們可以按照以下步驟實現數據的同步
1.在oracle資料庫中建立對應的contract和contract_project表,需要同步那些數據欄位我們就建立那些欄位到oralce表中
需要注意哦的是oralce的數據類型和SQLServer的數據類型是不一樣的,那麼他們之間是什麼樣的關系,我們可以再sqlServer下運行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings

來查看sqlServcer和oralce資料庫的的類型類型對應
2.建立連接伺服器,我們將oralce系統作為SQLserver的鏈接伺服器加入到SQLserver中
有時候我們需要在sqlsercer下訪問另外一個sqlserver資料庫上的數據或者訪問其他oracel資料庫就上的數據嗎,想要完成這些操作,我首先要創建一個資料庫鏈接。
資料庫鏈接能夠讓本地的一個sqlservwer登錄用戶勇攝到遠程的一個資料庫伺服器上,並且像操作本地資料庫一樣,那麼怎樣創建資料庫鏈接?
創建一個sqlserver對應的oracle的資料庫鏈接,

⑦ 如何同步ORACLE和sqlserver的數據

1. 自己編程,或者第三方工具
2. 在sqlserver中,使用linkedserver,訪問oracle,然後編寫job什麼的進行數據同步
3. 在oracle中,使用透明網關,訪問sqlserver,進行數據同步。

⑧ SQL SERVER2012同步Oracle數據

我理解的是,你的需求是將oracle中變化的數據同步到sqlserver中。

我提供的解決方案是使用oracle的ogg,就是goldengate來實現。

首先,這個需求是跨庫跨平台的,一般sqlserver都裝在win上,而oracle都裝在linux上(當然,也有linux版的sqlserver,oracle也能裝在win上,但是實現的方法和結果是一樣的),但是對於ogg來講無所謂,ogg的特點就是可以跨庫跨平台跨版本來同步數據。

源端是oracle,目標端是sqlserver,可以使用11版本的ogg來同步數據,該版本功能夠用,bug也相對少了,我做運維也經常用。

使用ogg的注意事項如下:

  1. 源端oracle庫的同步表必須有主鍵。

  2. 源端oracle庫必須是force logging,必須開附加日誌。

  3. 初始化數據的時候,可以使用ogg自己的initload功能,省的還得用sqlserver的同步助手,費勁。

  4. oracle和sqlserver支持的欄位類型不要太特殊了,比如oracle的lob欄位,sqlserver的各種text欄位啥的,這些特有的欄位,ogg支持不是很好,而對於int、varchar等通用的欄位就沒問題了。

    最後,希望能幫到你,但是ogg這個東西對你來說可能是新的,所以你要用的話,得先學學,有問題可以問我。

⑨ 如何實現sqlserver中的部分表的數據定時同步到oracle

可以寫個客戶端同時連接2個db定時同步,這是最簡單的直觀的
因為數據量不多,所以不必考慮性能問題。
1
在sqlserver中建立linkedserver,
以便可以從sqlserver中直接訪問oracle。
2
在sqlserver中建立dts/ssis數據傳輸任務,並進行定數調度。

熱點內容
凸包的graham演算法 發布:2025-01-21 12:00:00 瀏覽:146
jsonobject轉java對象 發布:2025-01-21 12:00:00 瀏覽:306
macpython3默認 發布:2025-01-21 11:58:26 瀏覽:261
芒果伺服器是什麼意思 發布:2025-01-21 11:57:54 瀏覽:40
微信聊天伺服器錯誤什麼意思 發布:2025-01-21 11:56:13 瀏覽:460
linuxtomcat不能訪問 發布:2025-01-21 11:47:11 瀏覽:394
刷新器需要什麼配置 發布:2025-01-21 11:09:28 瀏覽:972
jedis源碼 發布:2025-01-21 11:08:24 瀏覽:890
edm資料庫 發布:2025-01-21 11:05:54 瀏覽:371
QQ咋樣加密 發布:2025-01-21 11:05:45 瀏覽:164