資料庫歷史資料有效管理
1.1. 應用場景
業務系統執行一段時間後,與時間有關的資料庫庫表中儲存有多年前的資料,這些資料平時基本很少需要變更,但資料記錄數量巨大,讀寫效能逐月下降,同時備份的壓力也增加(備份集越來越大,備份時間越來越長)。
[@more@]1.2. 有效管理方法
首先,將歷史資料與當前資料進行有效的分割,分割的方法很多,這裡列舉兩個普遍的做法:
A.重新建立與當前資料表表結構相同的歷史表,將歷史的資料插入到這些歷史表中,然後建立檢視,將當前表與歷史表union起來,這些歷史表是建立在歷史表空間上的。這種情況,應用程式尤其是查詢統計的程式需要做一定的變更。
B.使用分割槽表,將歷史資料相關的分割槽存放或者遷移到歷史資料庫表空間上。
其次,更改歷史表空間的狀態為readonly,歷史表空間可以建立在低檔的儲存或者光碟庫上,不需要訪問時,也可以offline它。我們在將歷史資料表空間狀態設定為readonly狀態後,對歷史表空間進行一次全備份(怕麻煩的話,就直接做一次全庫備份就可以了),在這之後我們使用rman進行資料庫全庫備份時,可以使用選項skip readonly(/offline)來跳過歷史表空間的備份,大大減少了備份的壓力。同時因為大部分資料從主力表遷移到歷史表中,資料庫庫表的記錄量回到了正常狀態,資料庫執行效能也有了很大的提高。
1.3. 操作例項
這裡演示第一種資料切割的方法,建立相同表結構的歷史表。
1.3.1. 建立相關的表,插入測試資料
SQL>Conn / as sysdba
SQL>select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------------------------------------------------------------------
AIDU USERS
建立歷史資料存放用的表空間aidu_ls
SQL>create tablespace aidu_ls datafile '/oracle/oradata/aidu_ls01.dbf' size 10m extent management local segment space management auto logging
Tablespace created.
SQL>conn aidu/aiduteset
建立測試表,插入部分資料
SQL>Create table test01(id number(10,2),rq date,remark varchar2(100),primary key(id)) tablespace users;
SQL>alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS' ;
SQL>insert into test01 values(1,'2010-01-01','test for read only tablespace');
SQL>insert into test01 values(2,'2010-02-01','test for read only tablespace');
SQL>insert into test01 values(3,'2010-03-01','test for read only tablespace');
SQL>insert into test01 values(4,'2010-04-01','test for read only tablespace');
SQL>insert into test01 values(5,'2010-05-01','test for read only tablespace');
SQL>insert into test01 values(6,'2010-06-01','test for read only tablespace');
SQL>insert into test01 values(7,'2010-07-01','test for read only tablespace');
SQL>insert into test01 values(8,'2010-08-01','test for read only tablespace');
SQL>insert into test01 values(9,'2010-09-01','test for read only tablespace');
SQL>insert into test01 values(10,'2010-10-01','test for read only tablespace');
SQL>insert into test01 values(11,'2010-11-01','test for read only tablespace');
SQL>insert into test01 values(12,'2010-12-01','test for read only tablespace');
SQL>insert into test01 values(101,'2011-01-01','test for read only tablespace');
SQL>insert into test01 values(102,'2011-02-01','test for read only tablespace');
SQL>insert into test01 values(103,'2010-03-01','test for read only tablespace');
SQL>commit;
建立歷史表,指定儲存到歷史資料表空間aidu_ls上.
SQL> create table test01_ls tablespace aidu_ls as select * from test01 where trunc(rq,'YY')
SQL>alter table test01_ls add primary key(id) using index tablespace aidu_ls;
SQL> select table_name,tablespace_name from all_tables where owner='AIDU';
TABLE_NAME TABLESPACE_NAME
------------------------------------------------------------------------------------------
TEST01 USERS
TEST01_LS AIDU_LS
透過上面的查詢,可以看到歷史資料表aidu_ls建立在歷史資料表空間aidu_ls上了。
1.3.2. 建立檢視,訪問所有的資料
SQL>Create view test01_all as select * from test01 union all select * from test01_ls;
1.3.3. 設定歷史資料表空間aidu_ls為只讀(read only)
SQL>alter tablespace aidu_ls read only;
1.3.4. 執行全庫備份(或者表空間備份,或者表空間檔案複製備份)
Rman target /
Run{
Allocate channel d1 type disk;
Backup full database format ‘/oracle/rman/full_db_1_%U.bak’;
Release channel d1;}
1.3.5. 以後進行資料庫全備份時,可以跳過read only的表空間
Rman target /
Run{
Allocate channel d1 type disk;
Backup full database skip readonly format ‘/oracle/rman/full_db_%U.bak’;
Release channel d1;}
備份的時候就自動跳過read only狀態下的歷史表空間,減少了備份的壓力。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/32980/viewspace-1053140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫學習筆記1(資料管理歷史)資料庫筆記
- Jim Gray:資料管理歷史
- 寫有效的歷史資料遷移sqlSQL
- ZT 寫有效的歷史資料遷移sqlSQL
- 巧用閃回資料庫來檢視歷史資料資料庫
- 從AdventureWorks學習資料庫建模——保留歷史資料資料庫
- 改寫資料庫歷史的中國人資料庫
- 監視資料庫映象的歷史記錄資料庫
- C/C++ Qt 資料庫與Chart實現歷史資料展示C++QT資料庫
- 國產資料庫源流史:AntDB資料庫資料庫
- 走進資料的歷史
- 世界資料庫史資料庫
- Oracle11g清理資料庫歷史日誌Oracle資料庫
- 資料庫模型設計——歷史與版本設計資料庫模型
- 資料庫廠商的發展歷史之MySQL資料庫MySql
- 資料庫廠商的發展歷史之Sybase資料庫
- 歷史股票資料的爬取
- zabbix清除歷史監控資料
- 資料表分割槽分割與刪除歷史資料
- Fabric 1.0原始碼分析(21)Ledger #historydb(歷史資料庫)原始碼資料庫
- 資料庫廠商的發展歷史之Oracle(2)資料庫Oracle
- 資料庫廠商的發展歷史之Oracle(1)資料庫Oracle
- MySQL資料庫資料管理MySql資料庫
- 資料庫PostrageSQL-管理資料庫資料庫SQL
- 巧用外部表備份歷史資料
- AWR歷史資料包表工具AHR
- Statspack之八-刪除歷史資料
- 明解資料庫------資料庫儲存演變史資料庫
- 儲存所有歷史提交資料下遷移git倉庫Git
- 資料庫廠商的發展歷史之DB2資料庫DB2
- 資料庫管理資料庫
- 資料科學的歷史,從洞穴壁畫到大資料資料科學大資料
- 資料庫發展史(上)資料庫
- 資料庫發展史(中)資料庫
- 資料庫發展史(下)資料庫
- 第1章 下載A股歷史資料
- python實現股票歷史資料析Python
- 使用shell測試歷史資料樣本