当前位置: 首页 > news >正文

Oracle一对多(一主多备)的DG环境如何进行switchover切换?

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步?

1、环境说明

本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下:

数据库IPdb_unique_name原角色(切换前)目标角色(切换后)
10.10.10.160ora11g主库备库
10.10.10.41dgora11g备库主库
10.10.10.47sbora11g备库备库

说明:
(1)当前主库为10.10.10.160,10.10.10.41 和10.10.10.47是它的两个备库。

​(2)switchover切换后,10.10.10.41变为主库,10.10.10.160和10.10.10.47成为它的两个备库。

2、主要参数配置

以下是相关数据库的主要参数配置信息(以db_unique_name进行区分):

ora11g:

set linesize 500 pages 0
col value for a100
col name for a50
select name, value
from v$parameter
where name in ('db_name','db_unique_name',
'log_archive_config',
'log_archive_dest_1','log_archive_dest_2',
'log_archive_dest_state_1',
'log_archive_dest_state_2',
'remote_login_passwordfile',
'log_archive_format',
'log_archive_max_processes',
'fal_server','db_file_name_convert',
'log_file_name_convert',
'standby_file_management')
/db_file_name_convert				   /u01/oradata/dgora11g, /u01/oradata/ora11g, /u01/oradata/sbora11g, /u01/oradata/ora11g
log_file_name_convert				   /u01/oradata/dgora11g, /u01/oradata/ora11g, /u01/oradata/sbora11g, /u01/oradata/ora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=ora11g
log_archive_dest_2				   SERVICE=dgora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=dgora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   dgora11g, sbora11g
log_archive_config				   DG_CONFIG=(ora11g,dgora11g,sbora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   ora11g

dgora11g:

db_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/dgora11g
log_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/dgora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=dgora11g
log_archive_dest_2				   SERVICE=ora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   ora11g
log_archive_config				   DG_CONFIG=(ora11g,dgora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   dgora11g

sbora11g:

db_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/sbora11g
log_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/sbora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=sbora11g
log_archive_dest_2				   SERVICE=ora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   ora11g
log_archive_config				   DG_CONFIG=(ora11g,sbora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   sbora11g

3、切换前检查

切换前,确认备库同步情况,有没有延迟

dgora11g:

sys@dgora11g> select value from v$dataguard_stats where name='transport lag';VALUE
----------------------------------------------------------------
+00 00:00:00sys@dgora11g> select value from v$dataguard_stats where name='apply lag'; VALUE
----------------------------------------------------------------
+00 00:00:00--检查最新归档到的日志号及是否有gapsys@dgora11g> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;THREAD	 LAST
---------- ----------1	  289sys@dgora11g> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;no rows selected

sbora11g:

sys@sbora11g > select value from v$dataguard_stats where name='transport lag';VALUE
----------------------------------------------------------------
+00 00:00:00sys@sbora11g > select value from v$dataguard_stats where name='apply lag';VALUE
----------------------------------------------------------------
+00 00:00:00
sys@sbora11g > SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;THREAD	 LAST
---------- ----------1	  289sys@sbora11g > SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;no rows selected

检查确认两个备库实时同步,没有延时后,才能切换。

4、switchover切换

在切换时,在主库上是不可以选择我要切换到哪个备库的,这个选择是在备库上选择的,下面进行SWITCHOVER切换。

–主库状态

sys@ora11g> col name for a10;
sys@ora11g> set linesize 100;
sys@ora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ WRITE		PRIMARY 	 TO STANDBY	      YES DISABLED NONE

–备库状态

dgora11g:

sys@dgora11g> col name for a10;
sys@dgora11g> set linesize 100;
sys@dgora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY NOT ALLOWED	      YES DISABLED NONE

sbora11g:

sys@sbora11g > col name for a10;
sys@sbora11g > set linesize 100;
sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY NOT ALLOWED	      YES DISABLED NONE

–将主库转为物理备库

ora11g:

alter database commit to switchover to physical standby with session shutdown;

切换后,这个数据库已经备关闭,启动数据库,这个数据库已经变为备库,启动MRP进程。

sys@ora11g> startup;
ORACLE instance started.Total System Global Area 3691200512 bytes
Fixed Size		    2258680 bytes
Variable Size		 1392511240 bytes
Database Buffers	 2281701376 bytes
Redo Buffers		   14729216 bytes
Database mounted.
Database opened.
sys@ora11g> alter database recover managed standby database using current logfile disconnect from session;Database altered.或 alter database recover managed standby database using current logfile disconnect from session parallel 4; --检查状态,可以看到已变为从库
sys@ora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

PS:主库切换后,两个备库均变为TO PRIMARY状态,这时就要选择切换哪个备库为主库了。

dgora11g:

sys@dgora11g> col name for a10;
sys@dgora11g> set linesize 100;
sys@dgora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

在这里插入图片描述

sbora11g:

sys@sbora11g > col name for a10;
sys@sbora11g > set linesize 100;
sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

在这里插入图片描述

–备库切换成主库

这里选择sbora11g这个备库切换为主库:

sys@sbora11g > alter database commit to switchover to primary with session shutdown;Database altered.sys@sbora11g > alter database open;Database altered.sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ WRITE		PRIMARY 	 TO STANDBY	      YES DISABLED NONE

5、新主库参数调整

log_archive_config、log_archive_dest_3还需加上从库dgora11g

sys@sbora11g > show parameter archive;NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target		     integer	 0
log_archive_config		     string	 DG_CONFIG=(ora11g,sbora11g)
log_archive_dest		     string
log_archive_dest_1		     string	 location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=sbora11g
log_archive_dest_10		     string
log_archive_dest_11		     string
log_archive_dest_12		     string
log_archive_dest_13		     string
log_archive_dest_14		     string
log_archive_dest_15		     string
log_archive_dest_16		     string
log_archive_dest_17		     string
log_archive_dest_18		     string
log_archive_dest_19		     string
log_archive_dest_2		     string	 SERVICE=ora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ora11g
............................................
log_archive_dest_3		     string--log_archive_config 需将三节点都加上
alter system set log_archive_config='DG_CONFIG=(sbora11g,ora11g,dgora11g)' scope=both sid='*';
alter system set log_archive_dest_3='SERVICE=dgora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=dgora11g' scope=both sid='*';
alter system set fal_server='ora11g','dgora11g' scope=both sid='*';
alter system set log_archive_dest_state_3=defer scope=both sid='*';
alter system set log_archive_dest_state_3=enable scope=both sid='*';

6、备库参数调整

–log_archive_config 若未设置,需将三节点都加上

--log_archive_config需将三节点都加上
--dgora11g 修改目标主库为sbora11g
sys@dgora11g> show parameter config;NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1		     string	 /u01/app/oracle/product/11.2.0/db/dbs/dr1dgora11g.dat
dg_broker_config_file2		     string	 /u01/app/oracle/product/11.2.0/db/dbs/dr2dgora11g.dat
log_archive_config		     string	 DG_CONFIG=(ora11g,dgora11g)
sys@dgora11g> alter system set log_archive_config='DG_CONFIG=(sbora11g,ora11g,dgora11g)' scope=both sid='*';System altered.--因为dgora11g这个数据库之前的主是ora11g(现在已经变成了备库),需要把dgora11g的主改成sbora11g。alter system set log_archive_dest_2='SERVICE=sbora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=sbora11g' scope=both sid='*';alter system set FAL_SERVER='ora11g','sbora11g';若新的主库不在备库的DG_CONFIG配置里,主库会报错:
ARC3: Archivelog destination LOG_ARCHIVE_DEST_3 disabled: destination Data Guard configuration error
Archived Log entry 29 added for thread 1 sequence 300 ID 0x108ef4ac dest 1:
Fri Aug 09 20:16:12 2024
LNS: Standby redo logfile selected for thread 1 sequence 301 for destination LOG_ARCHIVE_DEST_2--ora11g备库已经配置,不用修改
sys@ora11g> show parameter log_archive_config;NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_config		     string	 DG_CONFIG=(ora11g,dgora11g,sbora11g)

7、切换后验证

–主库插入测试数据

sys@sbora11g > create table tt0809 as select * from dba_objects;Table created.

–两备库查询

sys@ora11g> select count(*) from tt0809;COUNT(*)
----------86266
sys@dgora11g> select count(*) from tt0809;  COUNT(*)
----------86266

至此主从切换已完成,新主库应与两从库正常同步

关注我,学习更多的数据库知识
请添加图片描述

相关文章:

Oracle一对多(一主多备)的DG环境如何进行switchover切换?

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步? 1、环境说明 本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下: 数据库IPdb_unique_n…...

【浏览器插件】Chrome扩展V3版本

前言:Chrome从2022年6月开始,新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网(要翻墙): https://developer.chrome.com/docs/extensions/mv3 MDN中文:https:/…...

编码器信号干扰问题、编码器选型

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、屏蔽技术1.静电屏蔽:2.低频磁屏蔽:3.电磁屏蔽:4.减少“天线” 二、增量编码器的信号选择三、信号电缆选择四、…...

Unity入门5——材质

创建材质 点击Assets → Create → Material,得到一个默认材质球的副本。 使用材质 直接把材质球拖拽到物体上,或设置mesh renderer组件下的Materials 数组中第一个元素...

C的温故而知新:存储类别、链接和内存管理(C Primer Plus第十二章)

存储类别、链接和内存管理 这一章主要涉及到的是一些偏概念的东西,基本上偏向于自己去理解这部分内容。很好地理解这一章可以更好地控制程序,合理的利用内存存储数据。 C语言提供了多种不同的模型或存储类别在内存中存储数据。作用域有块作用域、函数作…...

SpringBoot统一功能处理——统一数据返回格式

目录 一、简单使用 二、存在的问题描述 三、优点 一、简单使用 统一的数据返回格式使用 ControllerAdvice 和 ResponseBodyAdvice 的方式实现 ControllerAdvice 表示控制器通知类。 添加类 ResponseAdvice , 实现 ResponseBodyAdvice 接口,并在类上添加 …...

Milvus 实践(2) --- 2.4.x 安装,脚本分析,数据存储解析

目录 背景 Milvus2.4.x安装脚本分析 etcd组件 container_name image 参数 注意问题 environment volumes 实体化 command 参数 注意事项 healthcheck 参数 作用 下载 minio组件 container_name image 参数 注意事项 environment 参数 ports 参数 注…...

【蛋疼c++】千万别用std::wifstream读取Unicode UTF16文件

上当了。 最近程序要和 Jscript / activex 脚本通信。 ActiveX这玩意,导出文件,如果是UTF8导出,会出现莫名异常:写一半直接退出。或许是系统语言设置的问题。 但是切换为utf16(unicode)导出就没有问题&a…...

[算法] 第二集 二叉树中的深度搜索

深度优先遍历(DFS,全称为 Depth First Traversal),是我们树或者图这样的数据结构中常⽤的 ⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分支,直到⼀条路径上的所有节点都被遍历 完毕,然后再回溯到上…...

放弃使用外键时,sequelize 应该怎么使用?

在使用 Sequelize 时,如果想放弃使用外键,但仍然希望在模型之间建立关联,可以通过设置 constraints 选项为 false 来实现。这允许你定义模型之间的关系,而不在数据库中创建外键约束。以下是具体的实现步骤: 定义没有外…...

Microsoft GraphRAG 输出的配置信息

Microsoft GraphRAG 输出的配置信息 {"llm": {"api_key": "REDACTED, length 9","type": "oci_genai_chat","model": "cohere.command-r-plus","max_tokens": 4000,"temperature"…...

怎么判断张量的维度(形状(shape)),即如何定义行数、列数和深度的?

举一个三维张量吧 # 3行4列深度为2 const3 tf.constant([[[1,2],[3,4],[5,6],[7,8]],[[11, 12], [13, 14], [15, 16], [17, 18]],[[21, 22], [23, 24], [25, 26], [27, 28]] ],tf.float16) shape (3,4,2)--借鉴博主奶油松果的图和代码 分析形状 (3, 4, 2) 最外层的括号&…...

AI入门指南(二):算法、训练、模型、大模型是什么?

文章目录 一、前言二、算法是什么?概念实际应用 三、训练是什么?概念实际应用 四、模型是什么?概念实际应用小结 五、大模型是什么?概念大模型和小模型有什么区别?大模型分类实际应用 六、总结七、参考资料 一、前言 …...

CSS已访问链接的隐私保护

摘抄自:《CSS权威指南 第四版》 有超过十年的时间,已访问的链接可以使用任何可用的CSS属性装饰,与未访问链接没有差别。 然而,大约在2005年,有几个人通过示例揭露,通过视觉样式和简单的DOM脚本就可以判断用…...

代码练习12-排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 归并排序算法核心步骤 归并排序核心步骤如下: 把长度为n的要排序的序列,分成两个长度为n/2的子序列;对这两个子序列,分别采用归并排序&#xff1b…...

Linux 内核源码分析---套接字

套接字通信 ISO 设计一种参考模型,定义组成网络的各个层,该模型由7层组成,称为OSI(开放 系统互连)模型如下: 应用层:网络服务与最终用户的接口; 表示层:数据的表示、安…...

vscode配置xdebug断点调试详细教程

注:环境为本地windows开发环境,编辑器为vscode,PHP集成环境工具为EServer vscode安装扩展并配置 安装PHP Debug 扩展中搜索 PHP Debug 并安装: 配置PHP Debug 1、点击扩展设置 2、在设置中,点击 setting.json 3、编…...

【人工智能】Transformers之Pipeline(八):文生图/图生图(text-to-image/image-to-image)

目录 一、引言 二、文生图/图生图(text-to-image/image-to-image) 2.1 文生图 2.2 图生图 2.3 技术原理 2.3.1 Diffusion扩散模型原理 2.3.2 Stable Diffusion扩散模型原理 2.4 文生图实战 2.4.1 SDXL 1.0 2.4.2 SD 2.0 2.5 模型排名 三、总…...

AI Agent 工程师认证-学习笔记(1)——【单Agent】ModelScope-Agent

学习链接: 【单Agent】ModelScope-Agent学习指南https://datawhaler.feishu.cn/wiki/GhOLwvAPkiSWmokjUgqc1eGonDf 手把手Agent开发开源教程(觉得不错的话可以star一下)https://github.com/datawhalechina/agent-tutorial 动手学Agent应用…...

【Python机器学习】树回归——将CART算法用于回归

要对数据的复杂关系建模,可以借用树结构来帮助切分数据,如何实现数据的切分?怎样才能知道是否已经充分切分?这些问题的答案取决于叶节点的建模方式。回归树假设叶节点是常数值,这种策略认为数据中的复杂关系可以用树结…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...