因为工作需要,今天需要将营业数据库里所有的数据同步到此吐矣闽措置处事器上。在做方案的时辰,想了良多体例,当然最快的法子仍是使用物理热备的体例。0 A. G j- e7 f* Z7 E
可是我小我认为如不美观对于中年夜型数据库(我们的数据库有300G摆布)最佳的选择仍是使用SnapShot体例,即快照的体例。
: [& A3 v, @7 j, O) `: K' _ Oracle数据库的快照是一个表,它包含有对一个当地或远程数据库上一个或多个表或视图的发芽的结不美观。也就是说快照根柢的事理就是将当地或远程数据库上的一个发芽结不美观保留在一个表中。& N; m3 V- V0 z( E/ e+ p2 [
以下是我成立的Snapshot,目的是年夜营业数据库年夜将数据Copy处措置数据库上,是分歧的两个处事器之间对数据copy。1 b$ Z8 {$ H; j! k2 l
第一步:在措置处事器上的Oracle终端,成立database link,营业数据库处事器SID为TEST
: W1 n- R* E; b+ g3 l8 ? create database link TEST_DBLINK.US.ORACLE.COM f2 w7 j5 s/ ?. A' F5 \
connect to AMICOS identified by AMICOS
: X+ d3 t. t$ v0 y% V: R using ’test’;
8 h% y% s+ K% `: |+ J) e 第二步:在营业数据库上对应的表成马上照日志
2 C2 t7 b# c) w5 t2 K Create snapshot log on A_Table;% z1 J. ^1 l& x# V4 v, g% }
第三步:成立Snapshot 快照名称为:Test_SnapShot
% W3 }# [! ?: Y T Create snapshot Test_SnapShot' k; M8 f6 I% k) ?# A
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
! f5 m$ [' p( Q% G: [% N as select * from A_Table@TEST_DBLINK
$ P7 D( k. ?- N' y( X2 F$ |+ D. m/ t 声名:REFRESH是刷新体例* e0 m& }& y# }) C! J
刷新体例有:COMPLETE和FAST两种,而START WITH是声名起头执行的时刻。
7 y6 o2 T2 V0 ` Next是下次执行的时刻
, f- V, O1 ]$ C4 l' c 而AS往后是组成快照的发芽体例。
0 w( m" i5 b. C4 F 相关的体例:& Q0 ^: x% m; |3 b7 ~- c% S
更改快照* o, n1 h0 ^- k( ]7 A. |/ {" Q
ALTER SNAPSHOT Test_SnapShot
5 R C' W, a9 i, | REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;3 l8 s7 Z" Z p2 I7 e2 T* u5 U6 F
手动刷新快照 在呼吁界面执行:
1 L! s; C: P9 g1 C- I a" Z" d EXEC DBMS_SNAPSHOT.REFRESH(’Test_SnapShot ’,’C’);8 d% x; V7 ^/ t4 ~( e$ G
第一个参数是要刷新的快照名$ [: S) ^9 R. e2 e/ j) T, q
第二个参数是刷新的体例,F----FAST, C---COMPLETE
* F5 W1 ~' d4 w2 k 查看快照最后刷新的日期$ C4 S0 g X- P {) B& a
SELECT NAME,LAST_REFRESH
2 ]6 m/ X5 A/ I3 |2 S4 F1 E' r FROM ALL_SNAPSHOT_REFRESH_TIMES;
( Y; Y7 v8 y6 H- }. f 清算最后很是的方案:+ D I& s$ O2 c# y+ r5 X
1:为需要做Snapshot的表成立Snapshot日志
# Y2 J) Z( b$ m1 M! j' I- J: Q create snapshot log on t1 with rowid; 这里使用ROWID成立日志的参数3 e) B" g; }! r0 R# G$ B
2:采用Fast的体例成马上照,使用rowid做为参考参数. D* ]. A A( |6 T
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
2 D6 ?+ U$ }, a- w9 [* r8 |* Z 最好能按照rowid来成马上照。要否则就必需要为表成立Primary Key。 |