DG搭建之windos上搭建物理standby
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,注:以下全部sql如果执行有误,请注意分号(;),转发文档请注明作者和出处。 一、DG环境 1、系统:primary和standby都是windows64 操作系统(如果有读者用的是linux操作系统
千家信息网最后更新 2025年01月24日DG搭建之windos上搭建物理standby注:以下全部sql如果执行有误,请注意分号(;),转发文档请注明作者和出处。 一、DG环境 1、系统:primary和standby都是windows64 操作系统(如果有读者用的是linux操作系统,以下操作亦可用,只是后面需要建立一些文件夹); 2、oracle版本:11.2.0.1.0,64bit 3、primary参数:(1)db_name:primary (2)db_unique_name:primary(3)sid:primary(4)由于没有db_domain,所以instance_name,service_name和global_dbname都为primary; 4、standby参数:(1)db_name:primary (2)db_unique_name:standby (3)sid:standby(4)由于没有db_domain,所以instance_name,service_name和global_dbname都为 primary; 5、主库IP:192.169.105.67 从库IP:192.169.99.105 6、需要注意的地方: (1)primary和standby数据库的db_name一定要一样,有很多人认为, 既然是要做dg,那么,我两个库自己建立自己的,到时候只要实时传输数据即可,其实不然, dg的建立主从库db_name必须一样; (2)primary和standby数据库的db_unique_name一定要不一样,因为区别primary和standby就是根据db_unique_name这个参数,这个参数配置只能通过建好库之后重新修改参数文件,想要在建库的时候直接填写是不能的; (3)保证primary和standby库sys密码相同,最好在建库的时候,设置密码的时候都用一个密码; (4)建议主从库数据库的安装路径,数据文件位置,文件夹位置保持一致,后面就会好设置,当然不一样也可以,可以在后面的参数设置中将替换的路径设置好。 二、正式搭建DG 1、配置主从库listener(监听)和tnsnames(网络服务名) (1)主库的listener配置,以下为配置文本:
注意:请注意我标红的配置,对于DG来说,一定要配置静态监听,在这里,考虑到某些读者可能不太理解静态监听和动态监听的区别,不过没关系,你只要知道SID_LIST_LISTENER是静态监听,LISTENER是动态监听就可以了,按照我的配置即可;当然,我可以顺便说一下为什么要配置静态监听,因为在后面所有的东西配置完以后,需要将主库某些文件拷贝到从库中,我要用到rman,从库处于nomount状态,在nomount状态下,直接rman target会报一个错,这个错的意思是识别不了服务,但是只有我库处于mount后,pmon动态注册服务之后才不会报这个错,但是我的从库又不允许mount,这是矛盾的,故需要静态注册服务,到时候从库处于nomount就可以进行rman了。 (2)从库的listener配置,以下为配置文本:
(3)主库tnsnames配置
(4)从库tnsnames配置,直接将主库的tnsnames复制过去即可; (5)tnsping一下,看看主从库是否可以通信,在主库和从库tnsping都可以,这里我在主库tnsping从库:如图: 看到OK就证明是可以通信的。 2、主库独有的配置 (1)主库必须处于归档状态 1、查看主库是否归档 SQL>archive log list; 如果主数据库未处于归档模式,可通过如下命令将数据库置于归档模式: SQL>shutdown immediate; SQL>startup mount; SQL>alter database archivelog; SQL>alter database open;
(2)查看并设置强制归档 SQL>alter database force logging; 查看一下是否已经强制归档:SQL>select force_logging from v$database;如果显示YES则证明设置强制归档成功。 (3)添加主库standby联机日志,在这里我添加了3组 SQL>alter database add standby logfile group 4 'D:\app\Administrator\oradata\primary\redo04.log' size 50m; SQL>alter database add standby logfile group 5 'D:\app\Administrator\oradata\primary\redo05.log' size 50m; SQL>alter database add standby logfile group 6 'D:\app\Administrator\oradata\primary\redo06.log' size 50m; (4)需要注意的是,同一个DG配置中所有数据库必须都拥有独立的密钥文件,并且必须保证同一个DG配置中。所有数据库服务器的sys用户拥有相同密码,以保证redo数据的顺利传输。因为redo传输服务是通过认证的网络会话来传输redo数据,而会话使用包含在密钥文件中的sys用户密码来认证。
3、主从库的参数配置 (1)主库参数配置,主要配置以下几点 1、SQL>create pfile='d:/pfile.ora' from spfile; 2、 生成文本之后,增加或者修改以下参数; *.db_unique_name='primary' --*.db_unique_name='主库唯一名' *.log_archive_config='dg_config=(primary,standby)' --*.log_archive_config='dg_config=(主库唯一名,从库唯一名) *.log_archive_dest_1='location=D:\app\Administrator\flash_recovery_area\primary\ARCHIVELOG VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' --*.log_archive_dest_1='location=本地归档路径 VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=主库唯一名',也就是说,不管是主库还是从库,都把online放到本地归档路径里面去 *.log_archive_dest_2='service=standby_dg valid_for=(online_logfiles,primary_role) db_unique_name=standby' --*.log_archive_dest_2='service=从库的tnsnames valid_for=(online_logfiles,primary_role) db_unique_name=从库唯一名',当角色是主库的时候,将通过从库的tnsnames发送online_redolog *.log_archive_dest_state_1=enable --是否允许redo传输服务传输redo数据到指定的路径,在这里我设置的enable,该参数共拥有4个属性值,功能各不相同,读者可自行查看官方文档 *.log_archive_dest_state_2=enable *.standby_file_management='auto' --如果primary数据库数据文件发生修改(如新建、重命名等)则按照本参数的设置在standby数据库中作相应修改。设为auto表示自动管理,设为manual表示需要手工管理 3、 参数设置好之后,用此静态参数文件替换动态参数文件;
(1)SQL>shutdown immediate; (2)关掉数据库之后,手动删除掉动态参数文件,我的主库动态参数文件位置为:D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEPRIMARY.ORA,删除之后,重建动态参数文件; (3)SQL>create spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEPRIMARY.ORA' from pfile='d:\pfile.ora'; (4)SQL>startup; (2)从库参数配置,请注意配置以下几点 1、SQL>create pfile='d:/pfile.ora' from spfile; 2、 生成文本之后,增加或者修改以下参数; *.db_unique_name='standby' *.log_archive_config='dg_config=(primary,standby)' *.log_archive_dest_1='location=D:\app\Administrator\flash_recovery_area\primary\ARCHIVELOG valid_for=(all_logfiles,all_roles) db_unique_name=standby'--这个意思在上面解释主库参数的时候已经解释过了,不过要特别注意的一点是,因为从库没有开启归档,所以是不存在ARCHIVELOG 这个文件夹的,所以必须在这个路径下手工将这个文件夹建好,不然会报错。 *.log_archive_dest_state_1='enable' *.log_file_name_convert='D:\app\Administrator\oradata\primary','D:\app\Administrator\oradata\primary'--*.log_file_name_convert='主库中日志文件的路径','从库中日志文件的路径' *.db_file_name_convert='D:\ORADATA','D:\ORADATA'--*.db_file_name_convert='主库中数据文件的路径','从库中数据文件的路径' *.standby_file_management='auto' 3、 参数设置好之后,用此静态参数文件替换动态参数文件; (1)SQL>shutdown immediate; (2)关掉数据库之后,手动删除掉动态参数文件,我的从库动态参数文件位置为:D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILESTANDBY.ORA,删除之后,重建动态参数文件; (3)SQL>create spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILESTANDBY.ORA' from pfile='d:\pfile.ora'; (4)SQL>alter database nomount; (5)接下来另外开一个命令窗口,在操作系统界面下进行rman。 三、rman duplicate 复制数据库,主要是复制主库相关数据到从库,这一步是在从库上操作的 (1)rman target sys/sys@primary_dg auxiliary sys/sys@standby_dg nocatalog (2)rman> duplicate target database for standby from active database nofilenamecheck; --如果从库的数据库的位置和主库的位置一样的话就要添加nofilenamecheck文件名不检查 (3)接下来就静静的等待复制成功。 注意:一、第一步会经常出错,报无法识别服务的错误,解决办法是配置静态监听; 二:第二步也会经常出错,报从库控制文件里面的数据库名错误,解决办法是,将主从数据库的DB_NAME改为一样的。 四、调试数据库 值得一提的是,这个时候从库已经处于mount 状态了,同时从库的归档已经自动打开。 以下操作均在在从库上操作。 (1)SQL>alter database open; (2)SQL>select process,client_process,sequence#,status from v$managed_standby ;--查看从库后台进程 (3)此时后台进程显示如下:
(4)SQL>alter database recover managed standby database disconnect from session;--启动MRP服务 (5)再次检查以下后台进程看看 SQL>select process,client_process,sequence#,status from v$managed_standby ; (6)此时后台进程显示如下:出现MRP0这个进程,证明开启MRP服务成功。
五、在主库修改数据看是否可以传输到从库 (1)以某个用户身份登录主库,新建立一个表dg_test SQL>create table dg_test(id varchar2(20),name varchar2(20)); (2)插入测试数据 SQL>insert into dg_test values ('1','张三'); SQL>insert into dg_test values ('2','李四'); SQL>commit; (3)SQL>alter system switch logfile; --主库写盘才会触发MRP进程 (4)在从库上同样以这个用户的身份登录,查看下这个表 如图可见,数据已经同步成功。
(5)自此,物理standby已经搭建成功。
注意:请注意我标红的配置,对于DG来说,一定要配置静态监听,在这里,考虑到某些读者可能不太理解静态监听和动态监听的区别,不过没关系,你只要知道SID_LIST_LISTENER是静态监听,LISTENER是动态监听就可以了,按照我的配置即可;当然,我可以顺便说一下为什么要配置静态监听,因为在后面所有的东西配置完以后,需要将主库某些文件拷贝到从库中,我要用到rman,从库处于nomount状态,在nomount状态下,直接rman target会报一个错,这个错的意思是识别不了服务,但是只有我库处于mount后,pmon动态注册服务之后才不会报这个错,但是我的从库又不允许mount,这是矛盾的,故需要静态注册服务,到时候从库处于nomount就可以进行rman了。 (2)从库的listener配置,以下为配置文本:
(3)主库tnsnames配置
(4)从库tnsnames配置,直接将主库的tnsnames复制过去即可; (5)tnsping一下,看看主从库是否可以通信,在主库和从库tnsping都可以,这里我在主库tnsping从库:如图: 看到OK就证明是可以通信的。 2、主库独有的配置 (1)主库必须处于归档状态 1、查看主库是否归档 SQL>archive log list; 如果主数据库未处于归档模式,可通过如下命令将数据库置于归档模式: SQL>shutdown immediate; SQL>startup mount; SQL>alter database archivelog; SQL>alter database open;
(2)查看并设置强制归档 SQL>alter database force logging; 查看一下是否已经强制归档:SQL>select force_logging from v$database;如果显示YES则证明设置强制归档成功。 (3)添加主库standby联机日志,在这里我添加了3组 SQL>alter database add standby logfile group 4 'D:\app\Administrator\oradata\primary\redo04.log' size 50m; SQL>alter database add standby logfile group 5 'D:\app\Administrator\oradata\primary\redo05.log' size 50m; SQL>alter database add standby logfile group 6 'D:\app\Administrator\oradata\primary\redo06.log' size 50m; (4)需要注意的是,同一个DG配置中所有数据库必须都拥有独立的密钥文件,并且必须保证同一个DG配置中。所有数据库服务器的sys用户拥有相同密码,以保证redo数据的顺利传输。因为redo传输服务是通过认证的网络会话来传输redo数据,而会话使用包含在密钥文件中的sys用户密码来认证。
3、主从库的参数配置 (1)主库参数配置,主要配置以下几点 1、SQL>create pfile='d:/pfile.ora' from spfile; 2、 生成文本之后,增加或者修改以下参数; *.db_unique_name='primary' --*.db_unique_name='主库唯一名' *.log_archive_config='dg_config=(primary,standby)' --*.log_archive_config='dg_config=(主库唯一名,从库唯一名) *.log_archive_dest_1='location=D:\app\Administrator\flash_recovery_area\primary\ARCHIVELOG VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' --*.log_archive_dest_1='location=本地归档路径 VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=主库唯一名',也就是说,不管是主库还是从库,都把online放到本地归档路径里面去 *.log_archive_dest_2='service=standby_dg valid_for=(online_logfiles,primary_role) db_unique_name=standby' --*.log_archive_dest_2='service=从库的tnsnames valid_for=(online_logfiles,primary_role) db_unique_name=从库唯一名',当角色是主库的时候,将通过从库的tnsnames发送online_redolog *.log_archive_dest_state_1=enable --是否允许redo传输服务传输redo数据到指定的路径,在这里我设置的enable,该参数共拥有4个属性值,功能各不相同,读者可自行查看官方文档 *.log_archive_dest_state_2=enable *.standby_file_management='auto' --如果primary数据库数据文件发生修改(如新建、重命名等)则按照本参数的设置在standby数据库中作相应修改。设为auto表示自动管理,设为manual表示需要手工管理 3、 参数设置好之后,用此静态参数文件替换动态参数文件;
(1)SQL>shutdown immediate; (2)关掉数据库之后,手动删除掉动态参数文件,我的主库动态参数文件位置为:D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEPRIMARY.ORA,删除之后,重建动态参数文件; (3)SQL>create spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEPRIMARY.ORA' from pfile='d:\pfile.ora'; (4)SQL>startup; (2)从库参数配置,请注意配置以下几点 1、SQL>create pfile='d:/pfile.ora' from spfile; 2、 生成文本之后,增加或者修改以下参数; *.db_unique_name='standby' *.log_archive_config='dg_config=(primary,standby)' *.log_archive_dest_1='location=D:\app\Administrator\flash_recovery_area\primary\ARCHIVELOG valid_for=(all_logfiles,all_roles) db_unique_name=standby'--这个意思在上面解释主库参数的时候已经解释过了,不过要特别注意的一点是,因为从库没有开启归档,所以是不存在ARCHIVELOG 这个文件夹的,所以必须在这个路径下手工将这个文件夹建好,不然会报错。 *.log_archive_dest_state_1='enable' *.log_file_name_convert='D:\app\Administrator\oradata\primary','D:\app\Administrator\oradata\primary'--*.log_file_name_convert='主库中日志文件的路径','从库中日志文件的路径' *.db_file_name_convert='D:\ORADATA','D:\ORADATA'--*.db_file_name_convert='主库中数据文件的路径','从库中数据文件的路径' *.standby_file_management='auto' 3、 参数设置好之后,用此静态参数文件替换动态参数文件; (1)SQL>shutdown immediate; (2)关掉数据库之后,手动删除掉动态参数文件,我的从库动态参数文件位置为:D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILESTANDBY.ORA,删除之后,重建动态参数文件; (3)SQL>create spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILESTANDBY.ORA' from pfile='d:\pfile.ora'; (4)SQL>alter database nomount; (5)接下来另外开一个命令窗口,在操作系统界面下进行rman。 三、rman duplicate 复制数据库,主要是复制主库相关数据到从库,这一步是在从库上操作的 (1)rman target sys/sys@primary_dg auxiliary sys/sys@standby_dg nocatalog (2)rman> duplicate target database for standby from active database nofilenamecheck; --如果从库的数据库的位置和主库的位置一样的话就要添加nofilenamecheck文件名不检查 (3)接下来就静静的等待复制成功。 注意:一、第一步会经常出错,报无法识别服务的错误,解决办法是配置静态监听; 二:第二步也会经常出错,报从库控制文件里面的数据库名错误,解决办法是,将主从数据库的DB_NAME改为一样的。 四、调试数据库 值得一提的是,这个时候从库已经处于mount 状态了,同时从库的归档已经自动打开。 以下操作均在在从库上操作。 (1)SQL>alter database open; (2)SQL>select process,client_process,sequence#,status from v$managed_standby ;--查看从库后台进程 (3)此时后台进程显示如下:
(4)SQL>alter database recover managed standby database disconnect from session;--启动MRP服务 (5)再次检查以下后台进程看看 SQL>select process,client_process,sequence#,status from v$managed_standby ; (6)此时后台进程显示如下:出现MRP0这个进程,证明开启MRP服务成功。
五、在主库修改数据看是否可以传输到从库 (1)以某个用户身份登录主库,新建立一个表dg_test SQL>create table dg_test(id varchar2(20),name varchar2(20)); (2)插入测试数据 SQL>insert into dg_test values ('1','张三'); SQL>insert into dg_test values ('2','李四'); SQL>commit; (3)SQL>alter system switch logfile; --主库写盘才会触发MRP进程 (4)在从库上同样以这个用户的身份登录,查看下这个表 如图可见,数据已经同步成功。
(5)自此,物理standby已经搭建成功。
数据
参数
文件
配置
数据库
动态
路径
服务
静态
监听
传输
主从
位置
时候
进程
成功
密码
后台
文件夹
文本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京软件开发劳务外包
数据库先收缩后备份
云南网络安全的例子
服务器怎么还原到一小时前
网络技术就是按网线的吗
什么叫具备软件开发能力
网络安全的消息
java软件开发不了怎么办
服务器系统修复需要几天
湛江微信软件开发咨询
四层网络安全设备
php中连接数据库时用那个语句
mysql数据库上传下载慢
美国云服务器恒创科技信赖
slb数据库
唐山电脑软件开发
望城软件开发测试
软件开发区私企还是国企
西宁软件开发学校
大华平台管理服务器调试
信息软件开发汇报
软件测试使用数据库案例
长宁区提供数据库销售代理品牌
snp功能分析预测数据库
java 存储图片数据库
服务器现场交付流程
wow台服服务器人多
数据库能导出json吗
服务器 增强型
08数据库如何查看1433补丁