Oracle12c DataGuard 物理备库的简单配置

来源:互联网 发布:淘宝一件代发挣钱吗 编辑:程序博客网 时间:2024/05/18 20:47

一.oracle data guard 主要用于确保企业数据的高可用,数据保护和容灾恢复。

二.典型的dg 配置包含一个主库和一个或若干个备库。主库用于正常的企业操作使用,并且将redo 数据传送到备库中。备库可以在远程机器上,也可以再本机。通常配置如下图tongchangpeizhi

三.data guard 的保护模式

①Maximum availability这种保护模式提供了最高级别的数据保护,不惜牺牲主库的可用性。在这种模式下,只有主库产生的需要recover的那些redo data 至少写入到了一个相同步的standby database 的standby redo log里,主库的事务才会提交。这种模式确保了数据的零丢失

②Maximum performance这种模式是data guard默认的保护模式,也算是最高级别的保护模式,不过不会影响主库的性能。只要事物产生的那些redo data 被写到了online log上事物就可以提交。这些redo data也需要向其他一个或多个的备库写,它可以和事物提交不同步。所以主库的性能在向备库写 redo data时不会受到影响。

③Maximum protection这种模式可以 确保当主机宕机时没有数据丢失。这种模式是在提交事物之前必须将要恢复的redo data写入到online log  和至少一个的standby database中,为了防止数据丢失,当redo data无法写入到被库时,主库直接shutdown。

四.配置

主库

IP:                                               192.168.163.139

sid:                                              eras

db_unique_name:                        primary

 

备库

IP:                                              192.168.163.140

sid:                                               eras

db_unique_name                          standby

1.数据库设置为归档模式,归档目录/home/oracle/archivelog/

关闭数据库,重启加载 sql>shutdown immediate;              sql>startup mount;

设置归档,并创建归档目录sql>alter database archivelog;                                                    sql>!mkdir -p /home/oracle/archivelog

设置主备参数 sql>alter system set log_archive_dest_1=’location=/home/oracle/archivelog/ valid_for=(all_logfiles,all_roles) db_unqique_name=primary’ scope=spfile;      (主库)

sql>alter system set  log_archive_dest_1=’location=/home/oracle/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=standby’ scope=spfile;   (备库)

设置归档日志格式sql>alter system set log_archive_format=’%t_%s_%r.arc’ scope =spfile;

sql>alter system set remote_login_passwordfile=exclusive scope =spfile;

sql> alter database open

sql>alter system archive log start;

2.启用数据库闪回功能

查看闪回目录sql>show parameter db_recovery_file_dest;

修改闪回目录打下sql>alter system set db_recovery_file_dest_size=10G;

查看闪回功能的启用状态sql>select flashback_on from v$database;

启用闪回功能sql>alter database flashback on;

3.查看data guard是否安装,如未安装,需安装

sql>select * from v$option where parameter=’Oracle Data Guard’;

4.设置强制记录日志

sql>alter database force logging;

5.设置自动管理备库文件

sql>alter system set standby_file_management=’AUTO’;

6.添加日志文件组

在建立standby logfile时需要注意,standby logfile的大小不小于online redo log files的大小

查询 online redo log files 的大小 sql>select group#,bytes/1024/1024 as M from v$log;

一般,standby logfiles 日志文件组数要比primary数据库的online redo log files 日志文件组数至少多一个。

※不建议组号group#紧挨着online redo log file的组号,可以从11到14建立standby logfile

新建目录dg

sql>!mkdir /u01/app/oracle/oradata/eras/dg

sql>!chmod 777 /u01/app/oracle/oradata/eras/dg

添加日志文件组

sql>alter database add standby logfile group 11 ‘/u01/app/oracle/oradata/eras/dg/standby11.log’ size 50M;

sql>alter database add standby logfile group 12 ‘/u01/app/oracle/oradata/eras/dg/standby12.log’ size 50M;

sql>alter database add standby logfile group 13 ‘/u01/app/oracle/oradata/eras/dg/standby13.log’ size 50M;

sql>alter database add standby logfile group 14 ‘/u01/app/oracle/oradata/eras/dg/standby14.log’ size 50M;

 

※以上所有步骤,出标有主备的其他的主备库都一样。都需要执行一遍。

7.配置db_unique_name

先查看db_unique_name    sql>show parameter db_unique_name;

主库: sql>alter system set db_unique_name=’primary’ scope=spfile;

备库:   sql>alter system set db_unique_name=’standby’ scope=spfile;

名字加上引号保存的就是小写的,不加引号会自动保存成大写。

8.配置fal_server

主库:  sql>alter system set fal_server=’standby’ scope=spfile;

sql>alter system set log_archive_config=’dg_config=(primary,standby)’ scope=spfile;

备库:  sql>alter system set fal_server=’primary’ scope=spfile;

sql>alter system set log_archive_config=’dg_config=(primary,standby)’ scope=spfile;

9.配置重做日志到备库

主库: sql>alter system set log_archive_dest_2=’service=standby async valid_for=(online_logfiles,primary_role) db_unique_name=standby’ scope=spfile;

备库: sql>alter system set log_archive_dest_2=’service=primary async valid_for=(online_logfiles,primary_role) db_unique_name=primary’ scope=spfile;

10.复制主库密码文件到备库

密码文件位置为$ORACLE_HOME/dbs/orapweras

//生成密码文件(如果没有的话)

//orapwd file=$ORACLE_HOME/dbs/orapweras password=Oracle1521

关闭主备库

sql>shutdown immediate;

复制文件

scp  /u01/app/oracle/product/12.1.0.2/db_1/dbs/orapweras   oracle@192.168.163.140:/u01/app/oracle/product/12.1.0.2/db_1/dbs

提示输入密码

备库oracle用户的密码输入即可

11.复制主库standby控制文件到备库

备库控制文件在两个地方,因此需要复制两次

/u01/app/oracle/oradata/eras/control01.ctl

/u01/app/oracle/fast_recovery_area/eras/control02.ctl

关闭主备库sql>shutdown immediate;

主库

生成standby控制文件

sql>startup mount;

sql>alter database create standby controlfile as ‘/home/oracle/standby.ctl’;

sql>shutdown immediate;

复制改文件到备库

scp /home/oracle/standby1.ctl oracle@192.168.163.140:/u01/app/oracle/oradata/eras/control01.ctl

scp  /home/oracle/standby1.ctl  oracle@192.168.163.140:/u01/app/oracle/fast_recovery_area/eras/control02.ctl

12.配置主备库的listener.ora、tnsnames.ora文件

路径:$ORACLE_HOME/network/admin/listener.ora

(配置完后,主库终端执行tnsping standby,备库终端执行tnsping primary 如果都为ok则配置成功)

主库

vim $ORACLE_HOME/network/admin/listener.ora

SID_LIST=LISTENER=

(SID_LIST=

(SID_DESC=

(

(GLOBAL_DBNAME=primary)

(ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1)

(SID_NAME=eras)

)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.163.139)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

vim $ORACLE_HOME/network/admin/tnsnames.ora

primary=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.163.139)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=primary.localdomain)

)

)

standby=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.163.140)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=standby.localdomain)

)

)

备库

vim $ORACLE_HOME/network/admin/listener.ora

SID_LIST=LISTENER=

(SID_LIST=

(SID_DESC=

(

(GLOBAL_DBNAME=standby)

(ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1)

(SID_NAME=eras)

)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.163.140)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

vim $ORACLE_HOME/network/admin/tnsnames.ora

primary=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.163.139)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=primary.localdomain)

)

)

standby=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.163.140)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=standby.localdomain)

)

)

 

重启监听

先重启备库

lsnrctl stop

lsnrctl start

后重启主库

lsnrctl stop

lsnrctl start

13.复制主库文件到备库(保证主备库数据文件一致)

关闭主备库sql>shutdown immediate;

主库

scp –rp /u01/app/oracle/oradata/eras/*  oracle@192.168.163.140:/u01/app/oracle/oradata/eras

※复制时会把主库的control01.ctl也复制到备库中,这个文件和步骤11生成的不一样,因此仍需要在执行一次

scp /home/oracle/standby.ctloracle@192.168.163.140:/u01/app/oracle/oradata/eras/control01.ctl

 

启动与关闭physical standby database

  1. 启动监听

备库

lsnrctl start

主库

lsnrctl start

  1. 启动数据库

备库

startup nomount;

alter databse mount standby database;

启动redo应用

alter database recover managed standby database disconnect from session;

主库

startup;

  1. 关闭

主库

shutdown  immediate;

备库

alter database recover managed standby database cancel;

shutdown immediate;

查看数据库状态

select  name,open_mode,database_role,protection_mode from v$database;

检查standby配置是否成功

1)确认主、备库里的归档目的地配置及传送都是有效的

select dest_name,status,destination,error from v$archive_dest where dest_id<=2;

log_archive_dest_1和2状态应该是valid

2)确认主库重做日志是否被应用了。

select sequence#, first_time, next_time, applied, archived from v$archived_log;

如果归档和日志应用均正常,APPLIED 和 ARCHIVED 列都应该是 YES。如果没有应用redo,applied应该是NO

3)检查主库是否有重做日志缺口

如果一切正常,应该返回 VALID 和 NO GAP

select status, gap_status from v$archive_dest_status where dest_id = 2;

4)检查主、备库data guard状态是否有错

select * from v$dataguard_status order by timestamp;

5)测试日志序号是否正确

在主库切换几次日志:

alter system switch logfile;

查看主库日志序号:

select max(sequence#) from v$archived_log;

验证备库日志序号

select  max(sequence#) from v$archived_log;

备库服务器管理

启动模式

  1. 启动到管理模式

shutdown immediate;

startup nomount;

alter database mount standby database;

alter database recover managed standby database disconnect from session;

  1. 启动到只读模式

shutdown immediate;

startup nomount;

alter database mount standby database;

alter database open read only;

  1. 管理恢复模式到只读模式(该模式是可以查看备库中接受的change,但redoapply不应用)

recover managed standby database cancel;

alter database open read only;

  1. 只读模式到管理恢复模式

recover managed standby database disconnect from session;

  1. 暂停

alter database recover managed standby database cancel;

  1. 关闭

alter database recover managed standby database cancel;

shutdown immediate;

原创粉丝点击