⑴ oracle資料庫數據同步問題。。。
給你提供一個辦法:
可以選擇使用具有」資料庫對象比較「功能的si
object
browser
v12。
1,把其中一個資料庫中的表復制,粘貼為與另一個資料庫表名一樣的新表。
2,將兩個資料庫進行全對象比較。
3,merge。
另外,這個工具是否可以跨資料庫進行表的復制,粘貼還沒有試過,你可以試一試。
⑵ 兩個oracle資料庫之間的數據同步
首先在ORACLE_B上做dblink連接ORACLE_A,然後做個
存儲過程
,大致如下:找到table_db
主鍵
,select
主鍵
from
table_db@dblink
minus
select
table_db
from
table_db找到差異數據,然後插入到oracle_b,再寫個job.定時執行這個存儲過程
⑶ 如何實現Oracle資料庫之間的數據同步
1.所謂的物化視圖,
2手工寫TRIGER,
3.通過ORACLE的CDC工具可以實現同步或者非同步的表的變化。
4。關於你說的表三和表一表二之間同步,俺沒有明白。猜測是對表一表二做ETL,然後放到表三中。只對增量進行抽取和轉換。如果是這樣。通過上面的一二三步之一後。對增量進行抽取和轉換。
ETL是個比較復雜也好玩的東西。多種方式可以實現,但是相互影響較大。容易顧此失彼。比如說管理和性能的平衡問題就是其中之一。
⑷ 如何實現oracle兩個資料庫之間的同步
為方便完成指定數據表的同步操作,可以採用dblink與merge結合的方法完成。
操作環境: 此資料庫伺服器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.mole,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"
⑸ 求助,如何在兩個ORACLE資料庫中,同步一個結構相同的表的數據
最好的辦法就是用DB_LINK
加物化視圖來實現數據同步。
當然還有像
ORACLE
STREAM
和
GLODEN
GATE來實現同步,不過這兩個用在這里有點大材小用了!
⑹ oracle資料庫同步
昏。樓上所說的所有方法,統統不適用於樓主的情況。
樓主你也是沒經驗吧。你要及時同步做什麼。你的測試伺服器不修改數據么?不修改表結構么?你修改了怎麼可能還從生產上同步過來。
最好最簡單的一種方法,就是邏輯導出和落導入。而且支持跨版本。
具體的方法就是,在你的生產資料庫上執行
exp userid=system/password file=exp.dmp log=exp.log statistics=none buffer=800000 full=y
這樣就生成了一個叫exp.dmp的導出文件。此時需要注意你的環境變數,包括NLS之類的。如果你懂了就看下一步,否則自己去研究一下。如果沒看清到時候出了亂碼別怪我。
把那個exp.dmp拷貝到你的測試伺服器上去,然後在同一個目錄下執行
imp userid=system/password file=exp.dmp log=imp.log statistics=none
buffer=800000 full=y
做完就可以了,你的測試庫就和生產庫同步了。相同用戶密碼一樣。
這才是最簡單最行之有效的資料庫同步辦法。
當然,如果是我我現在還喜歡用熱備份直接恢復。也很好很強大。可惜不能跨平台跨版本。
⑺ 如何實現兩個oracle資料庫實時同步
為方便完成指定數據表的同步操作,可以採用dblink與merge結合的方法完成。
操作環境: 此資料庫伺服器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.mole,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"