1. 高可用性概述
Oracle数据库高可用性是确保数据库系统在各种情况下能够持续提供服务的能力,包括硬件故障、软件故障、网络故障等。高可用性解决方案可以减少系统停机时间,提高数据安全性和可靠性。更多学习教程www.fgedu.net.cn
2. Oracle RAC
Oracle Real Application Clusters (RAC)是一种集群解决方案,允许多个数据库实例同时访问同一个数据库,提供高可用性和水平扩展能力。
$ crsctl status cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
— 查看集群资源状态
$ crsctl status resource -t
——————————————————————————–
NAME TARGET STATE SERVER STATE_DETAILS
——————————————————————————–
Local Resources
——————————————————————————–
ora.DATA.dg
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.LISTENER.lsnr
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.asm
ONLINE ONLINE node1 Started
ONLINE ONLINE node2 Started
ora.ons
ONLINE ONLINE node1
ONLINE ONLINE node2
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE node1
ora.cvu
1 ONLINE ONLINE node1
ora.node1.vip
1 ONLINE ONLINE node1
ora.node2.vip
1 ONLINE ONLINE node2
ora.oc4j
1 ONLINE ONLINE node1
ora.orcl.db
1 ONLINE ONLINE node1 Open
2 ONLINE ONLINE node2 Open
ora.scan1.vip
1 ONLINE ONLINE node1
— 查看实例状态
SELECT instance_name, status, database_status
FROM v$instance;INSTANCE_NAME STATUS DATABASE_STATUS
—————- ———— —————–
orcl1 OPEN ACTIVE
— 查看数据库集群信息
SELECT * FROM v$cluster_properties;NAME VALUE
——————————– ————————
Clusterware version 19.0.0.0.0
Cluster name mycluster
— 启动和停止RAC实例
— 在节点1上启动实例
$srvctl start instance -d orcl -i orcl1
— 在节点2上停止实例
$srvctl stop instance -d orcl -i orcl2
3. Oracle Data Guard
Oracle Data Guard是一种数据复制解决方案,通过将主数据库的数据复制到一个或多个备用数据库,提供灾难恢复和高可用性。
SELECT database_role, open_mode, protection_mode
FROM v$database;DATABASE_ROLE OPEN_MODE PROTECTION_MODE
—————- ——————– ——————–
PRIMARY READ WRITE MAXIMUM PERFORMANCE
— 查看备用数据库状态
SELECT database_role, open_mode, protection_mode
FROM v$database;DATABASE_ROLE OPEN_MODE PROTECTION_MODE
—————- ——————– ——————–
PHYSICAL STANDBY MOUNTED MAXIMUM PERFORMANCE
— 启动重做应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;Database altered.
— 查看重做应用状态
SELECT process, status, sequence#
FROM v$managed_standby;PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
RFS IDLE 5
RFS IDLE 0
MRP0 APPLYING_LOG 5
— 执行切换操作
— 在主数据库上执行
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;Database altered.
— 在备用数据库上执行
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;Database altered.
— 打开新的主数据库
ALTER DATABASE OPEN;Database altered.
4. Oracle GoldenGate
Oracle GoldenGate是一种实时数据复制和集成解决方案,支持异构环境的数据复制,提供近实时的数据同步。
$ ./ggsci
GGSCI (node1) 1> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EORCL 00:00:00 00:00:05
REPLICAT RUNNING RORCL 00:00:00 00:00:03
— 启动GoldenGate Manager
$ ./ggsci
GGSCI (node1) 1> START MANAGER
Manager started.
— 启动Extract进程
GGSCI (node1) 2> START EXTRACT EORCL
Sending START request to MANAGER …
EXTRACT EORCL starting
— 启动Replicat进程
GGSCI (node1) 3> START REPLICAT RORCL
Sending START request to MANAGER …
REPLICAT RORCL starting
— 查看Extract进程状态
GGSCI (node1) 4> INFO EXTRACT EORCL, DETAIL
EXTRACT EORCL Last Started 2026-01-26 10:00:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:03 ago)
Log Read Checkpoint Oracle Redo Logs
2026-01-26 10:30:00 Seqno 5, RBA 123456
— 查看Replicat进程状态
GGSCI (node1) 5> INFO REPLICAT RORCL, DETAIL
REPLICAT RORCL Last Started 2026-01-26 10:00:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint File ./dirdat/ea000000005
First Record RBA 0
5. Active Data Guard
Active Data Guard是Oracle Data Guard的高级功能,允许备用数据库在应用重做日志的同时,提供只读访问,提高资源利用率。
— 在备用数据库上执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;Database altered.
— 打开备用数据库为只读模式
ALTER DATABASE OPEN READ ONLY;Database altered.
— 查看备用数据库状态
SELECT database_role, open_mode, protection_mode
FROM v$database;DATABASE_ROLE OPEN_MODE PROTECTION_MODE
—————- ——————– ——————–
PHYSICAL STANDBY READ ONLY WITH APPLY MAXIMUM PERFORMANCE
— 在备用数据库上执行查询
SELECT COUNT(*) FROM employees;COUNT(*)
———-
107
— 查看重做应用状态
SELECT process, status, sequence#
FROM v$managed_standby;PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
RFS IDLE 6
RFS IDLE 0
MRP0 APPLYING_LOG 6
6. 备份与恢复
备份与恢复是高可用性的重要组成部分,通过定期备份数据库,可以在发生故障时快速恢复数据。
$ rman target /RMAN> BACKUP DATABASE PLUS ARCHIVELOG;Starting backup at 26-JAN-26
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 26-JAN-26
channel ORA_DISK_1: finished piece 1 at 26-JAN-26
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2026_01_26/o1_mf_nnndf_TAG20260126T100000_abcdefgh_.bkp tag=TAG20260126T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:00
channel ORA_DISK_1: starting archive log backup set
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=1 recid=1 stamp=1234567890
input archive log thread=1 sequence=2 recid=2 stamp=1234567900
input archive log thread=1 sequence=3 recid=3 stamp=1234567910
channel ORA_DISK_1: starting piece 1 at 26-JAN-26
channel ORA_DISK_1: finished piece 1 at 26-JAN-26
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2026_01_26/o1_mf_annnf_TAG20260126T100000_ijklmnop_.bkp tag=TAG20260126T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:00
Finished backup at 26-JAN-26
— 恢复数据库
RMAN> RUN {
> SHUTDOWN IMMEDIATE;> STARTUP MOUNT;> RESTORE DATABASE;> RECOVER DATABASE;> ALTER DATABASE OPEN;> }
— 查看备份状态
RMAN> LIST BACKUP SUMMARY;List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
——- — — – ———– ————— ——- ——- ———- —
1 B F A DISK 26-JAN-26 1 1 NO TAG20260126T100000
2 B A A DISK 26-JAN-26 1 1 NO TAG20260126T100000
7. 监控与管理
监控与管理是高可用性的重要组成部分,通过监控系统状态,可以及时发现和解决问题。
SELECT * FROM v$cluster_interconnects;NAME IP_ADDRESS IS_USED
—————- —————— ——-
eth1 192.168.1.100 YES
eth2 192.168.1.101 YES
— 监控Data Guard状态
SELECT * FROM v$dataguard_stats;NAME VALUE UNIT TIME_COMPUTED
—————————– ——————– —————————— ————
transport lag +00 00:00:00 day(2) to second(0) interval 26-JAN-26
apply lag +00 00:00:00 day(2) to second(0) interval 26-JAN-26
apply finish time +00 00:00:00.000000 day(2) to second(6) interval 26-JAN-26
estimated startup time 15 second 26-JAN-26
— 监控GoldenGate状态
GGSCI (node1) 1> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EORCL 00:00:00 00:00:05
REPLICAT RUNNING RORCL 00:00:00 00:00:03
— 使用Enterprise Manager监控
— 登录Enterprise Manager Cloud Control
https://node1:7799/em
— 查看数据库性能
SELECT * FROM v$sysstat WHERE name IN (‘db block gets’, ‘consistent gets’, ‘physical reads’);NAME CLASS VALUE
——————————– ———- ———-
db block gets 1 12345
consistent gets 1 67890
physical reads 1 5678
8. 最佳实践
1. 根据业务需求选择合适的高可用性解决方案
2. 实施多层次的高可用性策略,包括硬件冗余、软件冗余和数据冗余
3. 定期测试高可用性解决方案,确保其正常工作
4. 建立完善的监控和告警系统,及时发现和解决问题
5. 制定详细的灾难恢复计划,定期进行演练
6. 合理配置数据库参数,优化系统性能
7. 定期备份数据库,确保数据安全
8. 建立完善的文档,记录系统架构和操作流程
9. 培训运维人员,提高应急处理能力
10. 定期评估和更新高可用性策略,适应业务发展需求
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
