[問題]:
1.oracle控制檔案和線上重做日誌沒有實現多路鏡像,導致資料庫可靠性降低。
2.沒有依據IO負載 對資料檔案進行調整,導致各磁碟IO不均衡,個別磁碟IO過高。
Av Av
Tablespace Reads Reads/s Writes Writes/s
-------------- ------- ------ -- -------- ---------
DATALIST 539,798 152 101,605 29
TEMP 187,745 53 110,712 31
INDEXFLUX 125,182 35 25,469 7
DATAFLUX 55,270 16 852 0
DATACFG 48,725 14 5,365 2
UNDOTBS1 1,463 0 39,789 11
INDEXLIST 11,268 3 15,265 4
INDEXCFG 13,359 4 4,512 1
SYSTEM 6,557 2 325 0
DATAEXAM 3,016 1 451 0
SYSAUX 2,231 1 386 0
INDEXPATH 671 0 278 0
INDEXEXAM 405 0 19 0
DATAPATH 326 0 84 0
-----------------------------------------
1. 規劃原則:
- 將控制檔案分別部署到不同的磁碟。
a) Alter system set control_files=”/oradata1/dbnms/ control01.ctl, /oradata2/dbnms/ control02.ctl’;
b) 關閉資料庫
c) 物理移動控制檔案到指定目錄
- 線上重做日誌至少分為三個組,每組至少兩個成員,分別部署到不同的磁碟上。
(1)增加日誌組:
ALTER DATABASE ADD LOGFILE GROUP <n> ‘記錄檔’ SIZE <n>;
(2)刪除日誌組:
ALTER DATABASE DROP LOGFILE GROUP <n>;
(3)增加日誌成員:
ALTER DATABASE ADD LOGFILE MEMBER ‘記錄檔’ TO GROUP <n>;
(4)刪除日誌成員:
ALTER DATABASE DROP LOGFILE MEMBER ‘記錄檔’ ;
- 將資料表空間按照IO負載高低均衡分布到不同的磁碟上。
- 重做日誌和復原資料表空間檔案和暫存資料表空間要放到IO速度快的磁碟上,raid10的IO比raid5好。
[現場]
SYS AS SYSDBA> archive log list
資料庫記錄模式 非存檔模式
自動封存 禁用
[問題]
資料庫無法恢複的風險非常高。多次資料庫故障由於沒有開啟歸檔,導致恢復從半小時以內延長到了幾個小時甚至幾天。
2. 開啟歸檔日誌
- 開啟資料庫歸檔模式
1.關閉資料庫
SQL> shutdown immediate;
2.啟動資料庫為mount模式
SQL> startup mount
3.顯示和修改歸檔模式
SQL> archive log list
SQL> alter database archivelog;
SQL> alter database open
4.設定歸檔日誌的格式
SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;
6.強制切換歸檔日至
SQL>alter system switch logfile;
7.取消歸檔
SQL>alter database noarchivelog;
- 修改資料庫參數,將歸檔日誌目錄設定在空間大的磁碟分割上
設定歸檔日誌的存放路徑
SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;
SQL>shutdown immediate
SQL>startup
- 設定好歸檔日誌自動清除指令碼,歸檔日誌保留時間越久越好。
- 啟動閃回資料庫
http://blog.sina.com.cn/s/blog_a3813a410101066l.html
SQL>select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------------------------
YES
SQL>startup mount
SQL>alter database flashback on;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
- 設定閃回資料庫參數
如果設定了閃回恢複區,則log_archive_dest和log_archive_duplex_dest將不可用
- oracle中log_archive_dest_n和log_archive_dest不能共存
SYS AS SYSDBA> show parameters flash
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
SYS AS SYSDBA> show parameters recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
- 監控閃回資料庫空間利用
SQL> select * from v$flash_recovery_area_usage;
增加閃回區(Flash Recovery Area)的大小。
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE =20G SCOPE=BOTH SID='*';
3. 資料庫模式
專有模式和共用模式中要 優先選擇專有模式
4. 參數調整
dbfiles -> 2000 資料庫的資料檔案總數
processes -> 2000 資料庫支援的服務進程數
sessions ->3000 資料庫支援的session上限
shared_servers -> 0 專有|共用模式開關,0-〉專有
db_recovery_file_dest /oracle/flash_recovery_area
sga_max_size ->實體記憶體的50%
sga_target -> 實體記憶體的50%
pga_aggregate_target -> 2M*預計session數
cursor_sharing -> EXACT
db_writer_processes -> cpu核心數/2
job_queue_processes -> 5 如果等於0,oracle的job不執行