如何构建 Oracle DataGuard
一个,准备
1.规划
备用库 | ||
ip | 192.168 .131.100 | 192.168.131.101 |
instance_name | orcl1 | orcl1 |
service_names | db01 | db02 |
db_unique_name | db01 | db02 |
主机名< /p> | 主用 | 备用< /p> |
操作系统版本 | Oracle Linux 6.4 | Oracle Linux 6.4 |
数据库版本 | 11.2.0.4 | 11.2.0.4 |
< br/>2.关闭防火墙strong>
service iptables stop
chkconfig iptables off
3.禁用selinux防火墙
vi /etc/selinux/config
selinux=disabled
第二次,启用归档模式(主备数据库)
<强>1。创建归档目录
[oracle@primary ~]# mkdir -p /u01/app/oracle/archivelog
2、开启归档模式
(1)数据库达到mount状态,开启归档模式
[root @primary ~]# su - oracle
[oracle@primary ~]$ sqlplus / as sysdba
SQL>启动挂载;
ORACLE实例已启动。< /p>
系统全局区域总计 776646656 字节
固定大小 2257272 字节
可变大小 507514504 字节
数据库缓冲区 264241152 字节
< p>Redo Buffers 2633728 bytes数据库挂载。
(2)设置主库Archive目录
SQL> alter system set log_archive_dest_1='location=/ u01/app/oracle/archivelog';
(3)开启归档模式
SQL> alter database archivelog;
数据库已更改。
(4)查看归档设置
SQL>归档日志列表;
数据库日志模式 归档模式
自动归档启用
归档目标 /u01/app/oracle/archivelog
最早的在线日志序列 2
下一个要归档的日志序列 4
当前日志序列 4
>(5)打开数据库
SQL> alter database open;
数据库更改。
三, 强制主数据库处于强制日志模式(主库)
SQL> select来自 v$database 的force_logging;
FOR
---
NO
p>SQL> 更改数据库强制日志记录; p>
数据库已更改。
SQL> select force_logging from v$database;
FOR
---
YES
4. 主机文件配置(主数据库和备份数据库) p>
root用户(主备数据库相同)
[root@primary ~ ]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain
#主数据库IP
192.168.131.100 Primary
#备用数据库IP
192.168.131.101备用
五个、配置l intener & tnsnames(主备数据库)
Oracle 用户
1. 主备数据库监听配置
(1)主数据库监听配置
[oracle@primary ~]$ vi $ORACLE_HOME/network /admin/listener.ora
(添加以下内容)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC = p>
(GLOBAL_DBNAME = orcl1)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl1)
)
)
< p>(2)备库监控配置[oracle@primary ~]$ vi$ORACLE_HOME/network/admin/listener .ora
(添加以下内容)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl1)
(ORACLE_HOME = /u01/app/oracle /product/11.2.0/db_1)
(SID_NAME = orcl1)
)
)
2.修改tnsnames.ora文件(主备库)
(1)主库修改
[oracle@primary ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
< p>db01 =(DESCRIPTION =
(地址 = (协议 = TCP)(HOST = Primary)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1) ##The这里的 service_name 应该等于上面的 GLOBAL_NAME 值
)
)
db02 =
(DESCRIPTION = p>< p> (地址 = (协议 = TCP)(主机 = 备用)(端口 = 1521))
(CONNECT_DATA =
(服务器 = 专用)
(SERVICE_NAME = orcl1)
)
)
(2)备库修改
[oracle@primary ~] $ vi $ ORACLE_HOME/network/admin/tnsnames.ora
db01 =
(DESCRIPTION =
(地址 = (协议 = TCP)(主机 = 主设备)(端口 = 1521))
(CONNECT_DATA =
(服务器 =专用)
(SERVICE_NAME = orcl1)
)
)
db02 =
(DESCRIPTION =< /p>
(ADDRESS = (协议 = TCP)(主机 = 备用)(端口 = 1521))
(CONNECT_DATA =
(服务器 = 专用)
(SERVICE_NAME = orcl1)
(UR=A)
)
)
(3) 主备数据库检测(主库和备份库)
[oracle@primary admin]$ tnsping db01
适用于 Linux 的 TNS Ping 实用程序:版本 11.2.0.4.0 - 7 月 11 日生产 - 2023 08:48:56
版权所有 (c) 1997、2013,Oracle。保留所有权利。
使用的参数文件:
使用 TNSNAMES 适配器解析别名
尝试联系 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = Primary)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1)))
确定(10 毫秒)
[oracle@primary admin ]$ tnsping db02
L 的 TNS Ping 实用程序inux:版本 11.2.0.4.0 - 于 2023 年 7 月 11 日 08:49:01 生产
版权所有 (c) 1997,2013,Oracle。保留所有权利。
使用的参数文件:
使用 TNSNAMES 适配器解析别名
尝试联系 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 备用)(PORT = 1521)) ( CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1) (UR=A)))
确定(10 毫秒)
六、修改参数文件(主备库)
<强>1。修改主库strong>参数
(1)生成参数文件
SQL> create pfile from spfile; p>
文件已创建。
(2)修改参数文件
[oracle@primary ~]$ cd /u01/app/oracle/product/11.2.0/db_1 /dbs
[oracle @primary dbs]$ vi initorcl1.ora
添加以下内容:
db_unique_name=db01
log_archive_config= 'dg_config=(db01,db02)' p>
log_archive_dest_1='location=/u01/app/oracle/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=db01'
log_archive_dest_2='service=db02 lgwr async valid_for=(online_logfiles,primary_roles) db_unique_name=db02'
log_archive_dest_state_1=启用
log_archive_dest_state_2=启用
db_file_name_convert='/u01/app/oracle/oradata/orcl2','/u01/app/oracle/oradata/orcl1 '
log_file_name_convert='/u01/app/oracle/oradata/orcl2','/u01/app/oracle/oradata/orcl1'
fal_server=db02
< p>fal_client=db01standby_file_management=auto
(3)生成spfile(关机状态)
create spfile from pfile='/u01/app/oracle /product/11.2.0/db_1 /dbs/initorcl1.ora';
(4)启动数据库
startup(使新参数生效)
< p>2。修改备库参数(1)生成参数文件
SQL> create pfile from spfile;
文件已创建。
(2)修改参数文件
[oracle@primary ~]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@primary dbs]$ vi initorcl1.ora
添加以下内容:
db_unique_name=db02
log_archive_config='dg_config=(db01,db02)'
log_archive_dest_1='location=/u01/app/oracle/archivelog valid_for =(all_logfiles,all_roles) db_unique_name=db02'
log_archive_dest_2='service=db01 lgwr async valid_for=(online_logfiles,primary_roles) db_unique_name=db01'
log_archive_dest_state_1=enable
log_archive_dest_state_2=启用 p>
db_file_name_convert='/u01/app/oracle/oradata/orcl1','/u01/app/oracle/oradata/orcl2'
log_file_name_convert=' /u01/app/oracle/oradata /orcl1','/u01/app/oracle/oradata/orcl2'
fal_server=db01
fal_client=db02
standby_file_management=auto // 如果要修改备日志文件的大小,需要将这里的auto改为manual
**************** **
(3)生成spfile(关机状态)
create spfile from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl1.ora';
(4)打开数据库
启动(使新参数生效)
<强>七、复制数据库
1.备用数据库开启为nomount模式
SQL> shutdown立即;
SQL>startup nomount; p>
2. RMAN 执行复制复制(主数据库)
[oracle @primary ~]$ rman target sys/ oracle@db01辅助sys/oracle@db02
RMAN>从活动数据库复制目标数据库用于备用nofilenamecheck;
至此,已经完成DataGuard构建部分!
八。查询主备数据库角色
1. 主数据库查询
SQL> col db_unique_name for a15
SQL> select db_unique_name,open_mode,database_role,switchov来自 v$database 的 er_status;
DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
------------------------ ------------------------ --------------- ----------- ---------
db01 读写 初级会议活跃
2. 备用数据库查询
SQL> col db_unique_name for a15
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;< /p>
DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------------------------- - ----------------- - ----------------- -----
db02 只读且不允许应用物理待机
3 .参数设置检查
SQL> col name for a25
SQL> col value for a30
p>SQL> selecta.name, a.value from v$parameter a where a.name like '%file_name_convert' or a.name like '%fal%' or a.name like 'standby_file%'; p>
名称值
----------------------- ------------------ ------------------------
db_file_name_convert /u01/app/ oracle/oradata/orcl2,
p>
log_file_name_convert /u01/app/oracle/oradata/orcl2,
/u01/app/oracle/oradata/orcl1
fal_client db01
fal_server db02
standby_file_management auto
九、备用数据库添加备用日志组(备用数据库)
1.查看数据库日志组
检查数据库日志组的数量和大小,因为我们创建的备用日志组的数量就是原始日志的数量groups + 1 那么与线程的乘积((1)*3),大小不能小于原始日志文件的大小。
SQL> select group#,thread#,bytes/1024/1024 M,status from v$log;
GROUP# THREAD# M STATUS
- --------- ---------- ---------- ----------------
< p> 1 1 50 未使用2 1 50 正在清理
3 1 50 CURRENT
SQL> 从 v$logfile 中选择成员;
MEMBER
---------------------------- ------------------------------------------------------------------ ------------------
/u01/app/oracle/oradata/orcl2/redo03.log
/u01/app /oracle/oradata/orcl2/redo02.log
/u01/app/oracle/oradata/orcl2/redo01.log
2.创建新的备用日志组
SQL> alter database addstandby logfile thread 1 group 4
2 ('/u01/app /oracle/oradata/orcl2/redo04 .log') size 50M;
数据库已更改。
SQL> alter database addstandby logfile thread 1 group 5
2 ('/u01/app/ oracle/oradata/orcl2/redo05.log') size 50M;
数据库已更改。
SQL> alter database addstandby logfile thread 1 group 6
2 ('/u01/app/oracle /oradata/orcl2/redo06.log') size 50M;
数据库已更改。
SQL> alter database addstandby logfile thread 1 group 7< /p>
2 ('/u01/app/oracle/oradata/orcl2/redo07.log') 大小 50M;
数据库已更改。
3.查看日志组状态
SQL > 选择组#,状态,type,member from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------ - ----- ----------------------------------------------------------- --- -----
3 3 在线 /u01/app/oracle/oradata/orcl2/redo03.log
2 在线 /u01/app/oracle/oradata/orcl2/redo02 .log
1 在线 /u01/app/oracle/oradata/orcl2/redo01.log
4 待机 /u01/app/oracle/oradata/orcl2/redo04.log p>
5 5 待机 /u01/app/oracle/oradata/orcl2/redo05.log
6 待机 /u01/app/ Oracle/Oracata/ORCL2/Redo06.LOG
< p> 7 备用 /U01/APP/oraCle/oradata/orCl2/Redo07.log ,备用数据库应用日志SQL> alter数据库使用当前日志文件恢复托管备用数据库与会话断开连接;
11个、 验证数据库操作化
1.在主数据库中创建用户
SQL>创建由test标识的用户测试; p>
用户已创建。
SQL> alter system switch logfile;
系统已更改。
2,在备库中查看
SQL> select username from dba_users where username='TEST';
USERNAME
--------------------------------------
测试
感谢您的阅读。以上就是《如何搭建Oracle DataGuard》的内容。学习完本文后,相信您对如何构建Oracle DataGuard有了更深入的了解。具体用法需要大家通过实践验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何构建 Oracle DataGuard