dataguard日常管理
auther:skate
time:2009-08-02
dataguard日常管理
1.fail over
2.switchover
3.更改保护模式
4.常用命令和视图
fail over:
1.如果在dataguard中做了fail over,那么原来的standby 要成为primary要执行如下命令
A
首先查看v$archive_gap,然后手动将却是的archive_log拷贝过来,然后执行如下命令:
sql> alter database register physical standby 'logfile_patch'
B
sql> alter database recover managed standby database cancel;
C
sql> alter database recover managed standby database finish ;
或
sql> alter database recover managed standby database finish force;
D
sql> alter dattabase commit to switchover to primary;
对于老的primary 数据库需要转化为standby 有两种情况:
A.对于打开flashback 功能的数据库比较简单,现在新的primary数据库上执行这个命令
select standby_became_primary_scn from v$database;
接着在新的standby的数据库上执行
flashback database to scn nnnnnn
alter database convert to physical standby;
alter datbase recover managed standby database using current logfile disconnect from session;
在primary数据库上做日志切换,查看新的standby数据库日志是否正常。
select applied from v$archived_log;
B.如果没有开启flashback功能的话,重新创建dataguard
switchover:
在switchover的时候,最好让两个库不要再有新的session进来,这样可以快速switchover,避免发生异常
在switchover应注意的几点:
1.在primary库要有standby logfile。
2.检查v$archive_gap,核查是否日志都已经归档到standby库
实际操作:
1.在primary上查看switchover_status
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
或
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY SESSIONS ACTIVE
状态说明:
TO STANDBY : 没有session连接,可以直接switchover
SESSIONS ACTIVE :还有session连接,不能直接switchiver
如果SWITCHOVER_STATUS为to standby则可直接进行switchover,如果为session active则执行以下步骤:
(1)检查是否standby没接收到最新的日志,如果没有则在primary手动切换
SQL> alter system switch logfile;
系统已更改。
然后在standby恢复
SQL> alter database recover managed standby database cancel;
数据库已更改。
(2)检查是否有活动的sql session
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION
2 WHERE TYPE = 'USER'
3 AND SID <>(SELECT DISTINCT SID FROM V$MYSTAT);
未选定行
如果有则将session kill
2。如果上述步骤都已执行而primary的switchover_status还是为session active则在正常switchover语句后加上WITH SESSION SHUTDOWN;
(1)primary进行switchover
SQL> alter database commit to switchover to physical standby WITH SESSION SHUTDOWN; ---在没有活动的session下,不带WITH SESSION SHUTDOWN 选项,我也测试switchover成功
数据库已更改。
(2)重启原primary数据库到mount
SQL> select open_mode from v$database;
select open_mode from v$database
*
第 1 行出现错误:
ORA-01507: 未装载数据库
SQL> shutdown immediate;
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 176163716 bytes
Database Buffers 427819008 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL>
查看原primary的switchover的角色
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY
SQL>
(3)检查原standby的switchover_status
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY
(4)置于恢复模式
SQL> alter database recover managed standby database using current logfile disconnect from session;
数据库已更改。
SQL>
3。切换原standby to primary
如果上述standby的SWITCHOVER_STATUS为to primary则正常切换,否则检查是否有活动sql session,有则kill掉
再次检查SWITCHOVER_STATUS,如果仍然不为to primary则在切换语句后加with session shutdown.
(1)切换standby to primary(standby需要置于接收日志的mount状态)
SQL> alter database commit to switchover to primary with session shutdown;
数据库已更改。
SQL> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 234883972 bytes
Database Buffers 369098752 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>
查看原standby库switchover后的角色
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PRIMARY
SQL>
最后还要查看两个库的alert.log内容,看是否正常
dataguard保护模式:
在更改dataguard的保护模式,一定要在primary库上执行;在primary更改的保护模式都会应用到standby库
在更改保护模式时, 还要注意修改 log_archive_dest_n
SQL> alter system set log_archive_dest_2='SERVICE=orcldg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';
实际操作:
在primary库上:
SQL> select open_mode,protection_mode,protection_level from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
SQL> alter database set standby database to maximize protection;
alter database set standby database to maximize protection
*
第 1 行出现错误:
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 239078276 bytes
Database Buffers 364904448 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database set standby database to maximize protection;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL>
在standby库上:
正常来说,当primary更改完保护模式后,在standby也会随着更改
SQL> select open_mode ,protection_mode,protection_level from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL
---------- -------------------- --------------------
MOUNTED MAXIMUM PROTECTION MAXIMUM PROTECTION
注意
当保护模式更改顺序:
maximize protection ---> maximize availability ----> maximize performance
当在把dataguard的保护级别按这上面的顺序减低的时候, 不需要primary库在mount状态,
primary在open状态就可以直接执行保护模式更改命令
primary的保护模式:
SQL> select open_mode ,protection_mode,protection_level from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL
---------- -------------------- --------------------
MOUNTED MAXIMUM PROTECTION MAXIMUM PROTECTION
执行保护模式更改:
SQL> alter database set standby database to maximize protection;
数据库已更改。
SQL> alter database set standby database to maximize availability;
数据库已更改。
在查看primary的保护模式:
SQL> select open_mode,protection_mode,protection_level from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
SQL>
当保护模式更改顺序:
maximize protection <--- maximize availability <---- maximize performance
当在把dataguard的保护级别按这上面的顺序升高的时候, 需要primary库在mount状态,如果在open更改会报如下错误:
SQL> select open_mode,protection_mode,protection_level from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
SQL> alter database set standby database to maximize protection;
alter database set standby database to maximize protection
*
第 1 行出现错误:
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
步骤:
1. primary库先 shutdown immediate
2. startup mount
3. alter database set standby database to maximize protection;
4. alter database open
dataguard常用命令和视图
查看当前保护模式
SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
查看日志传送方式
SQL> select dest_name,archiver from v$archive_dest;
首先停止standby的自动恢复状态
SQL> alter database recover managed standby database finish;
添加standby logfile
SQL> alter database add standby logfile group 4 ('/oracle/product/10.2.0/db_1/oradata/sjh10g/redo04.log') size 50m;
更改保护模式
alter database set standby database to maximize protection;
alter database set standby database to maximize availability;
alter database set standby database to maximize performancen;
更改传输方式
SQL> alter system set log_archive_dest_2='SERVICE=orcldg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';
解决方法:将主备库的flashback打开:
启动到mount
SQL> select FLASHBACK_ON from v$database;
SQL> alter database flashback on;
取消自动恢复模式:
alter database recover managed standby database cancel;
alter database recover managed standby database finish;
alter database recover managed standby database finish force;
switchover 到 primary
alter dattabase commit to switchover to primary;
alter database commit to switchover to primary with session shutdown;
switchover 到 standby
alter database commit to switchover to physical standby WITH SESSION SHUTDOWN;
flashback database to scn nnnnnn
alter database convert to physical standby
alter datbase recover managed standby database using current logfile disconnect from session;
alter database register physical standby 'logfile_patch'
常用视图:
v$managed_standby
v$archive_dest
v$archive_dest_status
v$archive_gap
v$archiveg_log
v$dataguard_status
v$database
v$log_history
v$log
v$logfile
注意事项:
1、如果在主库执行 alter database clear unarchived logfile或alter database open resetlogs ,则dataguard要重建。
2、在连续恢复模式下工作之前,需要保证之前所有的归档日志己经应用到备用库上。因为在连续恢复模式的情况下,oracle不会应用之前的
归档日志,而只会应用后面陆续到来的归档日志。
3、出现归档日志gap时,需要找出相应的归档日志, 然后将这些归档日志copy到备用节点的standby_archive_dest和
log_archive_dest目录下面。需要注意的是log_archive_dest目录下也需要copy。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;
4、新建表、表空间、datafile都能通过日志应用到备库,但新建一个临时表空间,rename datafile 均不能应用到备库上.
5、应当实时察看standby库的alert文件,就能清晰明了地知道主备更新的情况。这也是排错的重要方法,切记!!
failover和switchover
Failover : 将主数据库offline,备用数据库online,这种操作由系统和软件失败引起。 即使在备用数据库上应用重做日志,也可能出现数
据丢失的现象,除非备用数据库运行在 guaranteed protection 模式。 原主数据库重新使用时必须重新启动实例。 其它的备用数据库也
需重新启动实例。
Switchover : 故意将主数据库offline,而将另一备用数据库online,它能够切换到备用数据库而不需同步操作。如:可使用 Switchover
完成系统的平滑升级。 即使在备用数据库上不应用重做日志,也不会造成数据的丢失。 数据库不需重新启动实例。这使主数据库几乎能立即
在备用数据库上恢复它的功能,因此可经常进行定期维护而不需中断操作。 Failover和Switchover的区别为:当Failover发生,备用
数据库切换为主数据库之后,它丢失了备用数据库的所有能力,也就是说,不能再返回到备用模式;而Switchover可以,备用数据库可切换
为主数据库,也可从主数据库再切换回备用数据库。
----end---
dataguard日常管理相关推荐
- Oracle DataGuard standby库日常管理(zt)
一.日常管理 1.1 备用服务器的管理模式与只读模式 1.启动到管理模式 SQL>shutdown immediate SQL>startup nomount pfile=?/dbs/in ...
- Dataguard日常维护及故障解决
Dataguard日常维护及故障解决 一. dataguard环境要求 2.1数据库版本必须为企业版,版本最好在9i以上,主备库数据库的版本必须一致. 2.2 主备数据库所在操作系统版本以及位数要 ...
- oracle dataguard ddl,Oracle 11G R2 DataGuard日常维护及故障处理
1.关于Forced Logging模式有一些DDL语句可以通过指定NOLOGGING子句的方式避免写redo log(目的是提高速度,某些时候确实有效),指定数据库为FORCE LOGGING模式后 ...
- linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明
根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...
- SAP Basis 日常管理
SAP Basis日常管理 (Windows 2008 Server R2 + Oracle 11g) 启动SAP系统: 1)启动数据库 以idsadm用户登录系统,命令窗口下输入: a) sqlpl ...
- ftp 信息服务器日常维护,Web Ftp Mail服务器的日常管理与维护
Web Ftp Mail服务器的日常管理与维护 Web Ftp Mail服务器的日常管理与维护 一.设置和管理账户 1.系统管理员账户最好少建,更改默认的管理员帐户名(Administrator)和描 ...
- 《Windows Server 2012 Hyper-V虚拟化管理实践》——3.2 Hyper-V主机日常管理
本节书摘来自异步社区<Windows Server 2012 Hyper-V虚拟化管理实践>一书中的第3章,第3.2节,作者: 王淑江 更多章节内容可以访问云栖社区"异步社区&q ...
- Oracle 11gR2 GI日常管理手册
Oracle 11gR2 GI日常管理手册 目 录 1 文档简介 4 1.1 编写目的 4 1.2 适用范围 4 1.3 名词解释 4 1.4 格式约定 4 1.5 特别说明 4 2 在集群中增加新节 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课...
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
最新文章
- 不要一辈子靠技术生存
- 数字集成电路的层次关系
- 全志A33-ARM编译并安装net-tools
- [HDU1712]ACboy needs your help
- python pytorch自定义_Pytorch 实现自定义参数层的例子
- 安川机器人梯形图指令(三)
- LabView实战笔记——贪吃蛇游戏设计
- 51单片机学习笔记4 -- 蜂鸣器控制
- 实例学习ZMODEM文件传输协议
- Android 源码结构简介
- 卧槽,我司电商平台又被攻击,年终奖没了
- kali netstat使用教程
- 基本函数发生器函数须知
- jquery 基础教程[温故而知新二]
- 输入五个国家的名称按字母顺序排列输出
- Dell Optiplex 960 n series 释放SLIC
- 微信软文怎么写比较好?
- html字体模糊怎么变清晰,电脑字体模糊怎么办 将字体调节清晰方法【详解】
- elastic job (一) elastic-job-lite----SimpleJob
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 WMT数据处理