什么是控制文件?
控制文件是Oracl
Oralce歸檔日志開啟與關閉示例?
該命令完成創建實例、安裝實例和打開數據庫這三個步驟。此時,數據庫將數據文件和重做日志文件聯機,并且通常請求一個或多個回滾段。此時系統可以看到StartupMount模式下的所有提示,也給出一個。
orcal歸檔數據庫存了哪些內容?
從orcal檔案庫數據清單下載的數據日志包括靜態和動態數據。要訪問這些數據,必須手動訪問。
生產線歷史數據歸檔是數據庫運維的一項日常基礎工作。設計表格時,數據流水表(如日志、用戶登錄歷史、軟件下載記錄、用戶屬性變化歷史表等。)通常被設計成范圍分區表和區間分區表(11G)。當數據超過業務需求的保留范圍時,基本上是靜態數據,應用程序不會再訪問,但由于一些特殊需求,可能需要手動查詢。在這種情況下,每個人都將其數據從生產庫歸檔到歷史庫,并對其進行壓縮和保存。如果超出了特殊要求的范圍,就直接導出壓縮到磁帶。
在Oracle數據庫中,表數據的歸檔有很多種,如exp/imp、expdp/impdp、表空間傳輸等等,在日常的數據庫維護中可能會用到。這些工具的用法這里就不展開了。讓讓我們進入今天的題目,用存儲過程歸檔生產線歷史表數據,先做一個簡單的總結:
1、簡單,不容易出錯;
2.對于它的源庫(這里是生產庫),它是一個select查詢語句,對性能影響不大;
3.數據不需要從源庫登陸到目標庫,類似于dblinkimpdp遷移數據的方法,節省了導出數據(數百GB表)所需的空間和歸檔時間;
4.可以監控歸檔進度和歸檔記錄數量;
5.如果是跨機房傳輸,請監控網絡帶寬流量。
6、......
操作流程:
1.在生產庫的維護用戶的模式下創建一個視圖,其中包含要歸檔的表的分區:
創建viewlog_table_p201209
如同
select*fromuser01.log_table分區(P201209)
注意:為什么要構建視圖?因為你可以。;不要使用select*fromtablepartition(partition_name)這樣的語句.....通過dblink查詢時。
2.在將存檔數據放入歷史數據庫的用戶下創建數據存檔狀態表和序列創建表(歷史數據庫中的所有操作都在該用戶下執行)。
創建表數據_存檔_狀態
(
身份證號,
線號,
table_nameVARCHAR2(60),
同步編號,
州號,
開始時間日期,
同步時間日期,
備注VARCHAR2(2000年)
)
-向列添加注釋
對列data_archiv:啟動,1:打開并解析游標,2:提取數據,3:完成一個表的同步,4:完成所有表,其他負數:錯誤代碼#39。
-創建序列
創建序列序列號
最小值1
最大值9999999999999
從1開始
增加1
緩存20
3.在歷史庫中創建一個數據庫鏈接,該數據庫鏈接可以連接到具有只讀權限的生產庫,例如:。
-創建數據庫鏈接
創建數據庫鏈接XXDB。本地域
連接到只讀
由#34#34標識
使用#39(描述
(LOAD_BALANCEno)
(地址列表
(地址
(協議)
(主機172.16.XX.XX)
(端口1521)
)
(地址
(協議)
(主機172.16.XX.XX)
(端口1521)
)
)
(連接_數據
(故障轉移模式
(類型選擇)
(方法基礎)
(重試180次)
(延遲5)
)
(服務器專用)
(服務名稱XX服務)
)
)#39
4.歷史庫應創建一個與生產庫具有相同表結構的表,建議更改表名以標記存檔數據。
創建表格log_table_p201209(......)
5.為數據存檔創建存儲過程:
將過程p_log_table_p201209創建為
-索引表
類型u_type是按pls_integer索引的log_table_p201209%rowtype的表
v_listu_type
-定義一個數組來存儲要同步的視圖的名稱。
varchar_arrary類型是由pls_integer索引的varchar2(60)的表
v_remoteview_listvarchar_arrary
-定義參考索引
cur_ref類型是引用游標
當前數據當前引用
-局部變量,記錄SQL%ROWCOUNT。
v_計數器編號:0
行id行id
:空值
v_querystrvarchar(1000):null
:日期為空
日期:為空
:日期為空
日期:為空
開始
-初始化陣列(在步驟1中創建的視圖)
v_r:#39Zhanghui.log_tabl:#39select*from#39||v_r:系統日期
為v_querystr打開cur_data
:系統日期
更新數據存檔狀態
設置同步時間系統日期,
狀態2,
備注備注||#39[#39||v_r:pars:0
:系統日期
-對于打開的游標,循環同步。
環
-使用批量綁定一次處理10000條記錄。
提取cur_data批量收集
入v_list限制10000
foralliin1..五_
插入log_tabl:虛擬計數器sql%rowcount
更新數據存檔狀態測試
設置v_counter,sysdate
其中rowidv_rowid
通信它
未找到cur_data%時退出
結束循環
:系統日期
-更新計劃,并在備注中記錄當前分區的完成時間。
更新數據存檔狀態
設置狀態3,
同步時間系統日期,
備注備注||#39fetch_elapsed#39||
round((v_fetch_elapsed_e-v_fetch_elapsed_s)*24*60,
4)||#39分鐘,同步數#39||v_計數器||
#39,endtime#39||to_char(sysdate,#39yyyymmddhh24miss#39)||#39]#39
其中rowidv_rowid
犯罪
關閉cur_data
-更新時間表
更新數據存檔狀態測試集4
犯罪
結束循環
例外
當其他人
:
更新數據存檔狀態
設置同步時間系統日期,狀態v_sqlcode
其中rowidv_rowid
犯罪
上升
結束
6.創建一個壓縮對象存儲過程。由于移動操作需要將近兩倍的存儲空間,請在壓縮前預先評估空間需求。
創建過程p_compress_object(VOobject_namevarchar2,-object。
varpartition_namevarchar2defaultnull,-分區名
VParallelint默認值為0,-并行度
VPctfreeint默認值為0,-存儲參數Pctfree設置為0,不再考慮DML操作。
vtablespacevarchar2默認為空,-表空間
Vownervarchar2d:0、表1、索引2、分區表3、索引分區
)Authid當前用戶是
vSqlvarchar2(4000)
vsqlermvarchar2(256)
v_sqlstringvarchar2(4000)
開始
v_sqlstring:#39更改會話集db_file_multiblock_read_count128#39
立即執行v_sqlstring
如果vTyp:#39altertable#39||vowner||#39。#39||VOobject_name||#39move#39||當vTablespace為null時的情況,然后為nullelse#39表空間#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39alterindex#39||所有者||#39。#39||vObject_name||
#39rebuild#39||當vTablespace為null時的情況,然后為nullelse#39表空間#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39altertable#39||vowner||#39。#39||vObject_name||
#39移動分區#39||vPartition_name||當vTablespace為null時的情況,然后為nullelse#39表空間#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39alterindex#39||所有者||#39。#39||vObject_name||
#39重建分區#39||vPartition_name||當vTablespace為null時的情況,然后為nullelse#39表空間#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:SQLerrm
DBMS_output.put_line(vsqlerm||#39|#39||vSql)
結束
7.以上準備工作完成后,確認歷史數據庫的表空間,調用數據歸檔存儲過程p_log_table_p201209,處理后的數據進行處理。壓縮,調用存儲過程p_compress_object(...);
8.確認數據正確,刪除生產庫維護用戶對應的視圖和業務表的分區,釋放對象占用的空間(注意:檢查分區表的索引是否在本地,否則...).