墨墨导读:一个单节点RAC,要做一套Data Guard,但是备库能给数据库的内存只有主库的一半左右,可以实现吗?答案是可以的,本文详述整个过程。
一.概况
1. 涉及的技术点
1)RAC作为primary database,nonRAC作为standby database
2)使用RMAN作为数据库的备份方式
3)使用Backup-based duplication方式创建备库
4)主库使用ASM存储方式,备库使用filesystem作为存储
5)使用standby logfile,开启日志实时更新
2. 主备库信息表概要
Primary(RAC) | Standby(fs) | |
---|---|---|
HOSTNAME | yukki | fuzhou |
DB_NAME | cs | cs |
ORACLE_SID | cs1 | stbcs1 |
DB_UNIQUE_NAME | cs | stby |
SERVICE_NAMES | cs_pri | cs_stb |
INSTANCE_NAME | cs1 | stbcs1 |
INSTANCE_NUMBER | 1 | 1 |
thread | 1 | 1 |
TEMPFILE_LOCATION | +DATA/cs/tempfile | /u01/db/oradata |
二.Primary主库配置
1. 查看Managed Standby组件
SYS@ cs1>select * from v$option where lower(parameter)='managed standby';
PARAMETER VALUE---------------------------------------------------------------- ---------------------------------------------------------------Managed Standby TRUE
请确保该值为true
2. 检查remote_login_passwordfile的设置
SYS@ cs1>show parameter remote_login_passwordfile
NAME TYPE VALUE------------------------------------ ----------- ------------------------------remote_login_passwordfile string EXCLUSIVE
若该参数不为exclusive,则按照以下命令修改,并重启使其生效
SYS@ cs1>alter system set remote_login=exclusive scope=spfile;
3. 检查数据库是否为归档模式
SYS@ cs1>archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination +DATAOldest online log sequence 87Next log sequence to archive 89Current log sequence 89
若为非归档模式,则需要干净的关闭数据库后,启动到mount模式,修改为归档模式后再开库
SYS@ cs1>shutdown immediateSYS@ cs1>startup mountSYS@ cs1>alter database archivelog;SYS@ cs1>alter database open;SYS@ cs1>select log_mode from v$database;
4. 检查数据库是否开启force logging
SYS@ cs1>select name,force_logging from v$database;
NAME FOR--------- ---CS YES
若数据库未开启force logging,则
SYS@ cs1>alter database force logging;SYS@ cs1>select name,force_logging from v$database;SYS@ cs1>alter system archive log current;
5. 检查主库口令文件的MD5值
[oracle@yukki dbs]$ openssl md5 orapwcs1MD5(orapwcs1)= 7836520c978614723e57330e12ccbe90
要确保主备库口令文件的MD5值相同,即使sys的密钥相同也不行
6. 主库参数修改
SYS@ cs1>alter system set db_unique_name=cs scope=spfile;SYS@ cs1>alter system set log_archive_config='dg_config=(cs,stby)';SYS@ cs1>alter system set log_archive_dest_1='location=+DATA valid_for=(all_logfiles,all_roles) db_unique_name=cs';SYS@ cs1>alter system set log_archive_dest_2='service=dbstandby async valid_for=(online_logfiles,primary_roles) db_unique_name=stby';SYS@ cs1>alter system set log_archive_dest_state_1=enable;SYS@ cs1>alter system set log_archive_dest_state_2=enable;SYS@ cs1>alter system set log_archive_max_processes=30;SYS@ cs1>alter system set fal_server=dbstandby;SYS@ cs1>alter system set standby_file_management=auto;SYS@ cs1>alter system set db_file_name_convert='+DATA/cs/datafile, /u01/db/oradata' scope=spfile;SYS@ cs1>alter system