Oracle 12c RAC 到单机实例 DATAGUARD搭建

来源:互联网 发布:手机淘宝装修新品上架 编辑:程序博客网 时间:2024/05/01 03:44

第二章:环境信息

2.1 系统平台

2.1.1 主机平台与版本

主机系统

● HP-UX Itanium 11.31

主机数据库

● 12.1.0.2 RAC

2.1.2 备机平台与版本

备机系统

● HP-UX Itanium 11.31

备机数据库

● 12.1.0.2 Single Instance Database With ASM

2.2 数据库环境

2.2.1 数据库配置环境

 

主库

备库

IP

 

 

 

 

 

db_name

HIS

XNH/SEP/RHIPQZJ/RHIPBZK

HIS

XNH/SEP/RHIPQZJ/RHIPBZK

db_unique_name

HIS

XNHS/SEPS/RHIPQZJS/RHIPBZKS

sys密码

oracle

oracle

 

 

 

第三章:方案简介

3.1方案规划

3.1.1 方案规划

在省厅搭建Oracle DataGuard 备库环境,将地市的数据同步到省厅。规划将6套RAC生产环境异地容灾到一台单机备库环境。

第四章:DataGuard安装步骤

4.1 主库配置

4.1.1 开启RAC的force logging

SQL>alter database forcelogging;

4.1.2 修改RAC参数文件

以下以HIS数据库为例说明,其它数据库配置一样。

DB_NAME=his

DB_UNIQUE_NAME=his

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(his,hiss)’

LOG_ARCHIVE_DEST_1=’LOCATION=+DATA’

DB_UNIQUE_NAME=his

LOG_ARCHIVE_DEST_2='SERVICE=hiss ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=hiss'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

FAL_SERVER=hiss

DB_FILE_NAME_CONVERT='hiss','his'

LOG_FILE_NAME_CONVERT=’hiss’,’his’

STANDBY_FILE_MANAGEMENT=AUTO

备注:通过alter systemset命令修改相关参数。着重关注加粗参数,其它参数也要进行确认

4.1.3 开启RAC归档模式

srvctl stop database -d his

srvctl start database -d his -ihis1-o mount

SQL>alter database archivelog;

SQL>alter database open;

查看归档:

 


备注:另一个节点手动startup启动实例即可

4.1.4 在主库创建standby logfile

1.     在主库查看redolog

 

 

2.     通过查看主库redolog有8组,standby redolog需要创建10组,每个thread5组,大小1G,如下:

SQL>alter database add standbylogfile thread 1 group 10 size 1G ;

SQL>alter database add standbylogfile thread 1 group 11 size 1G;

SQL>alter database add standbylogfile thread 1 group 12 size 1G;

SQL>alter database add standbylogfile thread 1 group 13 size 1G;

SQL>alter database add standbylogfile thread 1 group 14 size 1G;

SQL>alter database add standbylogfile thread 2 group 15 size 1G;

SQL>alter database add standbylogfile thread 2 group 16 size 1G;

SQL>alter database add standbylogfile thread 2 group 17 size 1G;

SQL>alter database add standbylogfile thread 2 group 18 size 1G;

SQL>alter database add standbylogfile thread 2 group 19 size 1G;

备注:该standbylogfile建议先在RAC中创建,这样就可以在standby创建后也自动地有了standby logfile了,standby logfile组必须比生产库多一个,大小根据查询到的BYTES值大小进行设置

在主库查看相关日志视图:

 

 

 


4.2备库配置

4.2.1 创建standby参数文件

参数文件放在ORACLE_HOME/dbs下面,以init开头。

 

 


备注:着重关注红框中参数,其它参数也要进行确认,创建好参数文件后,将数据库启动到nomount状态,检查参数文件是否正确。

 

4.2.2 在备库ASM中创建相关目录

在+DATA目录下创建HISS目录,并在HISS目录下创建相关目录

ASMCMD>cd +DATA

ASMCMD>mkdir HISS

ASMCMD>cd hiss

ASMCMD>mkdir DATAFILE

ASMCMD>mkdir CONTROLFILE

ASMCMD>mkdir ONLINELOG

ASMCMD>mkdir PASSWORD

在+FRA目录下创建HISS目录,并在HISS目录下创建相关目录

ASMCMD>cd +FRA

ASMCMD>mkdir ARCHIVELOG

ASMCMD>mkdir ONLINELOG

4.2.3创建spfile到ASM中

SQL>create spfile='+DATA/HISS/spfilehiss.ora'from pfile='inithiss.ora'

 

4.2.4将主库RAC中的口令文件拷贝到备库中

从主库ASM拷贝到文件系统中:

ASMCMD>pwcopy +DATA/HISS/PASSWORD/pwdhis.256.918602833/home/grid/

使用scp或者其它方式拷贝到备库的主机中并重命名为hiss:

scp /home/grid/pwdhis.256.91860283310.241.8.9:/home/grid

mv pwdhis.256.918602833 orapwhiss

从备库文件系统拷贝到ASM中:

ASMCMD> pwcopy /home/grid/orapwhiss +DATA/HISS/PASSWORD/

 

4.2.5添加数据库到OCR中,同时注册参数文件和口令文件

srvctl add database -db hiss -o/extmp/app/oracle/product/12.1.0/db_1

srvctl modify database -db hiss-role physical_standby -spfile ’

+DATA/HISS/spfilehiss.ora’-pwfile ‘+DATA/HISS/PASSWORD/orapwhiss’

查看备配置配置情况:

 

 


4.2.5配置监听文件,保证主库和备库能够互连

备库创建listener.ora配置静态监听

SID_LIST_LISTENER =

 (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = hiss)

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

      (SID_NAME = hiss)

    )

 )

LISTENER =

 (DESCRIPTION =

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

 )

 

 


主库和备库中配置tnsnames.ora

HIS =

 (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = his)

    )

 )

HISS =

 (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = hiss)

    )

 )

 

 


备注:配置完成后在主库各节点和备库都要通过用户名/密码方式登陆对方数据库以验证配置是否正确。

4.3复制主库数据到备库

4.3.1 duplicate将主库数据恢复到备库

在主库执行:

rman target sys/oracle@hisauxiliary sys/oracle@hiss

启动备库为nomount状态

RMAN>startup nomount;

使用rman工具连接主库和备库

RMAN> duplicate targetdatabase for standby from active database;

4.3.2备库应用主库同步的日志

duplicate完成后,启动到open状态,在备库执行同步:

SQL>alter database open;

SQL>alter database recovermanaged standby database using current logfile disconnect from session;

 

第五章:同步验证

5.1 数据同步验证

5.1.1 主备库验证

1.     在主库查看复制v$archive_dest视图,如archive_log_dest_2有error报错,则需要先根据报错内容解决问题

 

 


2.        在主库和备库分别查看v$archived_log视图,对比两端末尾日志是否一致,并在主库切换日志,看是否同步到备库。

 

 


3.     切换日志,查看备库

 

 


4.     在主库查看v$log视图,在备库查看v$standby_log视图,验证主备库redo是否同步。

查看主库当前在用sequence#是585和512

 

 


查看备库当前在用sequence#是否和主库一致

 

 


5.      在备库查看v$managed_standby视图,验证后台日志应用进程是否启动

 

  

5.2 脚本验证

5.2.1 主库创建脚本

为了简化运维人员在日常巡检中的工作步骤,在此提供一种简单有效的方法,该方法的原理:在主库中创建一张表,并实时将最新系统时间update到该表中,正常情况下该表的内容为最新系统时间,如果该表能够正常的同步到备库中,那么在备库中查看到时间也为最新系统时间;如果查看到的时间不是最新系统时间,那么备库的同步状态为查询的时间。

以下以HIS数据库为例,其它数据库配置方法一样。

1.     主库中创建如下脚本his_check_for_dg.sh,内容如下:

export ORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1

export ORACLE_SID=his1

sqlplus -s " / as sysdba"<< EOF

set feedback off

set pages 0

set head off

set timing off

set echo off

drop table eisoo_check_for_dg;

create table eisoo_check_for_dg(idnumber,check_for_dg varchar2(30));

alter system archive log current;

declare

i number;

begin

delete eisoo_check_for_dg where 1=1;

insert into eisoo_check_for_dgvalues(1,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));

for i in 1..715 loop

update eisoo_check_for_dg setcheck_for_dg=to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') where id=1;

dbms_lock.sleep(5);

commit;

end loop;

end;

/

exit

alter system archive log current;

EOF

 

2.     在root用户下,通过crontab工具添加执行计划

30 * * * * su - oracle -c /home/oracle/his_check_for_dg.sh

备注:将该脚本写入crontab,让它定时运行,防止服务器重启或者数据库重启后中断。此处脚本含义:每个小时运行一次his_check_for_dg.sh脚本,脚本会每5秒更新一次时间到表eisoo_check_for_dg中,更新715次后结束,这个周期刚好1小时,之后crontab计划让脚本又重新运行,开始另一个运行周期,如此循环。

 

5.2.2 备库创建脚本

1.     备库通过如下脚本查看主库同步的时间点是否变化以确认CDP是否正常运行,创建checkdg.sh脚本如下:

export ORACLE_BASE=/extmp/app/oracle

export ORACLE_HOME=/extmp/app/oracle/product/12.1.0/dbhome_1

export ORACLE_SID=anyangs1

export PATH=$PATH:$ORACLE_HOME/bin

sqlplus -s "/ as sysdba"<<EOF

set feedback off

set pages 0

set head off

set timing off

set echo off

select * from eisoo_check_for_dg;

EOF

备注:将脚本放在/home/oracle目录下,直接运行./checkdg.sh,可以查看到备库时间是否在更新。

 

第六单 归档日志管理

6.1 主库归档日志管理

6.1.1 主库归档日志管理

通过本地部署的AnyBackup对数据库进行备份,具体删除策略或脚本或AnyBackup中可以进行管理。具体策略可做调整

 

 

 

 

 

 

 

 

 


6.2 备库归档日志管理

6.1.2 备库归档日志管理

此处以HISS为例,其它数据库配置方法一样。

1.     创建脚本his_archlog_sql.sh,用来生成要删除归档日志

exportORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1

export ORACLE_SID=hiss

applied_days=1

cat/dev/null>applied_arch.lst

chmod +x applied_arch.lst

sqlplus -s "/ assysdba"<<EOF

set feedback off

set pages 0

set head off

set timing off

set echo off

spool applied_arch.lst

select 'run{' from dual;

select 'delete nopromptarchivelog sequence '||sequence#||' thread '||thread#||';' from v\$archived_logwhere name like '%seq%' and status='A'

and applied='YES' andCOMPLETION_TIME<=sysdate-${applied_days}

order by COMPLETION_TIME;

select '}' from dual;

spool off;

exit

EOF

备注:此脚本会生成另一个脚本文件applied_arch.lst,新生成的脚本内容是1天前在备库已经应用的归档日志。

 

2.     创建脚本his_archlog.sh

PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.

export PATH

export PATH=$PATH:$ORACLE_HOME/bin

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1

ORACLE_SID=hiss

export ORACLE_BASE ORACLE_HOME ORACLE_SID

export PATH=$PATH:$ORACLE_HOME/bin

rman target / cmdfile='/home/oracle/applied_arch.lst'log='/home/oracle/his_archlog.log'

备注:此脚本会通过rman调用applied_arch.lst脚本中过期归档日志再进行删除。

 

3.     在root用户下通过crontab工具设置执行计划。

crontab –e

30 0 * * * su - oracle -c /home/oracle/his_archlog_sql.sh

40 0 * * * su - oracle -c /home/oracle/his_archlog.sh

备注:将该脚本放到crontab中,定时执行。此计划,会每天0:30生成已经过期并应用过的归档日志;每天0:40对归档日志进行删除

1 0