如何构建 Oracle DataGuard

分类:编程技术 时间:2024-02-20 15:58 浏览:0 评论:0
0
本文主要讲解“如何构建Oracle DataGuard”。文章中的讲解内容简单明了,易学易懂。请跟随小编的思路慢慢深入,一起研究学习《如何搭建Oracle DataGuard》!

一个准备

1.规划

< td width="184" valign="top">

主库

db01


备用库

ip

192.168 .131.100

192.168.131.101

instance_name

orcl1

orcl1

service_names

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> 更改数据库强制日志记录;

数据库已更改。

SQL> select force_logging from v$database;

FOR

---

YES

4. 主机文件配置(主数据库和备份数据库

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 =

(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> (地址 = (协议 = 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;

文件已创建。

(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)'

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=db01

standby_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=启用

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;

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%';

名称值

----------------------- ------------------ ------------------------

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

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有了更深入的了解。具体用法需要大家通过实践验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何构建 Oracle DataGuard

用户评论