Oracle高可用之dataguard

2021-09-21 23:40:43 字數 4797 閱讀 9805

dataguard是一種資料庫級別的ha方案,最主要功能是冗災、資料保護、故障恢復等。

在生產資料庫的"事務一致性"時,使用生產庫的物理全備份(或物理copy)建立備庫,備庫會通過生產庫傳輸過來的歸檔日誌(或重做條目)自動維護備用資料庫。將重做資料應用到備用庫。本文介紹使用rman備份建立備庫(dataguard).

一:.環境

1.軟體環境

作業系統red linux enterprise as 5

資料庫版本oracle 10g release 2

2.primary databae

ip:192.168.18.1

oracle_sid=db1

db_unique_name=db1

3.standby database

ip:192.168.18.2

oracle_sid=standby

db_unique_name=standby

二,主資料庫(db1)做準備

1.設定主資料庫為force logging

sql> alter database force logging;

2.建立密碼檔案

cd $oracle_home/dbs/

orapwd  file=orapwdb1 password=123456 force=y

3.修改主庫的初始化引數

alter system set log_archive_config='dg_config=(db1,standby)' scope=both;

alter system set log_archive_dest_1='location=/u01/db1/arch' scope=both;

alter system set db_unique_name='db1' scope=both;

5.生成資料庫備份

rman> connect target sys/123456

rman> backup database format='/oracle/rmanback/%d_%s.dbf' plus archivelog;

[oracle@oracle rmanback]$ ls

db1_1.dbf  db1_2.dbf

6.生成備庫的control file

sql>alter database create standby controlfile as '/oracle/rmanback/ctontrl01.ctl

7.配置listener.ora 和tnsnames.ora檔案

啟動lintener.ora,

[oracle@oracle dbs]$ lsnrctl status

lsnrctl for linux: version 10.2.0.4.0 - production on 14-jun-2009 02:54:29

service "db1" has 1 instance(s).

instance "db1", status ready, has 1 handler(s) for this service...

service "db1_xpt" has 1 instance(s).

instance "db1", status ready, has 1 handler(s) for this service...

the command completed successfully

配置rnsnames.ora

vi $oracle_home/network/admin/tnsnames.ora

db1 =

(description =

(address_list =

(address = (protocol = tcp)(host = 192.168.18.1)(port = 1521))

)

(connect_data =

(service_name = db1)

standby =

(description =

(address_list =

(address = (protocol = tcp)(host = 192.168.18.2)(port = 1521))

)

(connect_data =

(service_name = standby)

)

)

三.建立standby database

1.設定環境變數並安裝oracle軟體

#環境變數設成與主庫一樣

#只安裝軟體不安裝庫

./runinstaller –silent –responsefile /tmp/installoracle.rsp

2.建立相關的目錄

mkdir –p $oracle_base/admin/

cd $oracle_base/admin/oracle_sid

mkdir adump bdump cdump dpdump udump

3.建立密碼檔案

cd $oracle_home/dbs/

orapwd  file=orapwsid password=123456 force=y

# 注要密碼要與主庫的一樣

,  否則會歸檔失敗

3.建立引數檔案(pfile)

db_name = standby

shared_pool_size = 120m

undo_management = auto

undo_tablespace = undotbs

sga_max_size = 200m

sga_target = 160m

db_2k_cache_size = 4m

standby_file_management=auto

fal_server='db1'

fal_client='standby'

log_archive_dest_2='service=db1 reopen=300'

log_archive_dest_state_1='enable'

log_archive_dest_state_2='enable'

4.cp主資料庫rman備份及控制檔案到備庫

注意:備份存放位置要與primary database rman備份檔案的位置相同. 控制檔案存放位置要與生成standby database controlfile的位置相同

scp /oracle/rmanback/*.dbf [email protected]:/oracle/rmanback/

scp /oracle/rmanback/*.ctl [email protected]:/oracle/oracle/oradata/standby/

5.利用備用的控制檔案,把備用資料庫啟到mount

sql>connect / as sysdba

connnpcted to an idle instance.

sql>startup nomount pfile=$oracle_home/dbs/initstandby.ora

sql>alter database mount standby database;

6. 配置listener.ora 和tnsnames.ora檔案.

與主庫相同啟動listener,tnsnames.ora也與主庫配置的一樣,

當主備庫的監聽都啟動後,進行測試,以例下面能順利進行

tnsping db1

tnsping standby

sql> sqlplus sys/123456@db1

sql> sqlplus sys/123456@standby

7.轉儲資料庫

rman>connect target /

connected to target database:test(dbid=788075692)

rman> restore database

8.

恢復資料庫

sql>recover managed standby database disconnect from session;

#如果有需要

應用的日誌並想手工

應用,可以執行如下命令

sql>recover automatic standby database;

9.檢查standby database是否建立成功

1.在primary database 上切換日誌

sql> alter system switch logfile

2.在primary database上執行下面的語句

sql> select max(sequence#) from v$archived_log;

max(sequence#)

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

17

3. 在standby database上執行下面的語句

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

15    yes

16    yes

17    yes

10. 以spfile啟動並設為唯讀

sql> create spfile from pfile;

sql> shutdown immedaite

sql> startup mount

sql> alter database recover managed standby database disconnect from session;

sql> alter database open read only;

高可用之 降級

降級的最終目的是保證核心服務可用,即使是有損的。有些伺服器無法降級 加入購物車 結算等 降級也需要根據系統的吞吐量 響應時間 可用率等條件進行手工降級或自動降級。降級按照是否自動化可分為 自動開關降級和人工開關降級。降級按照功能可分為 讀服務降級和寫服務降級。降級按照處於的系統層次可分為 多級降級。...

keepalived高可用之nginx實戰

以nginx為例 安裝兩台nginx及keepalived配置高可用 兩台安裝nginx,我這邊以原始碼安裝為例 yum安裝nginx 原始碼安裝nginx 安裝完成後啟動,關閉防火牆及selinux 兩台安裝keepalived yum install y keepalived修改配置檔案 刪除所...

MHA高可用之VIP漂移

1.vip漂移的兩種方式1.keeplaived的方式 2.mha自帶的指令碼進行vip漂移2.配置mha讀取vip漂移指令碼 編輯配置檔案 在 server default 標籤下新增 server default 使用mha自帶指令碼 master ip failover script serv...