這是我們為大家提供的一篇關於oracle數據庫群集技術:HA高可靠性分析的相關介紹的文章,接下來就讓我們一起來了解一下吧!
不論是小公司,還是擁有全球用戶的大公司,後台數據庫24小時可用,是至關重要的。Oracle 提供了兩種高可靠性的解決方案
n Data Guard(又被稱作Standby)
n RAC(Real Application Cluster)
一、RAC (Real Application Clusters)
RAC是多個單CPU機或SMP 或MPP的集群(cluster),cluster裡面的服務器使用一個或多個oracle instances 與一個database聯接.
SMP是指對稱多處理器。大多數小型機都采用這種結構。MPP是另外一種計算機系統機構,大量信息並行處理機。
主要特點
1)database所有的data files/controfile/redo log都建立raw devices上。知道數據庫在raw devices上(原是設備),可以繞過操作系統一級,直接讀寫磁盤,能夠提供磁盤的I/O能力,提高效率,尤其是有大量I/O的時候。
2)在database方面,每個instance都有自己單獨的on-line redo log file groups,因此backup和recovery是要作特殊處理。 而且在配置上比較復雜。
3)存儲方面沒有redundancy,因此media failure上還是需要RAID的支持。但集群都是共享一個磁盤陣列(磁盤櫃),而這個磁盤陣列是廠商采用相關技術,具有高可靠性。
4)為了高可靠性和高速度,共享磁盤和計算機節點之間要求使用光線連接,而不是使用一般的局域網的網線。磁盤陣列使用光纖通道磁盤陣列。
Standby數據庫
Standyby數據庫克隆生產數據庫,這兩個數據庫可以存放在不同的地域,當Production Database出現致命的不可恢復的狀況時,可以短時間內起動Standy數據庫,全面替代生產數據庫.
RAC語Standy比較
1)數據庫備份:Standby復制原始數據庫,因此原始數據庫有備份,而RAC只有一個數據庫
2)服務器數量: RAC至少雙機支持如容錯、新的安全級別、負載均衡。在特大數據庫和很多的用戶訪問的系統中,還可以增加計算機,使多個實例同時訪問數據庫。Standby運行時只有Primary Database提供服務。不能提供容錯,、負載均衡等高級功能。
3)當機時間:RAC只要有一台服務器運行就不會當機,而Standyby數據庫切換需要一定的時間
4)費用:Standby不需要數據庫之外的許可證費用,而RAC的技術和實施相對復雜,花費更大。
5從硬件角度,RAC是比較高端的HA,所以一般都是選用專門廠商的Cluster, 如HP, SUN, AIX.使用相關的小型機系統。這種構建的系統非常穩定,也很安全。
二、 Standby 分析
此示例是在windows下說明的。 如果在Unix上只須作很小的相應的改動(如需要改動,文中作出相應標識)
A,standby的配置
在配置前,最好先重建控制文件,修改參數maxlogfiles為10。(默認為5)當然,這一步不是必要的,只有在你需要改變standby數據庫的保護模式時才用到。這裡是在最高性能模式(Max Performance Mode)。重建控制文件的具體方法可參照文章後的附錄。
1,在主數據庫啟用歸檔
SQL> archive log list;
數據庫日志模式 非存檔模式
自動存檔 禁用
存檔終點 D:\oracle\ora92\RDBMS (在unix下,是路徑可能為/。。。/。。。/RDBMS,這個路徑是需要制定的。)
最早的概要日志序列 22
當前日志序列 24
下面幾步是把Primary 數據庫改為歸檔日志的運行方式,如果數據庫已經是在歸檔日志下運行,則跳過這幾步。
SQL> alter system set log_archive_dest_1='location=d:\oracle\arch'; (UNIX, 須改)
系統已更改。
SQL> alter system set log_archive_start=true scope=spfile;
系統已更改。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
SQL> alter database archivelog;
數據庫已更改。
SQL> archive log list;
數據庫日志模式 存檔模式
自動存檔 啟用
存檔終點 d:\oracle\arch
最早的概要日志序列 22
下一個存檔日志序列 24
當前日志序列 24
2,在standby數據庫創建相應的目錄結構
D:\oracle\admin\my_standby\bdump
D:\oracle\admin\my_standby\cdump
D:\oracle\admin\my_standby\udump
D:\oracle\admin\my_standby\pfile
D:\arch
D:\oracle\oradata\my_standby
3,設置primary強制logging
SQL> alter database force logging;
數據庫已更改。
4,關閉數據庫,拷貝所有數據文件及在線重做日志到standby數據庫的對應位置
SQL> shutdown immediate
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL>
5,創建standby控制文件並拷貝到standby數據庫,並更改成和primary數據庫一樣的名稱。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> alter database create standby controlfile as 'd:\oracle\oradata\my_standby\standb
y.ctl';
數據庫已更改。
SQL>
6,生成初始化文件並拷貝到standby數據庫
SQL> create pfile='d:\oracle\admin\my_standby\pfile\standby.ora' from spfile;
文件已創建。
SQL>