使用集中式灾备系统硬件资源,基于该硬件资源及操作系统,分别建立用于Oracle 12C、11G数据库灾备系统资源及用户。进行灾备数据库环境逻辑隔离,通过该集中式系统对主用12C、11G数据库进行集中式灾备及管理,同时承担数据库查询用户需要的有效实时查询服务。
需要实时将生产系统12C(多套PDB数据库)、11G主数据库数据,通过Data Guard技术进行实时数据库同步,做到集中灾备数据库中数据副本与主数据库完全镜像,并向数据库查询用户提供实时性数据查询业务,集中式灾备数据库在主数据库无法向数据库级用户提供服务时,可以通过激活集中式灾备数据库中12C(多套PDB数据库)、11G数据库,恢复对数据库级用户提供数据库数据操作能力。
对 12C(多套PDB数 据库)、11G数据库进行完全备份同步,数据副本处于毫秒级实时同步。集中式灾备系统中的12C(多套PDB数据库)、11G全镜像副本数据库,激活时间在5分钟内。同时集中式灾备数据库具有向200-300个数据库级查询用户提供服务能力。
系统的架构图如图1所示。
图1 系统架构图
操作系统:AIX
并发文件系统:GPFS
共享文件目录:/data
IP地址规划如表1所示。
1.创建12C、11G数据库用户。
使用AIX操作系统命令smitty分别为12C、11G数据库增加操作系统级用户oracle12、oracle,确保用户属组符合如下要求:
用户目录定义如下:
2.创建12C、11G数据库用户环境变量。
(1)12C数据库用户环境变量。
使用 vi .profile命令,编辑环境变量,并确保文件中包含如图2所示的行。
表1 IP地址规划
图2 12C数据库用户环境变量编辑
(2)11G数据库用户环境变量。
使用“vi .profile”命令,编辑环境变量,并确保文件中包含如图3所示的行。
(3)分别以 12C、11G数据库用户安装12C、11G数据库管理软件(RDBMS),具体过程详见数据库安装手册。
1.配置12C主、备数据库(TNS)别名,确保TNS可达。
修改12C主、备数据库$ORACLE_HOME/network/admin/tnsnames.ora文 件,并确保包含图4所示内容。
2.配置11G主、备数据库(TNS)别名,并确保TNS可达。
修改11G主、备数据库$ORACLE_HOME/network/admin/tnsnames.ora文 件,并确保包含如图5所示内容。
图3 11G数据库用户环境变量编辑
图4 修改12C主、备数据库文件
图5 修改11G主、备数据库文件
以11G为例,与12C部署配置过程兼容。
1.修改主数据库为日志模式,使用如下命令:Alter database force logging;
2.查看强制日志模式生效:Select force_logging from v$database;
3.添加STANDBY日志文件。
(1)在主库中使用ORACLE用户登录系统并执行依次执行如下命令:
如图6可以看到 1、2、5日志组属于1号实例(即主机 A),3、4、6日志组属于2号实例(即主机B)。
(2)向主库添加STANDBY的logfile,并确保文件大小等于查询中logfile大小,同时需要保证STANDBY的logfile多于主机文件组。
例子中日志组为6个,主库一号节点、二号节点各三个,我们使用如图7命令添加STANDBY的logfile。
图6 各日志组显示信息
图7 添加STANDBY的logfile
添加完成后,使用命令:
如果返回如下行(如图8),说明添加 STANDBY 日志组成功。
4.复制主库口令文件到灾备系统中。
将主库$ORACLE_HOME/dbs目录中的orapw+SID文件通过FTP或相应工具远程复制到灾备库$ORACLE_HOME/dbs中并将文件名命名为orapw+SID(灾备)。
5. 参数生成。
(1)主库端操作。
使 用Sqlplus/as sysdba登录主数据库,使用命令“Create pfile=’PATH’from spfile”,将 当前主数据库参数文件导出成PFILE格式参数文件,并通过FTP或相关工具远程复制到灾备数据库。
(2)集中式灾备数据库端操作。
使用编辑工具对从主库中传输的参数文件进行修改,增加如下内容:
图8 成功添加日志组
6.按照参数文件中的参数定义创建相应目录,其中包含audit_file_dest,control_files,db_unique_name,db_recovery_file_dest。
7.复制主库全库备份文件至集中式灾备系统。
8.生成STANDBY控制文件。
(1)主库端操作。
在ORACLE用户下依次执行如下命令:
PATH需要用户自行指定。
(2)复制生成的控制文件备份至集中式灾备系统全库备份目录中。
(3)集中式灾备数据库端操作。
在$ORACLE_HOME/dbs中创建了init+SID.ora文件,并添加如下内容:
其中SPFILE路径需要用户根据项目名称进行定义,项目实施过程中建议用户采用工程化目录结构,以项目名称为子目录并在该目录中保存灾备数据库的参数文件、控制文件以及数据文件。
在ORACLE用户下依次执行如下命令:
等待灾备库建成。
(4)灾备库建成后进行数据同步。
①主库端操作:
②集中式灾备系统端操作:
5.以只读方式打开灾备库,并进行归档实时同步。
终止同步后台进程(终止前需要检查V$log中的主、备日志序列SCN号)。
②使用如下命令:alter database open;
灾备数据库以只读方式打开,可供查询用户使用。
③使用如下命令:
启动灾备数据库后台实时同步进程。
灾备数据库建立后可以自动完成数据库与主库实时同步,并向查询用户提供实时数据查询服务。
1.创建定时执行脚本,使用命令vi dszx_oracle11g DBfull脚本,脚本主要内容如图9。
相关变量参数值需要根据用户实际环境进行对照修改。
2.创建全库备份及失效备份文件清理RMAN脚本。
(1)使用命令“vioracle11gdbfull”,编辑文件内容如图10。
(2)使用命令“vioracle11gdel_obsolete”,编辑文件内容如下:
3.使用crontab制定计划任务,完成系统自动清理定义。
图9 创建定时执行脚本
图10 使用命令“vi oracle11gdbfull”编辑文件
图11 编辑生成convert_primary_oracle11g.sql文件
1.在系统管理员PC机中创建指向主数据库及灾备数据库的网络服务名。
2.在系统管理员PC机中创建灾备管理工程目录,并依次建立如下管理脚本。
(1)STANDBY数据库转换为主库激活脚本。
①编辑生成convert_primary.bat文件,内容如下:
②编辑生成convert_primary_oracle11g.sql文件,内容如图11。
(2)STANDBY数据库转换为测试库激活脚本。
①编辑生成convert_primary.bat文件,内容如下:
集中式灾备数据库建立完成后,由于主库会不断向集中式灾备系统推送实时更新日志,因此灾备数据库需要有能力判别归档数据文件的有效性并及时清理使用过的过期日志归档文件,并对自己进行全库备份,灾备库中的全库备份也可以用来对主库进行数据库或表的有效恢复。有效的保证了全库备份的异地双副本实现。
灾备数据库还提供了一个独特的功能和优点,如果主数据库上发生块损坏(导致ORA-1578),Oracle Active Data Guard配置中将自动执行块恢复,终端用户甚至不会意识到发生了块损坏。对既有数据库进行集中式灾备,既可提供良好的数据库主库故障快速迁移;同时又可利用灾备数据库进行部分弱实时性用户对数据库的查询业务,降低对主库的查询性能损耗。从而实现更大范围的并行化系统需求。