1. 程式人生 > >如何搭建一個 Data Guard 環境

如何搭建一個 Data Guard 環境

Blog裡零零散散的講了一些DB 維護的東西,比較雜,也比較散。 這裡就Oracle Data Guard 這塊做一個小結。 主要是流程上的東西。 做個參考,以後裝DG,照這個流程走就ok了。

. 伺服器設定

1.1 硬碟的規劃

根據自己的業務量來規劃硬碟。 我上週搭建的DG,用了4SAS 硬碟。 單盤300G1.5w/s 這個IOPS 大概在150M/s 是個估算值。 做了RAID1.

不同的RAID IOPS 是有影響的。

1.2 將硬碟掛載到伺服器上

這塊參考我的Blog

Linux 下掛載硬碟的方法

. 安裝DB

這部分包括2塊,安裝DB 軟體和升級。 如果是

10g的話,可以先將DB升級到10.2.0.5 升級的原因是為了避免某些bug

先安裝軟體,升級,升級完在用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平臺下oracle10.2.0.1升級到10.2.0.4

其實,升級的步驟,在升級包的

readme.html 裡有詳細的說明,可以照那個步驟來。

2.3 在主庫DBCA建立例項

在我的Blog有說明:

如何搭建一個數據庫伺服器平臺

在這裡簡單的說一下:

1redo 檔案預設是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

平臺 Physical Standby 搭建例項

在這裡補充一點, 在我裝的2DG上都遇到一個問題。 就是主庫的sys 使用者密碼會改變。 懷疑和安裝過程中copy 密碼檔案的過程有關。因為找不到其他原因了。 所以安裝之後,用原來的sys密碼連線一下。 如果不能使用,趕緊重新設定一下。然後在copy到備庫。 不然在客戶端就不能用sys使用者登陸了。

如果是現在有DG,不知道sys使用者密碼。 我在測試環境下測試過,在不停DG的情況下,直接修改sys使用者密碼,然後copy到備庫。這樣是可以使用的。 生產庫上沒有做過。

. 後續的調整

在這部分,主要是修改一些引數和資料檔案的變動。

4.1 修改資料檔案

SQL 命令,或者用Toad 都可以。

1)將SYSTEM,SYSAUX 2個系統表空間增加到1G,並設定為自動增長,每次10M

2UNDO 表空間,設成32G4*8G 或者16G2*8G)。關閉自動擴充套件。

3TEMP 表空間,設成32G4*8G 或者16G2*8G)。關閉自動擴充套件。

4.2 引數修改

1修改undo_retention

undo_retention 只是指定undo 資料的過期時間,預設是900s15分鐘。建議改成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天。 可以將該引數設定為0365之間的任意值。

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 其他監控指令碼

參考:

8DBA最常用的監控Oracle資料庫的常用shell指令碼

. 匯入資料

用邏輯匯出匯入就可以了。 在匯入之前建好表空間,注意:資料和索引分別存放在不同的表空間。 在建使用者。最後匯入資料。

對於某些系統(如移動的BOSS計費系統),在建sequence的時候,注意下sequence cache 大小。預設值是20. 一般是夠用的。

Oracle Sequence Cache 引數說明

匯入的過程也會產生歸檔檔案,只需要在主庫匯入即可。 備庫會自動同步。 如果資料量大的話,這個同步過程會比較慢。 因為imp 會產生大量的歸檔檔案。

Oracle Data Guard 主庫 歸檔檔案 刪除策略


DG 的東西就這麼多了。 最後3句話:

1)備份重於一切

2)責任重於一切

3DBA要膽大心細,遇事不慌

------------------------------------------------------------------------------

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表空間和資料檔案的關係,否則拒絕申請