如何搭建一個 Data Guard 環境
在Blog裡零零散散的講了一些DB 維護的東西,比較雜,也比較散。 這裡就Oracle Data Guard 這塊做一個小結。 主要是流程上的東西。 做個參考,以後裝DG,照這個流程走就ok了。
一. 伺服器設定
1.1 硬碟的規劃
根據自己的業務量來規劃硬碟。 我上週搭建的DG,用了4塊SAS 硬碟。 單盤300G,1.5w轉/s。 這個IOPS 大概在150M/s。 是個估算值。 做了RAID1.
不同的RAID 對IOPS 是有影響的。
1.2 將硬碟掛載到伺服器上
這塊參考我的Blog:
Linux 下掛載硬碟的方法
二. 安裝DB
這部分包括2塊,安裝DB
軟體和升級。 如果是
先安裝軟體,升級,升級完在用DBCA 建立例項。 這樣比安裝DB 和建立例項之後升級要簡單點。
2.1 安裝DB 軟體
具體步驟參考BLog:
32 位系統,參考:linux平臺下oracle資料庫安裝
64 位系統參考:64位 linux 平臺下Oracle 安裝文件
http://blog.csdn.net/tianlesoftware/archive/2010/12/08/6062816.aspx
2.2 升級DB 軟體
具體步驟參考Blog:
linux平臺下oracle從10.2.0.1升級到10.2.0.4
其實,升級的步驟,在升級包的
2.3 在主庫DBCA建立例項
在我的Blog有說明:
如何搭建一個數據庫伺服器平臺
在這裡簡單的說一下:
(1)redo 檔案預設是50M,改成100M
(2)每個redo group裡改成2個 redo logfile。 大小100M
(3)檢查一下字符集:ZHS16GBK
(4)設定SGA,PGA 大小。
OLTP 系統一般的規則是:
SGA=記憶體*80%*80%
PGA=記憶體*80%*20%
三. 搭建DG 環境
這塊內容參考BLog:
Oracle Data Guard 理論知識
Oracle Data Guard Linux
在這裡補充一點, 在我裝的2套DG上都遇到一個問題。 就是主庫的sys 使用者密碼會改變。 懷疑和安裝過程中copy 密碼檔案的過程有關。因為找不到其他原因了。 所以安裝之後,用原來的sys密碼連線一下。 如果不能使用,趕緊重新設定一下。然後在copy到備庫。 不然在客戶端就不能用sys使用者登陸了。
如果是現在有DG,不知道sys使用者密碼。 我在測試環境下測試過,在不停DG的情況下,直接修改sys使用者密碼,然後copy到備庫。這樣是可以使用的。 生產庫上沒有做過。
四. 後續的調整
在這部分,主要是修改一些引數和資料檔案的變動。
4.1 修改資料檔案
用SQL 命令,或者用Toad 都可以。
(1)將SYSTEM,SYSAUX 這2個系統表空間增加到1G,並設定為自動增長,每次10M
(2)UNDO 表空間,設成32G(4*8G) 或者16G(2*8G)。關閉自動擴充套件。
(3)TEMP 表空間,設成32G(4*8G) 或者16G(2*8G)。關閉自動擴充套件。
4.2 引數修改
(1)修改undo_retention
undo_retention 只是指定undo 資料的過期時間,預設是900s,15分鐘。建議改成10800s,即3個小時。
SQL> alter system set undo_retention=10800 scope=both;
系統已更改。
(2)修改sessions 和 processes 引數
SQL> alter system set sessions=2000 scope=spfile;
系統已更改。
SQL> alter system set processes=1000 scope=spfile;
系統已更改。
(3)修改CONTROL_FILE_RECORD_KEEP_TIME 引數
該引數設定控制檔案中儲存備份記錄的時間,在用RMAN的時候會涉及到這個引數。 備份記錄包括完全的資料庫備份記錄,以及指定的資料檔案,控制檔案,引數檔案和歸檔目錄的備份記錄。資料庫引數CONTROL_FILE_RECORD_KEEP_TIME以天為單位(預設值為7天),因此在預設情況下,Oracle 會將RMAN備份和恢復記錄儲存7天。 可以將該引數設定為0到365之間的任意值。
SQL> alter system set control_file_record_keep_time=14;
系統已更改。
(4)設定open_links_per_instance 和 open_links 引數
關於這2個引數的說明,參考Blog:
open_links_per_instance 和 open_links 引數說明
http://blog.csdn.net/tianlesoftware/archive/2010/12/22/6090729.aspx
這2個引數修改之後,需要重啟才能生效,所以,在安裝DB的時候,就把這個引數修改了。 預設值是4,如果用到話就太小了。 所以在安裝的時候,就給修改了。 修改建議值:100。
SQL> alter system set open_links=100 scope=spfile;
系統已更改。
五. 部署RMAN 備份
在部署指令碼之前,記得修改2個引數:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
配置DG主庫RMAN 歸檔檔案的刪除策略:
RMAN> configure archivelog deletion policy to applied on standby;
參考:
Nocatalog 下的RMAN 增量備份 shell指令碼
Linux 平臺下 RMAN 全備和 增量備份 shell 指令碼
如何搭建 RMAN 備份平臺
六. 在備庫部署刪除歸檔檔案指令碼
DG 備庫的歸檔檔案不能自動刪除。 需要使用指令碼來刪除。
參考:
Oracle Data Guard 備庫歸檔檔案刪除指令碼
七. 部署其他的監控指令碼
這部分監控如CPU,磁碟空間,表空間使用率。 alert log 日誌等。 以前有個shell 的指令碼,可以監控這些。 最近在整理一個Python的監控指令碼。
7.1 alert log 按天存放
這樣做主要還是方便檢視alert log。 參考:
Oracle alert log 按天存放 指令碼
7.2 以前弄的一個監控DG的批處理指令碼
每天早上上班執行下,DG 的情況就能清楚的顯示出來了。 省事很多。 後來懶的執行批處理命令,改成每天定時發到郵箱了。
Check.sql
conn sys/[email protected] as sysdba
host title 資料庫日常檢查
column dest_name format a30
column destination format a20
column MEMBER format a45
column 歸檔地 format a20
column TABLESPACE_NAME format a10
column FREE_RATE format a10
host cls
prompt **************************** 實 例 狀 態 ************************************;
select instance_name 例項名,version 版本,status 狀態,database_status 資料庫狀態 from v$instance;
prompt **************************** 資料庫狀態 *************************************;
select name,log_mode 歸檔模式,open_mode 開啟模式 from v$database;
prompt **************************** 控制檔案狀態 ***********************************;
column name format a40
select status,name from v$controlfile;
prompt **************************** 日誌檔案狀態 ***********************************;
select GROUP#,status,type,member from v$logfile;
prompt***************************** 歸檔目的地狀態 *********************************;
select dest_name ,status 狀態,database_mode 資料庫模式,destination 歸檔地 from v$archive_dest_status where dest_id in('1','2');
set heading off;
select '************資料庫已連續執行 '|| round(a.atime-b.startup_time)||' 天 '||'*******************************************' from(select sysdate atime from dual) a,v$instance b;
set heading on;
prompt***************************** 會話數 *************************************;
select sessions_current 當前會話數,sessions_highwater 例項最高值 from v$license;
prompt********************** 表空間監控(FREE_RATE小於10%為異常) ********************;
select a.tablespace_name, round(a.total_size) "total_size(MB)",
round(a.total_size)-round(b.free_size,3) "used_size(MB)",
round(b.free_size,3) "free_size(MB)", round(b.free_size/total_size*100,2)||'%' free_rate
from ( select tablespace_name, sum(bytes)/1024/1024 total_size
from dba_data_files
group by tablespace_name ) a,
( select tablespace_name, sum(bytes)/1024/1024 free_size
from dba_free_space
group by tablespace_name ) b
where a.tablespace_name = b.tablespace_name(+);
prompt **************************** 表空間OFFLINE(顯示為空正常) ********************;
select tablespace_name 表空間名,status 狀態 from dba_tablespaces where status='OFFLINE';
prompt **************************** SEQUENCE同步數 *********************************;
select max(sequence#)from v$log_history;
CONN sys/[email protected]_ST as sysdba;
prompt **************************** 備庫SEQUENCE同步數 *****************************;
select max(sequence#)from v$log_history;
prompt **************************** 備庫日誌未應用(顯示為空正常) *******************;
select sequence#,applied from v$archived_log where applied='NO' and sequence#>2453;
prompt **************************** 備庫日誌應用(顯示最近十個日誌) *****************;
select * from(select sequence#,applied from v$archived_log order by sequence# desc) where rownum<=10;
set time on
disconnect
Check.bat
sqlplus /nolog @check.sql
7.3 其他監控指令碼
參考:
8個DBA最常用的監控Oracle資料庫的常用shell指令碼
八. 匯入資料
用邏輯匯出匯入就可以了。 在匯入之前建好表空間,注意:資料和索引分別存放在不同的表空間。 在建使用者。最後匯入資料。
對於某些系統(如移動的BOSS計費系統),在建sequence的時候,注意下sequence 的cache 大小。預設值是20. 一般是夠用的。
Oracle Sequence Cache 引數說明
匯入的過程也會產生歸檔檔案,只需要在主庫匯入即可。 備庫會自動同步。 如果資料量大的話,這個同步過程會比較慢。 因為imp 會產生大量的歸檔檔案。
Oracle Data Guard 主庫 歸檔檔案 刪除策略
DG 的東西就這麼多了。 最後3句話:
(1)備份重於一切
(2)責任重於一切
(3)DBA要膽大心細,遇事不慌
------------------------------------------------------------------------------
QQ:492913789
Email:[email protected]
網上資源: http://tianlesoftware.download.csdn.net
相關視訊:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977(滿)
DBA3 群:62697850DBA 超級群:63306533;
聊天 群:40132017
--加群需要在備註說明Oracle表空間和資料檔案的關係,否則拒絕申請