- 浏览: 5161702 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
作者:隔壁老王 博客:http://wallimn.iteye.com 邮件:wallimn@sohu.com
实验环境:Oracle9.2.0.1,操作系统:XP(虚拟机)
一、 配制过程
1. 在主数据库(primary database)上启用强制生成日志
SQL>shutdown immediate;
SQL>startup mount;
--修改为归档模式
SQL>alter database archivelog;
SQL>alter database open;
--设置强制归档模式
SQL> alter database force logging;
注:查看命令:select log_mode,force_logging from v$database
查看是否归档命令:Archive log list
2. 在主数据库上设置本地的归档路径、设置归档进程自动启动
SQL> alter system set log_archive_dest_1='LOCATION=c:/oracle/oradata/GORACLE/archive MANDATORY'
scope=spfile;
SQL> alter system set log_archive_start=true scope=both;
SQL> alter system set remote_archive_enable=’SEND’ scope=spfile; --切换时,要修改成RECEIVE
SQL> alter system set fal_server=’STANDBYDB’ scope=both;
SQL> alter system set fal_client=’PRIMARYDB’ scope=both;
SQL> alter system set standby_archive_dest='c:\oracle\oradata\GORACLE\rmarc' scope=both;
SQL> alter system set standby_file_management=’AUTO’ scope=both;
注:后几个参数,主备切换后会用到。
3. 获取主数据库数据文件信息
SQL> select name from v$datafile;
4. 拷贝主数据库数据文件
1)停止主数据库
SQL> shutdown immediate;
2)拷贝数据文件到临时位置
3)重启主数据库
SQL> startup;
5. 在主数据库为备用数据库创建控制文件(standby专用的控制文件)
SQL> alter database create standby controlfile as 'c:/standbycontrol01.ctl';
6. 在主数据库为备用数据库准备初始化参数文件
SQL> create pfile='c:/initGORACLE.ora' from spfile;
7. 从主数据库拷贝文件到备用服务器(包含:数据文件拷贝、备用控制文件、初始化参数文件和口令文件)
注:standbycontrol01.ctl文件放置到c:/oracle/oradata/GORACLE目录中,并复制一份为standbycontrol02.ctl,与下面的参数文件修改对应。
8. 在备用服务器上修改初始化参数文件(从主库上拷过来的initGORACLE.ora)
*.control_files='c:/oracle/oradata/GORACLE/standbycontrol.ctl01',’c:/oracle/oradata/GORACLE/standbycontrol02.ctl'
*.standby_archive_dest=' c:/oracle/oradata/GORACLE/rmarc'
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.fal_server=’PRIMARYDB’
*.fal_client=’STANDBYDB’
*.remote_archive_enable=’RECEIVE’
*.log_archive_dest_2='SERVICE=PRIMAYDB LGWR SYNC AFFIRM'
注:修改控制文件名称,设置备库专用的归档路径以及一些相关的参数,注意主备切换时需要使用Alter Database 将参数remote_archive_enable修改为’SEND’;最后一个参数主备切换后才会用到。
9. 在备用服务器上仅安装数据库软件,不创建数据库,然后手动创建Oracle服务(for windows)
c:\> oradim -NEW -SID GORACLE -STARTMODE a
注:需要配置环境变量ORACLE_SID=GORACLE
10. 在主、备服务器上创建监听
使用Oracle Net Manager或直接修改listener.ora文件
11. 在备用服务器上允许连接死锁检测
修改SQLNET.ORA文件,增加如下行:
SQLNET.EXPIRE_TIME=2
12. 在主、备服务器上创建Oracle Net服务名
使用Oracle Net Manager或直接修改tnsname.ora文件,两个服务器上都定义两个别名:PRIMARYDB、STANDBYDB,分别指向主库和备库。设置好后,可以使用tnsping命令检查一下。防火墙有时会影响数据库的连通。
13. 在备用服务器上创建SPFILE
SQL> create spfile from pfile='c:\initGORACLE.ora';
注:使用修改过的pfile创建spfile。此时数据库还没有启动,若已启动请关闭shutdown immediate,这样就不用每次启动的时候指定pfile参数了。
14. 启动备用数据库为挂载备库模式
SQL> startup nomount;
SQL> alter database mount standby database;
15. 在备用服务器上启动日志传送服务
SQL> alter database recover managed standby database disconnect from session;
16. 在主数据库上启动归档到备用数据库
1)设置归档初始化参数
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=STANDBYDB LGWR ASYNC ' scope=both;
-- STANDBYDB为前面配置的别名
--可增加配置属性:VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE),在主备切换的时候有用,其格式为:
VALID_FOR(redo_log_type,database_role)
--redo_log_type: online_logfile, standby_logfile, all_logfiles
--database_role:primary_role, standby_role, all_roles
--一句话总结:当配置有VALID_FOR的数据库处于指定的database_role时,允许归档redo_log_type到log_archive_dest_n所配置的路径。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;
2)归档当前日志
SQL> alter system archive log current;
17. 检验物理备用数据库
1)在备用服务器上查看已有归档日志
SQL> select sequence#,first_time,next_time from v$archived_log order by sequence#;
注:可使用alter session set nls_date_format=’yyyy-mm-dd hh:mi:ss’命令,修改日期显示格式,便于观察
2)在主服务器上归档当前日志
SQL> alter system archive log current;
3)在备用数据库上验证新归档日志已收到
SQL> select sequence#,first_time,next_time from v$archived_log order by sequence#;
4)在备用数据库上验证新归档日志已应用
SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;
注:也可以直接检查硬盘上眼归档目录中的归档文件。
如果备库中归档日志生成,则证明配置成功。
二、切换管理角色(正常切换)
--切换的时候,先主后备
将原standby数据库改为MAXIMIZE PERFORMANCE (这个是默认值,先检查一下,如果是就不用切换了)
alter database set standby database to maximize performance;
1) 检查切换是否可行
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
TO STANDBY
1 row selected
--据说TO STANDBY、SESSION ACTIVE都可以
2) 切换原主库为备库
SQL> alter database commit to switchover to physical standby ;
若是SESSION ACTIVE状态,带上with session shutdown
SQL> alter database commit to switchover to physical standby with session shutdown ;
3)关闭原主库数据库,启动为standby模式
--如果设置了remote_archive_enable=’SEND’,要修改成’RECEIVE’
SQL> alter database set remote_archive_enable=’SEND’ scope=both;
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
4 )检查原主库的切换结果
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
SWITCHOVER PENDING
1 row selected
5)将原备库切换成主库
SQL>alter database recover managed standby database cancel;
SQL>alter database recover managed standby datbase finish;
SQL>alter database commit to switchover to primary;
修改remote_archive_enable参数
SQL>alter database set remote_archive_enable=’SEND’ scope=both;
6)关闭原备库、重启
SQL> shutdown immediate;
SQL> startup;
若出错
ORA-16072: a minimum of one standby database destination is required
设置远程归档路径
log_archive_dest_2='SERVICE=PRIMARYDB LGWR MANDATORY REOPEN=60'
7)启动日志恢复服务
SQL> alter database recover managed standby database disconnect from session;
8)检查日志接收情况
SQL> alter system archive log current;
三、失败接管步骤
1)检查有无归档裂隙,若有须先去除
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
1 90 92
上面的例子中,线程1的日志为90至92,补全缺失的日志(从主库或其它备库),然后注册这些日志。若有多个线程,其它线程缺失的日志也要补全、注册。
SQL> alter database register physical logfile ’filespec1’;
2)补全缺失的归档日志
SQL> SELECT distinct thread# as thread, max(sequence#) over (partition by thread#) as last FROM v$archived_log;
THREAD LAST
1 147
把大于最大日志号(例子中是147)的归档日志也补全、注册,同样每个线程的都要进行。
SQL> select name from v$archived_log where thread#=1 and sequence#=147;
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE ’filespec1’;
3)执行失败接管
若有standby redo日志,执行
SQL> alter database recover managed standby database finish;
否则执行
SQL> alter database recover managed standby database finish skip standby logfile;
4)切换原备库为主库
SQL> alter database commit to switchover to primary;
SQL>alter database set remote_archive_enable=’SEND’ scope=both;
根据需要,修改log_archive_dest_2等归档参数
若执行该命令出错,按下面方式处理
SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary error at line 1:
ORA-16139: media recovery required
可以把数据库置于managed recovery 的状态
SQL> alter database recover managed standby database disconnect from session;
SQL> alter database recover managed standby database finish skip standby logfile;
SQL> alter database commit to switchover to primary;
5)准备新的备库,接收日志
6)重启新的主库(也就是刚切换成的)
7)备份新的主库
实践中发现:
如果把一个正常运行的数据库(或者没有备库的主库),直接切换成从库:
Alter database commit to switchover to physical standby with session shutdown;
会收到:ORA-16014、00312两个错误。
应该是切换之后,之日志没有地方写,报的错??(可能是这样,这个不知具体原因)
四、其它常用的命令
1. 创建Standby Redo Logs
1)检验Standby redo logs的方法
SQL> select * from v$standby_log;
SQL> select * from v$logfile where type='STANDBY';
2)在主、备数据库分别创建比联机日志多至少一组的Standby redo log(在主机作standby redo log 是为了作switchover时候用,不是必须的);
standby redo log的大小应该跟online redo log的大小相等(使用select GROUP#,BYTES,MEMBERS,STATUS from v$log命令查看);
SQL> alter database recover managed standby database cancel;
SQL> alter database add standby logfile ('c:\oracle\oradata\GORACLE\stdlog01.tdo') size 100M;
SQL> alter database add standby logfile ('c:\oracle\oradata\GORACLE\stdlog02.tdo') size 100M;
SQL> alter database add standby logfile ('c:\oracle\oradata\GORACLE\stdlog03.tdo') size 100M;
SQL> alter database add standby logfile ('c:\oracle\oradata\GORACLE\stdlog04.tdo') size 100M;
查看加入的standby数据库是否开始使用的方法(在maximize PERFORMANCE下不用该日志,也可以反过来理解,maximize PERFORMANCE模式下,不要求使用该日志):
在primary库上调用log switch(ALTER SYSTEM SWITCH LOGFILE),然后在备用库上查看V$STANDBY_LOG视图。
SELECT group#,thread#,sequence#,archived,status FROM v$standby_log;
3)如果控制文件中的MAXLOGFILES参数值太小,无法增加足够的日志组的话,需要重建数据库或控制文件。 SQL> alter database backup controlfile to trace;
将在admin/orcl/udump目录下生成新的trace文件,打开该文件可获得在主/备数据库上分别重建控制文件的脚本。按照其指示执行即可。
2. 在主数据库修改数据保护模式的方法
1)设置初始化参数
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=STANDBYDB LGWR ASYNC' scope=spfile;
2)数据库重新打开为排他模式装载
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount exclusive;
3)修改保护模式(任选一种模式)
SQL>alter database set standby database to maximize {PROTECTION | AVAILABILITY | PERFORMANCE}
--最大保护模式、最大可用性模式、最大性能模式
4)打开数据库
SQL> alter database open;
5)检查保护模式的方法
SQL> select database_role,protection_mode,protection_level from v$database;
3. 监视重作日志归档情况
1)确定当前重作日志顺序号
SQL> select thread#,sequence#,archived,status from v$log;
2)确定最近的归档重作日志
SQL> select max(sequence#) from v$archived_log;
3)确定每个目的地的最近归档日志
SQL> select destination,status,archived_thread#,archived_seq# from v$archive_dest_status
where status <> 'DEFERRED' and status<>'INACTIVE';
4)查看某特殊位置日志是否收到
SQL> select dest_id from v$archive_dest;
SQL> select local.thread#,local.sequence# from
(select thread#,sequence# from v$archived_log where dest_id=1)
local where
local.sequence# not in
(select sequence# from v$archived_log where dest_id=2 and thread#=local.thread#);
5)跟踪备用站点的归档日志进程
在主、备数据库设置初始化参数log_archive_trace
4. 监视恢复进程
SQL> SELECT process, status, thread#, sequence#, block#, blocks
FROM v$managed_standby;
5. 日志应用服务
1)启动/停止日志应用服务
SQL> alter database start logical standby apply;
SQL> alter database stop logical standby apply;
2)确认重做日志已应用V$LOGSTDBY、DBA_LOGSTDBY_PROGRESS
SQL> column status format A50
SQL> column type format A12
SQL> select type,high_scn,status from v$logstdby;
SQL> select applied_scn,newest_scn from dba_logstdby_progress;
3)修补归档间隙
SQL> select * from v$archive_gap;
SQL> select name from v$archived_log where thread#=1 dest_id=1 and sequence# between 7 and 10;
SQL> alter database register logfile '/physical_standby1/thread1_dest/arcr_1_7.arc';
然后重启管理恢复操作(见前面的命令)
6. 监视物理备用数据库日志应用服务
SQL> select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
SQL> select archived_thread#,archived_seq#,applied_thread#,applied_seq# from v$archive_dest_status;
SQL> select registrar,creator,thread#,sequence#,first_change#,next_change# from v$archived_log;
SQL> select thread#,sequence#,first_change#,next_change# from v$log_history;
SQL> select message from v$dataguard_status;
SQL> select file_name,sequence#,first_change#,next_change#,timestamp,dict_begin,dict_end,thread#
from dba_logstdby_log order by sequence#;
SQL> select applied_scn,newest_scn from dba_logstdby_progress;
SQL> alter session set NLS_DATA_FORMAT='DD-MON-YY HH24:MI:SS';
SQL> select l.sequence#,l.first_time,(case when l.next_change# < p.read_scn then 'yes'
when l.first_change# < p.applied_scn then 'current'
else 'no' end) applied
from dba_logstdby_log l, dba_logstdby_progress p
order by sequence#;
SQL> column status format a50
SQL> column type format a12
SQL> select type,high_scn,status from v$logstdby;
SQL> column name format a35
SQL> column value format a35
SQL> select name,value from v$logstdby_status where name like 'coordinatior%' or name like 'transactions%';
全文从附件中下载。
- Data_Guard配置文档.pdf (96 KB)
- 下载次数: 48
发表评论
-
Oracle连接故障的排除
2024-09-09 22:33 453Oracle版本为11G,操作系统为Windows Ser ... -
Oracle数据库相关系统突然提示“SQLException:违反协议”
2024-02-19 15:50 1118SQLException:违反协议这个异常可能由很多的 ... -
CentOS在Docker中安装Oracle
2024-02-06 12:13 11621.拉取Oracle镜像,并检 ... -
Windows Server安装oracle数据库一直停在82%
2023-02-04 12:01 582网上有个说法:服务器超过一定数量的CPU后,将不能正常安装 ... -
ORA-04030错误处理
2023-02-04 11:52 2632【错误描述】 错误信息如下: ORA-04030:在尝 ... -
ORA-04030错误处理
2023-02-04 11:45 403【错误描述】 错误信息如下: ORA-04030:在尝 ... -
Linux安装MySQL数据库
2019-06-10 22:27 17781.进入安装包所在目录,解压: tar zxvf mysql- ... -
确定MySQL在Linux系统中配置文件的位置
2019-04-14 19:30 27661.通过which mysql命令来查看mysql的安装位置。 ... -
mysql set names 命令和 mysql 字符编码问题
2019-04-12 00:34 1145转自:https://www.cnblogs.com/digd ... -
MYSQL中取当前周/月/季/年的第一天与最后一天
2018-11-17 23:16 2202转自:https://blog.csdn.net/ ... -
Oracle删除大量数据的实践
2016-11-07 18:03 5818一、引言 从来没有 ... -
Oracle 数据库简明教程 V0.1
2016-03-23 21:01 2052供初学者入门学习使用,以开发者常见、常用的知识为主,基本上 ... -
Oracle拆分字符串函数
2016-03-23 10:58 3358create or replace type string ... -
Oracle数据库远程连接无响应
2016-03-21 10:20 4301故障现象: 服务器本机使用sqlplus / as s ... -
Oracle PGA详解
2015-10-21 15:34 11467转自:http://yanguz123.iteye.com/b ... -
Oracle12C导入dmp数据
2015-10-08 23:43 20533Oracle12C,发生了较大的变化。以前熟悉的东西变得陌 ... -
SQLLDR数据导入小结
2015-07-25 22:06 75231.创建数据表 CREATE TABLE ... -
Window7安装Oracle10
2015-03-06 12:14 1607每次安装都要百度,转到自己的博客上,找起来方便,还能增加访 ... -
Oracle SQL Developer 连接 Mysql 数据库
2015-02-25 19:36 3662下载JDBC包,解压缩这里只要mysql-connector- ... -
Mysql数据备份与恢复
2015-02-25 19:15 1349备份/恢复策略 1. 要定期做 mysql备份,并考虑系统可以 ...
相关推荐
在Oracle Data Guard配置中,主数据库(Production Database)负责处理用户事务,而备用数据库(Standby Database)则在后台同步更新,以便在需要时能够快速接管主数据库的角色。 一、Oracle Data Guard的基本概念...
本篇将详细阐述这两种技术的配置过程及工作原理。 首先,Oracle RAC 是一个集群数据库解决方案,允许多台服务器共享同一个数据库实例,以实现负载均衡和故障切换。在Oracle 10g RAC环境下,数据存储在共享的存储...
以下是对Oracle Data Guard安装配置手册中的关键知识点的详细解释: 1. **引言** - 目的:阐述安装配置Data Guard的主要目标,通常是提高数据库的可用性和安全性。 - 背景:介绍Data Guard的背景,包括其在Oracle...
在搭建 Data Guard 之前,需要进行充分的规划和准备工作,包括选择合适的备用数据库、配置网络、配置存储设备等。 3.2 主库 RAC 资源检查 在搭建 Data Guard 之前,需要检查主库 RAC 资源,包括检查 CPU、内存、...
这本精品指南全面介绍Data Guard无与伦比的数据保护、可用性和灾难恢复功能,详细讲解Data Guard基础知识,列出最佳的配置、监视、维护和故障排除实践,并指导您部署完美架构以满足灾难恢复目标和其他要求。...
Data guard因为技术简单成熟,成本低廉(Oracle自带的功能,不需要单独购买),是广泛采用的一种数据库的高性能与容灾方案。 Oracle Data Guard 确保企业数据的高可用性、数据保护以及灾难恢复。
在"Oracle RAC系列之_10gR2 RAC(ASM) Data Guard容灾配置手册"中,你可能会学习到以下关键知识点: 1. **RAC安装与配置**:如何在多台服务器上安装和配置RAC实例,包括网络设置、OCR(Oracle Cluster Registry)和...
在Linux虚拟机环境下配置Oracle Data Guard,主要涉及到以下几个关键步骤和概念: 1. **主数据库与备库设置**:首先需要在主数据库上正常运行,并确保所有必要的参数设置正确,例如redo log文件大小、数量和位置。...
### Oracle Data Guard 白皮书知识点详述 #### 执行概要 - **业务连续性和灾难恢复的重要性**:在全球化企业中,业务连续性和灾难恢复是...- [1] Oracle Data Guard 文档:详细的 Data Guard 使用手册和技术指南。
根据提供的文件信息,本文将详细解析Oracle Data Guard配置的关键步骤及技术要点,旨在帮助初学者更好地理解并实施Data Guard环境的构建。 ### 一、Oracle Data Guard简介 Oracle Data Guard是一种高可用性解决...
以下是对Oracle Data Guard六项最佳实践的详细说明: 1. **配置保护模式** 数据保护模式的选择是Data Guard部署的关键。有三种基本模式:最大保护、最大性能和最大可用性。最大保护模式确保零数据丢失,但可能牺牲...
本文将基于提供的内容部分详细介绍Data Guard配置的关键知识点。 1. CDB01配置: CDB01(Container Database)是主数据库,用于配置Data Guard环境中的主节点。配置步骤包括: - 启用强制日志模式(Force Logging)...
本手册详细介绍了Oracle Data Guard的各项功能、配置和管理策略,旨在帮助数据库管理员(DBA)充分利用这一工具来构建和维护安全的数据环境。 1. **Data Guard基础概念** - **主数据库与备用数据库**:Data Guard...
2. 灾难恢复:Oracle Data Guard 可以快速恢复数据库,在灾难恢复过程中不需要停止数据库服务。 3. 高性能:Oracle Data Guard 可以对数据库进行实时同步,确保数据库的高性能和高可用性。 Oracle Data Guard 的...
Oracle Data Guard的配置是一个复杂的过程,涉及到许多步骤和细节。正确配置和维护Data Guard可以显著提高数据库系统的可用性和安全性,是企业级数据库管理的重要组成部分。在实际操作中,还需要考虑监控、性能优化...
本书的重点在于Oracle 11g版本的数据保护技术,提供了关于如何设置和维护Data Guard配置的详细步骤和技巧。Data Guard是Oracle提供的一种容灾解决方案,旨在通过物理或逻辑备份的方式,在一个或多个备用数据库上维护...
Oracle Data Guard与Oracle Streams技术对比 Oracle Data Guard是一种Oracle数据库保护技术,用于建立一个或多个备用数据库,通过备用数据库与生产数据库的同步,以实现对数据库的保护。当发生错误、故障、灾难所...