DATAGUARD failover切换及配置范例

Oracle DataGuard 故障转移切换 (Failover) FAILOVER切换一般是PRIMARY数据库发生故障后的切换,这种情况是STANDBY数据库发挥其作用的情况。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。 阅读详情

今天给客户演示了虚拟机上的switchover和failover的切换过程。客户关心的重点自然是failover,我们直接关掉虚拟存储的开关来模拟阵列故障。failover步骤如下

1. 

select NAME,RESETLOGS_TIME,LOG_MODE,OPEN_MODE,PROTECTION_MODE,REMOTE_ARCHIVE, 
DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING 
from v$database;


2. 停止日志应用

alter database recover managed standby database cancel;

3. 关闭standby日志传输

alter database recover managed standby database finish force;

4. 切换到primary

alter database commit to switchover to primary with session shutdown;


做这一步的时候,若存在gap,则会报ORA-16139    :Switchover: Media recovery required - standby not in limbo 错误。做测试的时候,若先起主库再起备库,且未等待备库相关日志传输完毕,就会出现这个问题。此时需要强制切换

alter database activate physical standby database;


5. 重启数据库到open状态


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

附上单机到单机的linux下dataguard实施过程。


准备环境

PRIMARY: RHEL 4.7 + oracle 10.2.0.4单机+文件系统  主机名:zhbqdb1

STANDBY: RHEL 4.7 + oracle 10.2.0.4单机 + 文件系统  主机名:zhbqdb2

主机上创建一个库名为zhdydb1的数据库,开启归档模式。备机装好数据软件,版本升级到与主机一致

在主机和备机上配好/etc/hosts并创建数据存放路径

# Do not remove thefollowing line, or various programs
#that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
172.17.42.29            zhbqdb1
172.17.42.30            zhbqdb2

 

 

创建存放数据文件和归档的目录

 

mkdir /u01/flash_recovery_area
mkdir /u01/oradata
chown oracle:oinstall/u01/flash_recovery_area
chown oracle:oinstall/u01/oradata

主机的配置


打开force logging

SQL> alter database force logging;

 

查看当前数据库是否置于force logging 下:

selectforce_logging from v$database;

创建归档目录

 

 mkdir /u01/flash_recovery_area/ZHDYDB1/arch
 mkdir/u01/flash_recovery_area/ZHDYDB2
 mkdir/u01/flash_recovery_area/ZHDYDB2/arch
 mkdir/u01/flash_recovery_area/ZHDYDB2/archivelog


配置tnsnames

在zhbqdb1上

vi$ORACLE_HOME/network/admin/tnsnames.ora

 

ZHDYDB1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =zhbqdb1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zhdydb1)
    )
  )
 
ZHDYDB2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =zhbqdb2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zhdydb2)
    )
  )

 

添加standby redo log file

这里primary库中有7个重做日志组,对应的,需要创建7+1个standby logfilegroup

 

ALTER DATABASE ADD STANDBY LOGFILE GROUP 8
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog8a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog8a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 9
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog9a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog9a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 10
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog10a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog10a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 11
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog11a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog11a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 12
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog12a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog12a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 13
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog13a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog13a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 14
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog14a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog14a.log') SIZE 100M;
 
ALTERDATABASE ADD STANDBY LOGFILE GROUP 15
('/u01/oradata/ZHDYDB1/onlinelog/sdbylog15a.log', '/u01/flash_recovery_area/ZHDYDB1/onlinelog/sdbylog15a.log') SIZE 100M;

 

查看状态

SELECTGROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
 
columnmember  format a50
selectgroup#,member from v$logfile order by group#;


 

创建密码文件及初始化文件

确定primary和standby中各有一个路径用于rman备份: /bak/dgbak

 

若primary中不存在密码文件,创建一个

orapwdfile=$ORACLE_HOME/dbs/orapwzhdydb1 password=aaa entries=5
 
cp$ORACLE_HOME/dbs/orapwzhdydb1 /bak/dgbak
mv/bak/dgbak/orapwzhdydb1 /bak/dgbak/orapwzhdydb2


SQL> create pfile='/bak/dgbak/initzhdydb2.ora' from spfile;

 

修改初始化参数

alter system setdb_unique_name=zhdydb1 scope=spfile;
alter system setLOG_ARCHIVE_CONFIG='DG_CONFIG=(zhdydb1,zhdydb2)'  scope=spfile;
 
alter system setLOG_ARCHIVE_DEST_1='LOCATION=/u01/flash_recovery_area/ZHDYDB1/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=zhdydb1'
scope=spfile;
 
alter system setLOG_ARCHIVE_DEST_2='SERVICE=zhdydb2 LGWR SYNC AFFIRM  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=zhdydb2'  scope=spfile;

alter system setLOG_ARCHIVE_DEST_STATE_1=ENABLE  scope=spfile;
alter system setLOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;
 
alter system setLOG_ARCHIVE_MAX_PROCESSES=10 scope=spfile;
alter system setlog_archive_format='%t_%s_%r.dbf' scope=spfile;
 
alter system setSTANDBY_ARCHIVE_DEST='LOCATION=/u01/flash_recovery_area/ZHDYDB1/arch'  scope=spfile;
 
 
alter system setremote_login_passwordfile='EXCLUSIVE' scope=spfile;
 
alter system set FAL_SERVER=zhdydb2  scope=spfile;
alter system set FAL_CLIENT=zhdydb1  scope=spfile;
 
alter system set db_file_name_convert='/u01/oradata/ZHDYDB1/','/u01/oradata/ZHDYDB2/'scope=spfile;
 
alter system set log_file_name_convert='/u01/flash_recovery_area/ZHDYDB1/','/u01/flash_recovery_area/ZHDYDB2/'scope=spfile;
 
 
alter system set STANDBY_FILE_MANAGEMENT=AUTO  scope=spfile;


重启到mount 状态后

 

ALTERDATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY; --将保护级别升级为最大可用

selectdatabase_role,protection_mode,protection_level,switchover_status fromv$database; 

DATABASE_ROLE  PROTECTION_MODE    PROTECTION_LEVEL  SWITCHOVER_STATUS

------------------------------------ -------------------- --------------------

PRIMARY          MAXIMUM AVAILABILITY UNPROTECTED          TO STANDBY

 

重启数据库

 

 

RMAN备份到/bak/dgbak下并将相关文件传输到standby中

rman target / <<END
crosscheck archivelog all;
run{
backup format '/bak/dgbak/db_%u_%d_%s'  database;
}
crosscheck archivelog all;
run{
 sql"alter system archive log current";
 backupformat '/bak/dgbak/ar_%t_%s_%p' archivelog all;
}
run{
backup as compressed backupset
format='/bak/dgbak/standby.ctl'
tag='standby'
current controlfile for standby reuse;
}
crosscheck archivelog all;
run{
 sql"alter system archive log current";
 backupformat '/bak/dgbak/ar_%t_%s_%p' archivelog all ;
}
exit
END


 

-----------------------------------------------------------------------------------------------

 

cd/bak/dgbak
scp *zhbqdb2:/bak/dgbak
 
scp$ORACLE_HOME/network/admin/tnsnames.ora zhbqdb2:$ORACLE_HOME/network/admin


备机的配置



创建必要的目录

 

mkdir /u01/oradata/ZHDYDB2
mkdir /u01/flash_recovery_area/ZHDYDB2
mkdir /u01/oradata/ZHDYDB2/onlinelog
mkdir/u01/flash_recovery_area/ZHDYDB2/onlinelog
 mkdir/u01/flash_recovery_area/ZHDYDB2/arch
 mkdir/u01/flash_recovery_area/ZHDYDB2/archivelog
 mkdir/u01/flash_recovery_area/ZHDYDB1
 mkdir/u01/flash_recovery_area/ZHDYDB1/arch
 mkdir/u01/flash_recovery_area/ZHDYDB1/archivelog
 
mkdir -p /opt/app/admin
mkdir -p/opt/app/admin/zhdydb1
cd/opt/app/admin/zhdydb1
mkdir adump  bdump cdump  dpdump  pfile udump


将相关文件移到对应的位置

cd/bak/dgbak/

mv initzhdydb2.ora orapwzhdydb2 $ORACLE_HOME/dbs/

 

编辑初始化参数

vi$ORACLE_HOME/dbs/initzhdydb2.ora

去掉参数:

*.remote_listener='LISTENERS_ORADB'

*.local_listener='LISTENERS_ORADB'

 

修改以下参数

*.cluster_database=false

 

确定此时standby环境变量里的ORACLE_SID为zhdydb2

 

sqlplus / assysdba

startup nomount

 

create spfilefrom pfile;
shutdownimmediate
startup nomount
 
altersystem set LOG_ARCHIVE_CONFIG='DG_CONFIG=(zhdydb1,zhdydb2)'  scope=spfile;
 
altersystem set db_unique_name=zhdydb2 scope=spfile;
altersystem set
LOG_ARCHIVE_DEST_1='LOCATION=/u01/flash_recovery_area/ZHDYDB2/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=zhdydb2'
scope=spfile;
 
 
altersystem set
LOG_ARCHIVE_DEST_2='SERVICE=zhdydb1LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zhdydb1' 
scope=spfile;
 
altersystem set
STANDBY_ARCHIVE_DEST='LOCATION=/u01/flash_recovery_area/ZHDYDB2/arch'  scope=spfile sid='*';
 
alter system set db_file_name_convert='/u01/oradata/ZHDYDB2/','/u01/oradata/ZHDYDB1/'scope=spfile;
 
alter system set log_file_name_convert='/u01/flash_recovery_area/ZHDYDB2/','/u01/flash_recovery_area/ZHDYDB1/'scope=spfile;
 
altersystem set FAL_SERVER=zhdydb1 scope=spfile;
altersystem set FAL_CLIENT=zhdydb2 scope=spfile;
alter system set STANDBY_FILE_MANAGEMENT=AUTO  scope=spfile;


shutdown immediate

克隆数据库

前面已经将zhdydb1中的tnsnames.ora复制到standby中,此时再创建一个到客户端的软连接:

ln -s$ORACLE_HOME/network/admin/tnsnames.ora $MY_CLIENT/network/admin/tnsnames.ora
ls -l$MY_CLIENT/network/admin/

 

SQL> startup nomount;

 

rman target sys/aaa@zhdydb1 auxiliary / <<EOF
 
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'/bak/dgbak/%F';
 
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK  DORECOVER;
 
EOF

 

重建standby的redo logfile group

alter database drop standby logfile group 8
/
alter database drop standby logfile group 9
/
alter database drop standby logfile group 10
/
alter database drop standby logfile group 11
/
alter database drop standby logfile group 12
/
alter database drop standby logfile group 13
/
alter database drop standby logfile group 14
/
alter database drop standby logfile group 15
/


ALTER DATABASE ADD STANDBY LOGFILE GROUP 8
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog8a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog8a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 9
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog9a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog9a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog10a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog10a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 11
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog11a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog11a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 12
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog12a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog12a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 13
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog13a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog13a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 14
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog14a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog14a.log') SIZE 100M;
 
ALTER DATABASE ADD STANDBY LOGFILE GROUP 15
('/u01/oradata/ZHDYDB2/onlinelog/sdbylog15a.log', '/u01/flash_recovery_area/ZHDYDB2/onlinelog/sdbylog15a.log') SIZE 100M;


 

查看状态

SELECTGROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
 
columnmember  format a50
selectgroup#,member from v$logfile order by group#;


启动standby

添加一个监听,将数据库名zhdydb1和实例名zhdydb2注册到监听中

netca

netmgr

 

 

启动监听

重新启动standby数据库

SQL> STARTUP NOMOUNT;

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

ALTERDATABASE RECOVER MANAGED STANDBY DATABASE [ using current logfile ] DISCONNECT FROMSESSION;

 

关闭standby

ALTERDATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SHUTDOWNIMMEDIATE;

 

lsnrctl stop

 

检查dg的同步情况

分别在primary和standby中执行如下sql语句

SELECT THREAD#, MAX(SEQUENCE#) AS"LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;

查询从Primary接收到的所有归档(Standby 端)
SQL> SELECT REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#,NEXT_CHANGE# FROM V$ARCHIVED_LOG;

 

查看alert日志

tail -f$ORACLE_BASE/admin/zhdydb1/bdump/alert_zhdydb1.log

tail -f$ORACLE_BASE/admin/zhdydb1/bdump/alert_zhdydb2.log

 

GAP处理

1) 查看是否有日志GAP:

    SQL> SELECT UNIQUE THREAD#,MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;

 SQL> SELECTTHREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;


2) 如果有,则拷贝过来

3) 手工的注册这些日志:

SQL> ALTERDATABASE REGISTER LOGFILE '路径';

switchover

主库切成备库:

1. 查询当前的状态:

  SQL> selectswitchover_status from v$database;

  若状态为sessions active,把连到主库的会话关闭掉。或切换时加上with sessionshutdown子句来断开这些会话

 

2. 切换到physical standby

  SQL> alterdatabase commit to switchover to physical standby with session shutdown;

 

3. 关闭数据库

  SQL> shutdownimmediate

 

4. 启动数据库

  SQL> startupnomount;

  SQL> alterdatabase mount standby database;

  SQL> alterdatabase recover managed standby database using current logfile disconnect fromsession;

 

备库切成主库

1. 执行完上面的步骤以后,把原备库切成主库

  SQL> alterdatabase commit to switchover to primary;

 

2. 把数据库启动到open状态

  SQL> alterdatabase open;

failover

当primary库遇到故障的时候,此时我们需要做一个failover(故障切换),把备库切到主库顶上应用

步骤如下(在备库中操作):

 

1. 结束apply进程

  SQL> alter database recover managed standby database finish force;

 

2. 切换成主库

  SQL> alter database commit to switchover to primary;

 

3. 启动到open状态

  SQL> alter database open;


物理DG的failover切换 注:failover切换后原来的主库将不可用,必须重新搭建,所以该实验请慎重选择。 1.在主库端模拟数据库意外宕机 [oracle@rhel6_lhr oradg11g]$ sqlplus / as sysdba 连接到: SQL&gt; select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique... 阅读详情

相关推荐

Oracle dataguard 正常切换和应急切换

Oracle dataguard 正常切换和应急切换 oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换模拟主库出现问题无法还原,备库脱离dataguard接管主库对外提供服务) 1)Oracle dataguard环境搭建 传送门:Linux 安装orac

willson的专栏 1万+

dataguard 主备切换方式switchover 和 failover 操作步骤

dataguard 切换方式有两种方式:switchover 和 failover。(1)Switchover :无损转换,通常是用户手动触发或者有计划的让其自动触发,比如硬件升级、软件升级之类的。switchover是有计划的,正常的切换,不会破坏数据库DG关系。通常它给你带来的工作量非常小并且都是可预计的。其执行分两个阶段,第一步,primary 数据库转换为standby 角色,第二步,standby 数据库转换为 primary 角色,primary 和 standby 只是简单的角色互换。

老苏畅谈运维 2101

Oracle DataGuard自动切换实战:从配置到故障恢复

本文详细介绍了Oracle DataGuard实现自动切换的完整实战流程。通过配置DataGuard Broker和快速启动故障切换(FSFO),系统能在主库故障时自动将备库提升为新主库,将业务中断时间缩短至分钟级,极大保障了业务连续性。文章从环境检查、关键参数设置、监听配置到DGMGRL命令行操作,逐步解析了配置要点与常见错误排查方法。

weixin_29210759的博客 202

Oracle dataguard主备库创建闪回点及快照数据库与物理standby的切换方法

dg主备库创建闪回点: Create Guaranteed Restore Points (optional) The standard switchover fallback options should suffice for successfully backing out of a switchover. However, if you want an additional fallb

lk的窝 4163

Oracle ADG 切换方式详解:Switchover 与 Failover 操作指南

Switchover 和 Failover 是 Oracle Data Guard 中两种关键的灾难恢复和高可用保障机制。前者适用于计划内维护,后者用于紧急故障响应。理解其原理、掌握操作步骤、并严格完成状态验证,是确保数据库业务连续性的基础。建议结合定期演练和监控工具,构建安全可靠的数据库容灾体系。

huanhuanzhou blog 1264

(第48天)DataGuard SwitchOver/FailOver 切换

上一章讲了如何使用 DG Broker 进行 ADG 一键切换,虽然很方便,但是生产中使用的不多,常用的切换方式还是手动切换(前提是未配置 DG Broker)。

LuciferLiu_DBA 399

DataGuard(一主一备一级联之failover)

fail over 1 failover介绍 failover转换,主要考虑的是如何减少数据量的丢失,如果可以允许数据丢失,可以直接切换备库为主库,不必在进行下面的讨论! ...

cuimiwan3140的博客 519

Dataguard故障切换(Switchover和Failover)及利用Flashback进行恢复.docx

Dataguard故障切换(Switchover和Failover)及利用Flashback进行恢复

DataGuard强制切换(failover)

failover切换   执行以下步骤完成Data Guard环境的Failover切换,为了使 failover过程尽量不丢失数据,在执行真正的切换是要尽量处理主数据库到standby数据库redo日志的传输问题,并将它们注册到standby数据库。 1: 处理缺失的redo    查找、传递和注册缺失的redo日志     这里假设主数据库出现故障

小伟的博客 2661

DSP28335与Vofa+上位机通信实战:SCIb配置避坑指南(附完整代码)

本文提供DSP28335与Vofa+上位机通信的实战指南,重点解析SCIb模块配置的常见问题与解决方案。针对研旭开发板的硬件连接、波特率精确计算、FIFO高效使用以及FireWater协议封装进行了详细说明,并附有完整代码,帮助开发者快速实现实时数据可视化与波形分析,提升调试效率。

weixin_29172963的博客 150

PCB工艺-SI9000使用教程

本文介绍了阻抗计算工具SI9000的使用方法,重点讲解了微带线与带状线的区别、共面阻抗概念及参考面选择。通过USB差分走线实例,详细说明了如何选择计算模型、填写参数并确定线宽线距。文章还提供了层叠设计资料和工厂常规阻抗表格作为参考,建议制板时标注需控阻抗的线路供板厂调整。最后简单提及了嘉立创阻抗计算工具作为备选方案。

weixin_50120208的博客 2024

DataGuard主从切换Switchover&Failover

DataGuard主从切换1.DataGuard Swithover1.1.验证主库是否可进行切换为备库1.2.在主库进行切换1.3.关闭主库并启动到mount1.4.验证备库可以切换角色1.5.切换备库角色为PRIMARY1.6.启动新主库1.7.在新备库启动同步1.8.在新备库查看同步状态2.DataGuard Failover2.1.将未投递日志传输到备库2.2.确认备库日志应用状态2.3.停止日志同步2.4.应用所有日志2.5.验证备库可以切换角色2.6.切换备库角色为PRIMARY2.7.打开数据

DBA大董的博客 5552

锐浪报表 Grid++Report 子报表 Delphi

锐浪报表 Grid++Report 是国内较好的报表控件,本人一直使用它,做出很多特色的报表。可以说你的报表设计出来,它基本上能做出来。 但是它帮助文件上,说的不深,近期因为要做一个有关社工的报表,大表中,嵌套2个子表。可以说,一个表到三个数据集,分别打印。 在认真看了帮助的基础上,网上探索,基本无此类,特别是Delphi的帮助,几乎为零。经二天摸索,做出来了。 一、设计思路 1、大表和二个小表,可以设计为三个表,分别使用三个GridppReport控件,取名...

lyhoo163的专栏 9072

【DATAGUARD】物理dg配置客户端无缝切换--Fast-Start Failover的配置(2)

【DATAGUARD】物理dg配置客户端无缝切换--Fast-Start Failover的配置(2) 【DATAGUARD】物理dg配置客户端无缝切换--Fast-Start Failover的配置 一.2.2实验环境介绍 项目 ...

446

【科研导航】【计算机视觉与图像处理】从顶刊到潜力股:跨学科(电子/电气/信息)SCI期刊投稿全景图

本文全面解析了计算机视觉与图像处理领域的SCI期刊投稿策略,涵盖从顶刊到潜力股的各类期刊特点。重点介绍了IEEE Transactions系列、Elsevier旗舰期刊以及二区优质期刊的审稿偏好和投稿技巧,特别适合电子/电气/信息交叉学科的研究者。文章还提供了三区、四区期刊的实用投稿建议,帮助科研新手快速找到适合的发表平台。

weixin_30897233的博客 81

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1710

Oracle DG Broker 进行 SwitchOver & Failover,Failover后恢复主从同步

前一篇 https://blog.youkuaiyun.com/Hehuyi_In/article/details/94384431介绍了SwitchOver & Failover的概念、区别及利用sql操作的方法。可以看到利用sql来执行需要在主从库均进行操作,命令也多,较为复杂,本篇来看如何利用DG Broker来简化这些操作。 一、DG Broker安装与配置 1.DG Brok...

Hehuyi_In的博客 4353

从点击图标到Activity亮屏:AMS、Zygote、ActivityThread的Binder协作之旅

Launcher通过Context调用 startActivity(),最终会通过 Activity.startActivity() 传递到 ActivityManager.getService(),获取AMS的Binder代理对象(IActivityManager)。这里的 attach() 方法通过Binder调用AMS的 attachApplication(),将新进程的 IApplicationThread 代理对象传递给AMS。这一步的Binder通信,是整个启动流程的关键转折点,值得细细品味。

大模型大数据攻城狮的专栏 1071

Oracle DG 手动 SwitchOver & Failover,Failover后利用闪回恢复同步

一、 概述 Oracle数据库以主/备角色之一运行,可以通过以下方法更改数据库角色: SwitchOver:在主库正常运行时进行,可翻转数据库主备角色。SwitchOver没有数据丢失,通常在预期的主库维护前进行。 Failover:在主库故障时进行,可把备库activate为主库。Failover后主从关系不会自动恢复,可以使用代理的恢复功能恢复主从关系。Failover可能有数据丢失,丢...

Hehuyi_In的博客 8565

运放单电源供电和双电源供电的实际应用案例

文章摘要:本文对比分析了运放单电源与双电源供电的典型应用场景及电路设计要点。单电源供电适用于低成本、小体积设备,如便携音箱(5V供电+中点偏置)、工业4-20mA信号转换(12V供电+电压跟随)和物联网传感器(3.3V低功耗设计);双电源供电则适合高精度要求场景,如Hi-Fi音响(±15V对称输出)、医疗设备(±5V微弱信号放大)和精密仪器(±15V宽动态范围)。文末提供常见运放选型对照表,涵盖LM324、TL082等型号的供电参数与核心特性,为不同应用场景提供选型参考。(149字)

qq_37999850的博客 608

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1156

dataguard如何实现切换_实战dataguard主从切换

前言:众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据;另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有可能会丢失数据,并且切换后原primary 数据库也不再是该data guard 配置的一部分了。本文先简单的介绍在正常情况下运行的系统切换测试;整个dataguard的...

weixin_39794385的博客 282

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

oracle auto failover,Oracle学习之DATAGUARD(九) 自动Failover

Oracle提供了一种快速自动故障转移架构(Fast-Start Failover).当主库发生故障时,FSFO会自动的将指定的从数据库转换成主数据库。此功能需要一个第三个的程序Observer来实现。Observer用于维护主数据库和目标备库的连接,监控配置状况及必要时执行故障转移。如果可能的话,当失败的主库重新联机后,Observer尝试恢复数据库,并将其转换成从库。Observer最好是部署...

weixin_28741099的博客 498

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: SOLARIS下RAC中的vip无法正常启动的解决办法
下一篇: imp导入时出现imp-00017 ora-06550的解决办法
小灰狼W
博客等级 码龄18年 908粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值