oracle10g的dataguard测试

sohu老博客的看不了了,只能重新发布记录:

windows2003server+oracle10.2.0.1

1.检查归档模式

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
下一个存档日志序列   3
当前日志序列           3
SQL> select force_logging,flashback_on,db_unique_name from v$database;

FOR FLASHBACK_ON       DB_UNIQUE_NAME
--- ------------------ ------------------------------
NO  NO                 jyc
SQL> ALTER DATABASE FORCE LOGGING;

数据库已更改。
SQL> select force_logging,flashback_on,db_unique_name from v$database;

FOR FLASHBACK_ON       DB_UNIQUE_NAME
--- ------------------ ------------------------------
YES NO                 jyc


2.准备listener.ora和tnsnames.ora
# listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = huasun)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
 
#tnsnames.ora

JYC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.251)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = jyc)
    )
  )
DG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.251)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dg)
    )
  )

3.停库拷贝文件:
SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL>


准备windows服务(unix不需要):
oradim -new -sid dg
拷贝密码文件:将PWDjyc.ora拷贝为D:\oracle\product\10.2.0\db_1\database\PWDdg.ora
从主库创建备库的控制文件,并复制3份。
ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'D:\oracle\product\10.2.0\ORADATA\DG\CONTROL01.CTL';

主库的参数:
#modify parameters
*.DB_UNIQUE_NAME=jyc
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(jyc,dg)'
*.DB_FILE_NAME_CONVERT='dg','jyc'
*.LOG_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\dg\arch1\','D:\oracle\product\10.2.0\oradata\jyc\arch1\','D:\oracle\product\10.2.0\oradata\dg\arch2\','D:\oracle\product\10.2.0\oradata\jyc\arch2\'
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_DEST_1=
 'LOCATION=D:\oracle\product\10.2.0\oradata\jyc\arch1\
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=jyc'
*.LOG_ARCHIVE_DEST_2=
 'SERVICE=dg LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=dg'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.STANDBY_ARCHIVE_DEST='D:\oracle\product\10.2.0\oradata\jyc\st\'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.FAL_SERVER=dg
*.FAL_CLIENT=jyc

备库的参数:
#modify parameters
*.DB_UNIQUE_NAME=dg
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg,jyc)'
*.DB_FILE_NAME_CONVERT='jyc','dg'
*.LOG_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\jyc\arch1\','D:\oracle\product\10.2.0\oradata\dg\arch1\','D:\oracle\product\10.2.0\oradata\jyc\arch2\','D:\oracle\product\10.2.0\oradata\dg\arch2\'
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_DEST_1=
 'LOCATION=D:\oracle\product\10.2.0\oradata\dg\arch1\
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=dg'
*.LOG_ARCHIVE_DEST_2=
 'SERVICE=jyc LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=jyc'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.STANDBY_ARCHIVE_DEST='D:\oracle\product\10.2.0\oradata\dg\st\'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.FAL_SERVER=jyc
*.FAL_CLIENT=dg

建立相应的目录。


4.准备数据
启动备库到mount状态
alter system set STANDBY_FILE_MANAGEMENT='MANUAL';
alter database rename file 'D:\oracle\product\10.2.0\ORADATA\JYC\REDO01.LOG' to 'D:\oracle\product\10.2.0\ORADATA\DG\REDO01.LOG';
alter database rename file 'D:\oracle\product\10.2.0\ORADATA\JYC\REDO02.LOG' to 'D:\oracle\product\10.2.0\ORADATA\DG\REDO02.LOG';
alter database rename file 'D:\oracle\product\10.2.0\ORADATA\JYC\REDO03.LOG' to 'D:\oracle\product\10.2.0\ORADATA\DG\REDO03.LOG';
alter system set STANDBY_FILE_MANAGEMENT='AUTO';


主备库建standby日志(lgwr要求)
alter database add standby LOGFILE GROUP 4 ('D:\oracle\product\10.2.0\ORADATA\DG\REDO04.log') size 4m;
alter database add standby LOGFILE GROUP 5 ('D:\oracle\product\10.2.0\ORADATA\DG\REDO05.log') size 4m;
alter database add standby LOGFILE GROUP 6 ('D:\oracle\product\10.2.0\ORADATA\DG\REDO06.log') size 4m;
alter database add standby LOGFILE GROUP 7 ('D:\oracle\product\10.2.0\ORADATA\DG\REDO07.log') size 4m;

alter database add standby LOGFILE GROUP 4 ('D:\oracle\product\10.2.0\ORADATA\JYC\REDO04.log') size 4m;
alter database add standby LOGFILE GROUP 5 ('D:\oracle\product\10.2.0\ORADATA\JYC\REDO05.log') size 4m;
alter database add standby LOGFILE GROUP 6 ('D:\oracle\product\10.2.0\ORADATA\JYC\REDO06.log') size 4m;
alter database add standby LOGFILE GROUP 7 ('D:\oracle\product\10.2.0\ORADATA\JYC\REDO07.log') size 4m;

 

5、检查主库和从库的状态:
检查数据库角色和状态
SQL> select database_role, switchover_status from v$database;

检查archive log的应用状态
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SQL> select * from (SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUEN
CE# desc) t where rownum<5;

检查archive log的遗失
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

检查archive log的路径是否可用
SQL> select dest_name,status,error from v$archive_dest;

检查进程状态
select process,status from v$managed_standby;


二、测试过程

1、模式切换
1.1 启动standby database到recover manage模式
SQL>alter database recover managed standby database disconnect from session;

1.2 启动到实时日志应用模式
SQL>alter database recover managed standby database using current logfile disconnect from session;
(之前需要先创建standby logfile,使用命令,同时还需要修改主库的参数LOG_ARCHIVE_DEST_2= 'SERVICE=ALUOCP LGWR',如果不加红色部分,那么就会一直hang住,见www.itpub.net - Database Error)

1.3 切换standby database到read only模式
SQL>alter database recover managed standby database cancel;
SQL>alter database open read only;

1.4 切换回recover manage模式
SQL> alter database recover managed standby database disconnect from session;


2、Switchover
2.1 在主库上
SQL>select switchover_status from v$database

2.2 switchover_status的值如果是To standby,可以直接switchover:
SQL> alter database commit to switchover to physical standby;
SQL> shutdowm immediate;
SQL> startup mount;

如果是sessions active,则需要在switchover的命令后面加上with session shutdown:
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdowm immediate;
SQL> startup mount;

2.3 在目标从库上
SQL> select switchover_status from v$database
switchover_status的值入股是To primary,可以直接switchover:
SQL> alter database commit to switchover to primary;
SQL> shutdown immediate;
SQL> startup;

如果是sessions active,则需要在switchover的命令后面加上with session shutdown:
SQL> alter database commit to switchover to primary with session shutdown;
SQL> shutdown immediate;
SQL> startup;


3、Failover
3.1 在目标从库上,检查遗失的archive log:
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

3.2 如有遗失,Copy到从库目录并应用:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

3.3 再次检查遗失的archive log:
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST FROM V$ARCHIVED_LOG;

3.4 关闭从库的recover模式:
SQL> alter database recover managed standby database finish;
OR
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
OR
SQL> alter database recover managed standby database finish skip standby logfile;

3.5 切换从库为主库:
SQL> alter database commit to switchover to primary;
SQL> shutdown immediate;
SQL> startup;


4、使用Flashback恢复failover的主库
4.1 在新的主库上查询切换时候的SCN号:
SQL> SELECT standby_became_primary_scn FROM v$database;

4.2 恢复旧主库后,Mount:
SQL> STARTUP MOUNT;

4.3 Flashback旧主库到步骤4.1查询得的SCN:
SQL> FLASHBACK DATABASE TO SCN <SCN>;

4.4 在旧主库上,转换control file为standby control file:
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

4.5 恢复旧主库为新从库:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

4.6 在新主库上,设置日志传输到旧主库(新从库),并确认状态:
SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE,DESTINATION, ERROR, SRL FROM V$ARCHIVE_DEST_STATUS;

4.7 在新主库上,归档日志到新从库:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

4.8 在新从库上开启recover模式:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
如果是real-time应用:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

 

ITPUB

http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14239/create_ps.htm#i1225703

Oracle10G Physical Standby Database笔记 - Oracle数据库管理 - ITPUB论坛-专业的IT技术社区

http://tech.it168.com/db/2008-03-04/200803041243203.shtml(dg高级管理参考)
 

可能出现的问题:
当测试主备库切换后,在新主库执行切换日志,而在备库执行下面操作时,报错:
SQL> alter database recover managed standby database using current logfile;
alter database recover managed standby database using current logfile
*
第 1 行出现错误:
ORA-00283: 恢复会话因错误而取消
ORA-00314: 日志 4 (用于线程 1) 要求的序号 23 与 0 不匹配
ORA-00312: 联机日志 4 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\REDO04.LOG'

解决办法:
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> alter database clear unarchived logfile group 4;
alter database clear unarchived logfile group 4
*
第 1 行出现错误:
ORA-01156: 进行中的恢复可能需要访问文件


SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database clear unarchived logfile group 4;

数据库已更改。

SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> alter database recover managed standby database cancel;

数据库已更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在另一台电脑上使用相同的Python环境和依赖包

如果您想在另一台电脑上使用相同的Python环境和依赖包&#xff0c;有几种方法可以实现&#xff1a; 使用requirements.txt&#xff1a; 在您当前的虚拟环境中&#xff0c;您可以使用pip freeze > requirements.txt命令生成一个包含所有已安装包及其版本的文件。然后&#x…

2024年几款优秀的SQL IDE优缺点分析

SQL 工具在数据库管理、查询优化和数据分析中扮演着重要角色。 以下是常见的 SQL 工具及其优缺点。 1. SQLynx 优点&#xff1a; 智能代码补全和建议&#xff1a;采用AI技术提供高级代码补全、智能建议和自动错误检测&#xff0c;大幅提高编写和调试SQL查询的效率。跨平台和…

LeetCode LRU缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;…

Three.js——粒子效果、粒子水波、粒子组成立方体

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

DevOps后时代,构建基于价值流的平台化工程

本文来自腾讯蓝鲸智云社区用户: CanWay 平台化工程涉及双重核心意义。一方面&#xff0c;是类似利用IDE等工具提高工程师效率的平台化工程&#xff0c;如GitOps或命令行调度般便捷。然而&#xff0c;本文重点探讨的是基于价值流的平台化工程&#xff0c;尤其针对传统金融行业&a…

wordpress 使用api发布文章

1.安装插件 在/wp-content/plugins/目录执行以下命令 $ sudo git clone https://github.com/WP-API/Basic-Auth.git 2.Python脚本 import requestsurl http://www.ziyuanwang.online/wp-json/wp/v2/postsuser adminpassword xxxxxheaders {Content-Type: application/j…

npm有哪些插件包??

1.Web开发相关 Web开发相关的npm插件包涵盖了各种工具、框架和库&#xff0c;帮助开发人员简化开发流程、提高效率并实现更好的用户体验。以下是一些常见的Web开发相关的npm插件包及其功能&#xff1a; 1. webpack&#xff1a;一个现代的JavaScript应用程序的静态模块打包工具…

金融领域的AI解决方案

AI可赋能金融营销、资管、风控等领域&#xff0c;面向金融消费者、金融机构和金融监管机构&#xff0c;改善金融 市场信息对称性并提升金融交易的效率和安全性。目前&#xff0c;金融行业各机构对于安全认证和客户身份识别的需求较为迫切&#xff0c;身份识别和智能客服应用和落…

中子介程五

X$XFX$XEXyXαXiXαXyXEX$XFX$XEXyXαXiXαXyXEX$XαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$XdX$XpX$XdX$XyXeXαX$XEXyXαXiXαXyXEX$XαXeXyX$XdX$XpX$XdX$XhXαXeX$XηXqXαXpX$XWXyX$XyXWX$XαXtXηXαXpX$XEX$XZX$XpXαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$…

DevExpress winForm gridView 设置复选框并可多选

OptionsSelection.MultiSelect True OptionsSelection.MultiSelectMode CheckBoxRowSelect

python爬虫入门教程(二):requests库的高级用法

requests库除了基本的GET和POST请求外&#xff0c;requests库还提供了许多高级功能&#xff0c;本文将介绍其中一些常用的用法。包括&#xff1a; 会话保持&#xff08;Session&#xff09;SSL证书验证文件上传代理设置自定义HTTP适配器超时设置 请求参数 文章最开始&#x…

深入解析Java扩展机制:SPI与Spring.factories

目录 Java SPI概述 1.1 什么是SPI&#xff1f;1.2 SPI的工作原理1.3 SPI的优缺点 SPI的应用 2.1 Java标准库中的SPI应用2.2 自定义SPI示例 Spring.factories概述 3.1 什么是spring.factories&#xff1f;3.2 spring.factories的工作原理3.3 spring.factories的优缺点 spring.f…

多线程leetcode编程题

synchronized 实现 class ReentrantTest {private int n;private volatile int flag 1;private Object lock new Object();public ReentrantTest(int n) {this.n n;}public void zero(IntConsumer printNumber) throws InterruptedException{for(int i1;i<n;){synchron…

redis vs memcached

## Redis 和 Memcache 的区别总结 | 特征 | Redis | Memcache | |---|---|---| | 数据结构 | 字符串、哈希表、列表、集合、有序集合、位图 | 字符串 | | 持久化 | 支持 | 不支持 | | 性能 | 整体性能优于 Memcache | 读取简单字符串数据性能略胜一筹 | | 复杂性 | 功能更丰富…

Socket编程权威指南(一)打通网络通信的任督二脉

在网络化的今天&#xff0c;Socket已成为构建分布式系统、实现进程间通信的利器。无论是搭建Web服务器、还是开发网络游戏&#xff0c;Socket编程技能都是必不可少的武器。本文将为你娓娓道来Socket编程的精髓&#xff0c;包括基本流程概览、常用函数剖析&#xff0c;以及精彩实…

如何保证数据库和缓存的数据一致性?

保证数据库和缓存的数据一致性是一个复杂的问题&#xff0c;通常需要根据具体的应用场景和业务需求来设计策略。以下是一些常见的方法来处理数据库和缓存之间的数据一致性问题&#xff1a; 缓存穿透&#xff1a;确保缓存中总是有数据&#xff0c;即使数据在数据库中不存在&…

【CS.CN】优化HTTP传输:揭示Transfer-Encoding: chunked的奥秘与应用

文章目录 0 序言0.1 由来0.2 使用场景 1 Transfer-Encoding: chunked的机制2 语法 && 通过设置Transfer-Encoding: chunked优化性能3 总结References 0 序言 0.1 由来 Transfer-Encoding头部字段在HTTP/1.1中被引入&#xff0c;用于指示数据传输过程中使用的编码方式…

Locust:用Python编写可扩展的负载测试

Locust&#xff1a;简化性能测试&#xff0c;让负载模拟更直观- 精选真开源&#xff0c;释放新价值。 概览 Locust是一个开源的性能和负载测试工具&#xff0c;专门用于HTTP和其他协议的测试。它采用开发者友好的方法&#xff0c;允许用户使用普通的Python代码来定义测试场景。…

nvm,node不是内部命令,npm版本不支持问题(曾经安装过nodejs)

nvm安装后nvm -v有效&#xff0c;node指令无效 环境变量配置无问题 推荐方案 下载你需要的node版本 Index of /dist/ (nodejs.org) 下载后解压到你的nvm存储版本的位置 cmd进入切换你的使用版本&#xff08;此时你的nodejs是从网上下载的&#xff0c;npm文件是存在的&…

Maven中的DependencyManagement和Dependencies

Maven中的DependencyManagement和Dependencies Dependencies Dependencies是Maven项目中用来声明项目依赖的部分。在pom.xml文件中的<dependencies>部分&#xff0c;你可以直接列出项目所依赖的库&#xff08;artifacts&#xff09;。每个依赖通常包括以下信息&#xf…