admin 管理员组文章数量: 887031
2024年1月15日发(作者:具影响力的公司总经理培训)
第五部分 ORACLE 11G RAC TO RAC
Dataguard 安装与管理
5.1 环境准备
以HDB为例,阐述oracle 11g Dataguard physical standby的安装过程。主从数据库都是ORACLE 11G RAC环境,数据和ORACLE程序都在CFS共享磁盘上。
运行crs_stat –t 检查各资源状态。
在本系统中,采用Maximum Performance方式,即日志同步采取lgwr noaffirm方式。
环境如下:
大厦中心:HDB。
张江中心:HDB_ZJ
节点1: CO01 192.168.84.91
节点2: CM02 192.168.84.96
节点1: B-AO01 172.18.34.91
节点2: B-AP01 172.18.34.96
hdb1
hdb2
hdb_zj1
hdb_zj2
在源端和目标端 /etc/hosts加入两端主机地址和VIP地址。
192.168.84.91 CO01 hdb1
192.168.84.92 CO01-vip hdb1-vip
192.168.84.96 CM02 hdb2
192.168.84.97 CM02-vip hdb2-vip
172.18.34.91 B-AO01 hdb_zj1
172.18.34.92 hdb_zj1-vip
172.18.34.96 B-AP01 hdb_zj2
172.18.34.97 hdb_zj2-vip
5.2 Dataguard Physical Standby 数据库创建
5.2.1 修改
修改源端和目标端的, 加入以下内容:
hdb_zj=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = b-ao01-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = b-ap01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hdb) (UR=A)
)
)
hdb_ft=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hdb1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hdb2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hdb) (UR=A)
)
)
5.2.2 password file 重建
重新生成源端的password file,并复制到目标端。并建立到$ORACLE_HOME/dbs的软连接。重起源端数据库。
orapwd file=/cfs/data/hdb/orapwhdb password=oracle force=y ignorecase=y
5.2.3 设置数据库运行在force logging模式
在源端数据库sqlplus中运行
sql> alter database force logging;
5.2.4 创建pfile 参数文件
在源端数据库生成pfile, 并复制到目标端。并修改以下参数
db_name=hdb
db_unique_name=hdb_zj
service_name=hdb
fal_server='hdb'
fal_client='hdb_zj'
db_file_name_convert=hdb','hdb'
log_file_name_convert='/cfs/archivelog','/cfs/archivelog'
log_archive_dest_1='LOCATION=/cfs/archivelog/ VALID_FOR=(all_logfiles,all_roles)
log_archive_config='DG_CONFIG=(hdb,hdb_zj)'
log_archive_dest_2='SERVICE=hdb_ft lgwr ASYNC NOAFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hdb'
standby_file_management=auto scope=both
er=’LISTENERS_HDB_ZJ’
5.2.5 生成spfile参数文件
在目标端用pifle启动数据库到nomount状态。从pfile 生成spfile.
$export ORACLE_SID=hdb1
$sqlplus / as sysdba
sql>startup nomount pfile=’?/dbs/hdb_’;
sql>create spfile=’/cfs/data/hdb/’ from pfile=’?/dbs/hdb_’;
$lsnrctl staus 检查listener状态。
5.2.6 测试备库连接
在源端:
$sqlplus sys/oracle@hdb_zj as sysdba
确保从主库可以连接到从库。如果不能连接,检查以前的配置,然后再进行下一步。
5.2.7 创建standby日志文件
在主库上创建,应该会同步到从库。Standy log 的推荐数目为:
(# of online redo logs per primary instance + 1) * # of instances
alter database add standby logfile thread 1 group 11
‘/cfs/data/hdb/redo11_ SIZE 128M;
...
alter database add standby logfile thread 2 group 15
‘/cfs/data/hdb/redo11_ SIZE 128M;
5.2.8 复制数据库
数据库的复制过程有几种方法:
方法1:RMAN “on the fly duplicate”
此种方式仅适用于oracle 11g. 在源端或目标端:
$export ORACLE_SID=hdb1
$rman target sys/oracle@hdb auxiliary sys/oracle@hdb_zj
rman> duplicate target database for standby from active database nofilenamecheck;
这种方式可以自动备份datafile,control文件到目标端,而且复制过程事主库仍可正常运行。
方法2: 复制数据文件
将主库shutdown, 然后复制所有的数据文件到从库的相应目录。启动主库到mount 状态,
生成从库所用的控制文件,并复制到从库。
sql>
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/hdb_';
sql> alter database open;
方法3: RMAN 备份复制
主库RMAN备份,并复制到从库相同的目录下。
$rman target /
RMAN> BACKUP DEVICE TYPE DISK FORMAT '/cfs/backup/%U' DATABASE PLUS ARCHIVELOG;
RMAN> BACKUP DEVICE TYPE DISK FORMAT '/cfs/backup/%U' CURRENT CONTROLFILE FOR
STANDBY;
在从库RMAN恢复,
$ rman target sys/oracle@CHICAGO auxiliary /
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY;
5.2.9 启动备库
在从库上运行 startup mount; 启动到mount 状态。
登录主库,并修改主库相关参数
alter system set fal_server='hdb_zj' scope=both;
alter system set fal_client='hdb' scope=both;
alter system set db_file_name_convert=hdb_zj','hdb' scope=spfile;
alter system set log_file_name_convert='/cfs/data/hdb/','/cfs/data/hdb/' scope=spfile;
alter system set log_archive_dest_1='LOCATION=/cfs/archivelog/
VALID_FOR=(all_logfiles,all_roles) db_unique_name=hdb' scope=both;
alter system set log_archive_config='DG_CONFIG=(hdb,hdb_zj)' scope=both;
alter system set log_archive_dest_2='SERVICE=hdb_zj lgwr ASYNC NOAFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hdb'
scope=both;
alter system set standby_file_management=auto scope=both sid=’*’;
需要重起主库以使参数生效。
5.2.10 启动重做应用
sql> alter database recover managed standby database disconnect;
观察从库的alert_,看是否归档成功应用。
主、从库:观察两边是否一致。
Select max(sequence#) from v$log;
select * from v$archive_dest where dest_id=2;
测试日志传输与归档
在主库上运行:
sql> alter system switch logfile;
观察从库的alert_,看是否归档成功应用。
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME
FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
5.2.11 注册第二个节点到CRS
在从库的第二个节点上,
$ export ORACLE_SID=hdb2
$ sqlplus / as sysdba
sql> startup mount;
$srvctl add database –d hdb_zj–o $ORACLE_HOME –n hdb –r physical_standby –s mount
$srvctl add instance –d hdb_zj –i hdb_zj1 –n b-ao01
$srvctl add instance –d hdb_zj –i hdb_zj2 –n b-ap01
$srvctl start database –d hdb_zj
$srvctl status database –d hdb_zj
5.3 Dataguard 日常管理
5.3.1 数据库切换
在RAC状态下,主从数据库的切换时主从库只能有一个实例在运行状态。在切换前需关掉其他节点,在切换完成后再启动其他节点。
查询主从库状态
sql> select database_role,switchover_status from v$database;
将主库切换到从库状态
sql> alter database commit to switchover to physical standby
[with session shutdown];
如果主库状态为 “sessions active”, 则需要在命令后加上 with session shutdown 语句。
重起原数据库到mount 状态。
在原从库上执行切换命令
sql>
alter database commit to switchover to primary
[with session shutdown];
shutdown 并startup 新主数据库。
在新的从库启动 redo apply.
sql>alter database recover managed standby database
[using current logfile] disconnect;
5.3.2 启用real time redo apply和read only open
sql> alter database recover managed standby database cancel;
sql> alter database open;
sql> alter database recover managed standby database using current logfile disconnect;
从库将可以以只读模式提供查询和报表服务。
5.3.3 从库过期归档日志删除
Crontab:
/home/oracle/script/ >/dev/null 2>&1
:
. $HOME/.profile
cd /home/oracle/script
export ORACLE_SID=hdb1
sqlplus '/ as sysdba' @rm_applied_
chmod u+x rm_applied_
mv rm_applied_archivelog /cfs/archivelog/
cd /cfs/archivelog
rm_applied_
rm_applied_
set heading off
set pagesize 9999
set feedback off
spool rm_applied_
SELECT 'rm '||NAME
FROM V$ARCHIVED_LOG
where applied='YES' AND first_Time between sysdate-15 and sysdate-3
ORDER BY SEQUENCE#;
spool OFF
EXIT
5.3.4 Dataguard运行状态检查
5.3.4.1 alert log 日志检查
Dataguard日志复制及应用,以及错误信息在alert log中都有记录。
正常情况下,主库日志通常显示为以下内容:
Thread 1 advanced to log sequence 2851
Current log# 2 seq# 2851 mem# 0: /cfs/data/hdb/
Mon Nov 17 23:30:44 2008
LNS: Standby redo logfile selected for thread 1 sequence 2851 for
destination LOG_ARCHIVE_DEST_2
正常情况下,从库日志通常显示为以下内容:
Mon Nov 17 23:31:55 2008
Media Recovery Waiting for thread 1 sequence 2851 (in transit)
Recovery of Online Redo Log: Thread 1 Group 15 Seq 2851 Reading mem
0
Mem# 0: /cfs/data/hdb/
5.3.4.2 查询DataGuard日志传输方式
SQL> select process,client_process,sequence#,status from v$managed_standby;
PROCESS列显示进程信息
CLIENT_PROCESS列显示对应的主数据库中的进程
SEQUENCE#列显示归档redo的序列号
STATUS列显示的进程状态
5.3.4.3 查询standby库中所有已被应用的归档文件信息
SQL> select first_time,first_change#,next_change#,sequence# from
v$log_history;
SQL> SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM
V$LOG_HISTORY GROUP BY THREAD#;
5.3.4.4 查询primary server上有哪些日志没有被传输到Standby
SQL> SELECT #, CE# FROM (SELECT THREAD#,
SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1) LOCAL WHERE
CE# NOT IN
(SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND THREAD# =
#);
5.3.4.5 查询dataguard 状态信息
SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS;
5.3.4.6 监控恢复操作的进程
SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#,
APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS;
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
5.3.4.7 Dataguard 相关视图
Primary Site
V$ARCHIVE_DEST
V$ARCHIVE_DEST_STATUS
V$ARCHIVED_LOG
V$DATABASE
当前实例所有的归档日志目标,当前序号,模式和状态
显示归档目标的运行状态和配置信息
显示从控制文件中取得的归档日志信息,包括归档文件名
提供控制文件记录的数据库信息,包括数据库的状态
在线日志文件信息 V$LOG
Standby Site
V$ARCHIVED_LOG
V$DATABASE
显示从控制文件中取得的归档日志信息,包括归档文件名
提供控制文件记录的数据库信息,包括数据库的状态
在线日志/重做日志文件信息
显示与dataguard相关的当前数据库状态信息
V$LOGFILE
V$MANAGED_DATAGUARD
The V$DATAGUARD_LOG
显示standby日志文件信息
5.3.5故障转移
在某些情况下,不能执行正常的切换操作。如源端主数据库停掉,不能在短时间内恢复或数据库无法恢复甚至需要重建,需要启用从库。值得注意的是,这种操作是destructive操作,一旦执行,备库需要重建。运行此操作需慎重。
sql> alter database recover managed standby database finish force;
sql> alter database activate standby database [skip standby logfile];
sql> shutdown immediate;
sql> startup mount;
sql> alter database open resetlogs;
5.4 常见故障处理
故障一:
Error 12170 received logging on to the standby
Errors in file /cfs/home/oracle/diag/rdbms/hdb/hdb1/trace/hdb1_arc4_:
ORA-12170: TNS:Connect timeout occurred
PING[ARC4]: Heartbeat failed to connect to standby 'hdb_zj'. Error is 12170.
这种情况通常是主库不能连到从库,一般是从库当机或关闭。首先在主库用 sqlplus 测试到从库的连接,检查从库状态。从库启动后,这种错误就会消失。
故障二:
数据库的维护步骤:
关闭:先关主库后关从库,
启动:先启动从库然后启动主库。
版权声明:本文标题:Oracle 11G RAC to RAC DATAGUARD配置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705316721h480791.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论