有個專案提出的需求是這樣的:部署兩個相同的資料庫應用a、b,兩個庫之間沒有網路連線,要定期把a庫里的資料複製到b庫。
要求:應用程式不做修改
實現增量資料更新(不能重複匯入)
我提出了使用dbms_logmnr分析歸檔日誌並redo變化的方案:
a庫上線前資料庫需要啟用歸檔日誌
每次同步資料時對a庫先執行一次日誌切換,然後拷貝歸檔日誌檔案,拷貝後刪除(最新生成的歸檔日誌檔案不要拷貝和刪除)
在b庫上使用dbms_logmnr分析歸檔日誌檔案並redo變化
因為網不通,手工拷貝檔案的工作不可避免,所以可以認為第1、2步為手工操作。第1步為上線前的資料庫準備,是一次性工作;第2、3步為週期性工作。
對於第3步,做了個簡單的實現:
在b庫機器上上規劃好目錄,這裡d:\logmine為主目錄,d:\logmine\redo_log存放從a庫拷貝來的歸檔日誌檔案。
在b庫上執行一次初始化物件指令碼:
[sql]view plain
copy
create
orreplace
directory logfilename_dir
as'd:\logmine\'
; grant
read
, write
ondirectory logfilename_dir
towxy;
conn user1/password1
begin
excute immediate 'create table logname_ext (logfile_name varchar2(300)) organization external (type oracle_loader default directory data_dir logfilename_dir location ('
'log_file_name.txt'
'))'
; exception when
others
then
if sqlcode = -955 then
-- 名稱已由現有物件使用
null
; else
raise;
endif;
end;
/ 要做的工作:
拷貝a庫歸檔日誌檔案到d:\logmine\redo_log
執行d:\logmine\create_ext_table.bat
刪除1步拷貝的歸檔日誌檔案
create_ext_table.bat
[plain]view plain
copy
echo off
dir /a-d /b /s d:\logmine\redo_log\*.log > d:\logmine\log_file_name.txt
sqlplus user1/password1 @d:\logmine\create_ext_table.sql
create_ext_table.sql
[sql]view plain
copy
begin
forx in(
select
logfile_name
from
logname_ext) loop
dbms_logmnr.add_logfile(x.logfile_name);
endloop;
end;
/ execute
dbms_logmnr.start_logmnr(options => dbms_logmnr.committed_data_only);
begin
forx in(
select
sql_redo
from
v$logmnr_contents
where
table_space !=
'system'
andinstr(sql_redo,
'"wxy".'
) > 0
order
bycommit_scn)
loop
execute
immediate x.sql_redo;
endloop;
end;
/ exit;
這只是個實驗,沒有經過嚴格的測試,考慮到異常捕獲和處理、資料量、系統負載、效能優化等等因素,能否應用於生產環境有待驗證。
使用dbms logmnr檢視日誌檔案
大多為了尋找被意外修改的資料或者那條sql修改了哪些資料 查詢v log和v logfile獲取相關資訊 執行exec dbms logmnr.add logfile log filename dbms logmnr.new exec dbms logmnr.start logmnr options...
資料分析四 回歸分析
回歸分析 統計學用來研究不確定性的基本手段 如何研究不確定性 分析業務 找出因變數y 找出x x y 表示不確定性 統計學 不準確 統計學就是研究不確定性 回歸分析是統計學中研究資料的基本手段。資料分析的第一步是回歸分析 回歸分析的第一步是分析業務,第二步是確定因變數y。回歸分析 把抽象的業務問題具...
JSON XML String轉換使用方法歸納總結
1 將字串轉換為json物件 string xml arr routepushservice lang zh cn id 10049361064088 mailno 444016153799 orderid 1559201775741808 accepttime 2019 10 18 18 30 0...