分享一篇Oracle RAC实战安装11G

分享一次很久以前的Oracle rac项目实施。

1、拓扑结构

基础环境是2台H3C的服务器+2台3PAR的双活存储,操作系统centos7.2。借用下别人家的拓扑先(这是一套典型的RAC架构)。

图片

2、网卡TEAM操作

以eno51和en052组成Team1组为示例:


nmcli con add type team con-nameteam1 ifname team1 config '{"runner": {"name":"activebackup"}}'
nmcli con mod team1 ipv4.addresses'192.168.1.1/24'
nmcli con mod team1 ipv4.methodmanual
nmcli con add type team-slavecon-name team1-port1 ifname eno51 master team1
nmcli con add type team-slavecon-name team1-port2 ifname eno52 master team1
teamdctl team1 state(查看状态)

配置完成后,修改其它网卡的启动模式从原来的dhcp改为none

3、修改主机名

hostnamectl set-hostname <主机名>
hostnamectl status进行查看

4、配置yum源

使用本地源有两个方法

(1)挂载光驱

mount  /dev/cdrom  /mnt

(2)如果没有光驱则用以下方法,挂载系统安装盘的ISO文件

需要先把安装ISO文件rhel-server-7.2-x86_64-dvd.iso上传到指定目录,并在目录下执行

mount -o loop rhel-server-7.2-x86_64-dvd.iso /mnt

创建配置文件cat /etc/yum.repos.d/local.repo

[rhel]name=rhelgpgcheck=0enable=1baseurl=file:///mnt

5、安装系统包

yum install -yelfutils-libelf-devel.x86_64yum install -ycompat-libstdc++-33.x86_64yum install -y compat-libcap1.x86_64yum install -y gcc.x86_64yum install -y gcc-c++.x86_64yum install -y glibc.i686yum install -y glibc-devel.i686yum install -y glibc-devel.x86_64yum install -y ksh-*.x86_64yum install -y libaio.i686yum install -y libaio-devel.i686yum install -y libaio-devel.x86_64yum install -y smartmontoolsyum install -y libgcc.i686yum install -y libstdc++.i686yum install -y libstdc++-devel.i686yum install -y libstdc++-devel.x86_64yum install -y libXi.i686yum install -y libXi.x86_64yum install -y libXtst.i686yum install -y libXtst.x86_64yum install -y sysstat.x86_64yum install xorg-x11-xauthyum install -y xtermyum install -y ntpdateyum install -y device-mapper-multipath

以下安装包需要手动安装

rpm -ivhcompat-libstdc++-33-3.2.3-72.el7.x86_64.rpmrpm -e ksh-20120801-22.el7_1.2.x86_64rpm -ivhpdksh-5.2.14-37.el5_8.1.x86_64.rpm

6、修改HOSTS

10.10.17.1           dyckrac110.10.17.2           dyckrac210.10.17.3           dyckrac1-vip10.10.17.4           dyckrac2-vip10.10.17.5           dyck-scan192.168.1.1         dyckrac1-priv192.168.1.2         dyckrac2-priv

7、创建用户

/usr/sbin/groupadd -g 501 oinstall/usr/sbin/groupadd -g 502 dba/usr/sbin/groupadd -g 504 asmadmin/usr/sbin/groupadd -g 506 asmdba/usr/sbin/groupadd -g 507 asmoper/usr/sbin/useradd -u 501 -g oinstall-G asmadmin,asmdba,asmoper -d /home/grid -m grid/usr/sbin/useradd -u 502 -g oinstall-G dba,asmdba -d /home/oracle -m oracleecho oracle|passwd--stdin oracleecho grid|passwd --stdin grid

8、修改用户环境变量

使用su - oracle命令切换到ORACLE用户下

编辑文件  ~/.bash_profile   增加如下内容(实例名按实际填写,分别修改两个节点)

export ORACLE_SID=orcl1export ORACLE_BASE=/u01/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

使用su - grid命令切换到ORACLE用户下

编辑文件  ~/.bash_profile   增加如下内容(实例名按实际填写,分别修改两个节点)

export ORACLE_SID=+ASM1export ORACLE_BASE=/g01/app/gridexportORACLE_HOME=/g01/app/11.2.0/gridexportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

9、配置GRID用户及ORACLE用户SSH互信

以GRID用户为例,

先在1节点从ROOT用户SU到GRID用户下

su – gridmkdir .sshtouch authorized_keys

然后创建秘钥文件

ssh-keygen -t rsa

执行回车,直到结

cat id_rsa.pub>> authorized_keys

然后到2节点执行以上相同操作。然后把2节点id_rsa.pub里的内容拷贝插入到1点的authorized_keys文件里。

在1节点把id_rsa.pub里的内容拷贝,然后插入到2节点authorized_keys文件里。

执行完毕后在两个节点分别执行

ssh dyckrac1 datessh dyckrac2 datessh dyckrac1-priv datessh dyckrac2-priv date

其间提示都输入yes。执行完成后再次执行这4条命令测试,直接显示时间不提示输入密码表示互信配置成功。

以同样的方式配置ORACLE用户互信

上面这个操作是笨方法了,现在可以用grid里自带的脚本直接处理

 ./sshUserSetup.sh -user grid -hosts "dyckrac1 dyckrac2" -advanced -noPromptPassphrase

10、关闭防火墙

systemctl stop firewalld.service&& sudo systemctl disable firewalld.service

11、关闭SELINUX

sed -i -e "s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config

12、修改limits限制

修改配置文件cat /etc/security/limits.conf

grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 65536
grid hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536

13、修改内核参数

修改文件/etc/sysctl.conf,增加如下内容:

共享内存段按自己的实际内存修改,我这里分享个脚本来自动计算

cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo "#oracle" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
echo "vm.swappiness = 10" >> /etc/sysctl.conf
echo "kernel.shmmax= $(free|grep Mem |awk '{print int($2*1024*0.85)}')" >> /etc/sysctl.conf
echo "kernel.shmall = $(free|grep Mem |awk '{print int(($2*1024*0.85)/4096)}')" >> /etc/sysctl.conf
echo "vm.nr_hugepages = $(free -m|grep Mem |awk '{print int(($2*0.8*0.8)/2)}')" >> /etc/sysctl.conf
free -m
sysctl -p

14、禁用Transparent HugePages(不禁用导致ORACLE性能问题)


[root@rac1 ~]# cat/sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never              //现在为启用
[root@rac1 ~]# cd /etc/default/
[root@rac1 default]#cp grub grub.bak
[root@rac1 ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's,release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=autord.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

此处有差异

 On BIOS-based machines(安装系统时使用传统 BIOS的改法):

 grub2-mkconfig -o /boot/grub2/grub.cfg

On UEFI-based machines(安装系统时使用UEFI-BIOS时的改法):

grub2-mkconfig -o/boot/efi/EFI/redhat/grub.cfg

执行输入如下,执行完毕后重启                                                                   

configuration file ...
Found linux image:/boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image:/boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image:/boot/vmlinuz-0-rescue-a6225ccf9497470bb6051d6392773fc9
Found initrd image:/boot/initramfs-0-rescue-a6225ccf9497470bb6051d6392773fc9.img
done
[root@rac1 default]# reboot

重启后 再查看

[root@rac1 ~]# cat/sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]              //现在为关闭

15、禁用avahi-daemon

systemctl stopavahi-daemon
systemctldisable avahi-daemon
systemctlstatus avahi-daemon

16、设置RemoveIPC=false(避免导致ASM实例CRASH)

# vi /etc/systemd/logind.conf
RemoveIPC=no

重启systemd-logind服务或重启主机​​​​​​​

systemctl daemon-reload
systemctl restart systemd-logind

设置原因请参考官方:ALERT: Setting RemoveIPC=yes on Redhat 7.2 Crashes ASM and DatabaseInstances as Well as Any Application That Uses a Shared Memory Segment (SHM) orSemaphores (SEM) (文档 ID 2081410.1)

17、配置多路径磁盘

使用/usr/lib/udev/scsi_id -g -u -d /dev/sda查出系统盘的WWID,关在MULTIAPTHD配置里把此ID列到屏蔽列表中

在两个节点启用multipathd并设置开机启动​​​​​​​

systemctl enable multipathd
mpathconf --enable

然后修改配置文件如下(此配置文件适合3PAR存储使用multipath的环境)

LINUX自带的multipath配置文件在/etc/multipath.conf​​​​​​​

defaults {
polling_interval 10
user_friendly_names no
find_multipaths yes
path_checker tur
 }
blacklist {
    wwid 3600508b1001c5b05f73bd869031e78f5 
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
  }
multipaths {
multipath {
                wwid360002ac000000000000000030001f3c6
                aliasocrvote2
 }
multipath {
                wwid 360002ac000000000000000020001f3c6
                aliasocrvote1
 }
multipath {
                wwid 360002ac000000000000000040001f3c6
                aliasocrvote3
 }
multipath {
                wwid360002ac000000000000000050001f3c6 
                aliasasmdata01
 }   
       multipath {
                wwid   360002ac000000000000000060001f3c6
                alias   asmdata02
                 }
       multipath {
                wwid   360002ac000000000000000070001f3c6
                alias   asmdata03
         }
multipath {
                wwid   360002ac000000000000000080001f3c6 
                alias   asmdata04
 }
multipath {
                wwid   360002ac000000000000000090001f3c6
                alias   asmdata05
         }
       multipath {
                wwid    360002ac0000000000000000a0001f3c6 
                alias   asmdata06
}
    multipath {
                wwid    360002ac0000000000000000b0001f3c6
                alias   asmdata07
       }   
multipath {
                wwid    360002ac0000000000000000c0001f3c6
                alias   asmdata08
   }
multipath {
                wwid    360002ac0000000000000000d0001f3c6  
                alias   asmdata09
   }
        multipath {
                wwid    360002ac0000000000000000e0001f3c6 
                alias   asmdata10
   }
multipath {
                wwid    360002ac0000000000000000f0001f3c6  
                alias   asmdata11
}
        multipath {
                wwid    360002ac000000000000000100001f3c6 
                alias   asmdata12
}
}
devices  {
device {
vendor "3PARdata"
product "VV"
path_grouping_policy group_by_prio
path_selector "round-robin 0"
path_checker tur
features "0"
hardware_handler "1 alua"
prio alua
failback immediate
rr_weight uniform
no_path_retry 18
rr_min_io_rq 1
detect_prio yes
# fast_io_fail_tmo 10
# dev_loss_tmo 14
}
 }   

修改完成后执行service multipathd reload

18、绑定磁盘UDEV权限

创建文件/etc/udev/rules.d/12-mulitpath-privs.rules,内容如下​​​​​​​

ENV{DM_NAME}=="ocrvote*",OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="asmdata*",OWNER:="grid", GROUP:="asmadmin", MODE:="660"

19、安装目录附权限​​​​​​​

chown -R oracle:oinstall /u01
chown -R grid:oinstall /g01

20、安装GI软件

使用ROOT用户拷贝软件包到/tmp目录解压,安装GI

1、解压grid软件

unzip -qp13390677_112040_Linux-x86-64_3of7.zip

2、对grid软件打补丁19404309​​​​​​​

unzip -q p19404309_112040_Linux-x86-64.zip
cd b19404309
export ORA_SHIPS=/tmp/soft
cp grid/cvu_prereq.xml$ORA_SHIPS/grid/stage/cvu

安装单节点。安装完成后按要求以root用户执行root.sh

然后升级OPatch。用最新OPatch替换$ORACLE_HOME目录下OPatch目录即可。

安装补丁18370031

解压补丁

使用GRID用户执行$ORACLE_HOME/OPatch/ocm/bin/emocmrsp生成ocm.rsp文件

使用grid用户进入到补丁包目录

cd /tmp/soft/18370031

然后执行以下命令升级

opatch apply -oh $ORACLE_HOME -ocmrf  $ORACLE_HOME/OPatch/ocm/bin/ocm.rsp

拷贝GRID软件到2节点

在1节点,以GRID用户身份执行

cd /g01
scp -r app grid@dyckrac2:/g01

拷贝完成后,以root用户执行以下脚本

/g01/app/oraInventory/orainstRoot.sh
/g01/app/11.2.0/grid/root.sh

克隆ORACLE_HOME目录

在1节点执行

cd/g01/app/oraInventory
rm-rf *
su-grid
cd$ORACLE_HOME/clone/bin

#下面的是一条命令

perlclone.pl -silent -debug ORACLE_BASE=/g01/app/gridORACLE_HOME=/g01/app/11.2.0/grid ORACLE_HOME_NAME=Ora11g_gridinfrahome1  INVENTORY_LOCATION=/g01/app/oraInventoryOSDBA_GROUP=oinstall OSOPER_GROUP=dba -O'"CLUSTER_NODES={dyckrac1,dyckrac2}"'  -O'"LOCAL_NODE=dyckrac1"' CRS=TRUE -ignoreSysPrereqs

等待执行成功,去2节点执行

在2节点执行

cd/g01/app/oraInventory
rm-rf *
su-grid
cd$ORACLE_HOME/clone/bin

#下面的是一条命令

perlclone.pl -silent -debug ORACLE_BASE=/g01/app/gridORACLE_HOME=/g01/app/11.2.0/grid ORACLE_HOME_NAME=Ora11g_gridinfrahome1  INVENTORY_LOCATION=/g01/app/oraInventoryOSDBA_GROUP=oinstall OSOPER_GROUP=dba-O'"CLUSTER_NODES={dyckrac1,dyckrac2}"'  -O'"LOCAL_NODE=dyckrac2"' CRS=TRUE-ignoreSysPrereqs

21、配置集群

以grid用户使用xstart登录到1节点执行

$ORACLE_HOME/crs/config/config.sh进行配置集群。

然后在1节点执行root.sh

成功后去2节点执行root.sh

最后的INS-20802报错忽略

查看集群状态正常则进行DB安装

安装DB

unzip -qp13390677_112040_Linux-x86-64_1of7.zip
unzip -qp13390677_112040_Linux-x86-64_2of7.zip

对db软件打补丁19404309​​​​​​​

unzip -q p19404309_112040_Linux-x86-64.zip
cd /tmp/soft/b19404309
export ORA_SHIPS=/tmp/soft
cp database/cvu_prereq.xml$ORA_SHIPS/database/stage/cvu

然后以ORACLE用户登录XSTART执行DB集群安装

安装中途会报错

另开一个窗口,直接修改ins_emagent.mk文件

$ vi $ORACLE_HOME/sysman/lib/ins_emagent.mk
#===========================
#  emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)
修改为:
#===========================
#  emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)-lnnz11

然后点击Retry继续安装

安装完成后,再后续可以继续打最新的补丁,也可以直接建库使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tengine编译安装

首先下载源码 可以去官网&#xff1a;The Tengine Web Server 当前最新版地址&#xff1a;https://tengine.taobao.org/download/tengine-3.1.0.tar.gz 安装编译依赖 yum -y install gcc pcre-devel zlib-devel openssl-devel libxml2-devel \libxslt-devel gd-devel GeoIP…

如何在Windows系统搭建Emby影音平台并实现远程访问本地文件【内网穿透】

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

AI - 支持向量机算法

&#x1f9e8;概念 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的机器学习算法&#xff0c;主要用于解决二分类问题。 SVM的核心思想是找到一个超平面&#xff0c;这个超平面能够最好地将数据分为两类&#xff0c;即在保证分类准确的情况下&am…

android studio 连接mumu模拟器调试

1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹&#xff0c;有一个adb.exe 可运行程序 一般指令&#xff1a; adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…

大模型学习笔记(一):部署ChatGLM模型以及stable-diffusion模型

大模型学习笔记&#xff08;一&#xff09;&#xff1a;部署ChatGLM模型以及stable-diffusion模型 注册算力平台&#xff08;驱动云平台&#xff09;1.平台注册2.查看算力3.进入平台中心 部署ChatGLM3-6B模型1.创建项目2.配置环境设置镜像源、克隆项目修改requirements 3.修改w…

Hive SQL必刷练习题:同时在线人数问题(*****)

问题描述&#xff1a; 思路&#xff1a; ​ 因为有进直播间时间&#xff0c;和出直播间人数。所以我可以统计&#xff0c;进来一个是不是人数就会加1&#xff0c;出去一个&#xff0c;人数就会减1。 ​ 所以可以给进直播间的时间标记一个1&#xff0c;出直播间的时间标记一个…

柚见第十二期(随机匹配)

随机匹配 目的 为了帮大家更快地发现和自己兴趣相同的朋友 问题 匹配 1 个还是匹配多个&#xff1f; 答&#xff1a;匹配多个&#xff0c;并且按照匹配的相似度从高到低排序 怎么匹配&#xff1f;&#xff08;根据什么匹配&#xff09; 答&#xff1a;标签 tags 还可以根据 us…

【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!

代码和示例数据下载 前言 在这篇文章中&#xff0c;我们将会可视化 《七版方剂学》 的药材的关系&#xff0c;我们将使用Python制作节点和边的数据&#xff0c;然后在Gephi中绘制出方剂的网络图。 Gephi是一个专门用于构建网络图的工具&#xff0c;只要你能提供节点和边的数…

Microsoft Word 符号 / 特殊符号

Microsoft Word 符号 / 特殊符号 1. 插入 -> 符号 -> 其他符号 -> Wingdings 2References 1. 插入 -> 符号 -> 其他符号 -> Wingdings 2 ​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Android FrameWork 学习路线

目录 前言 学习路线&#xff1a; 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…

SpringAI——Java生态接入LLM

最近&#xff0c;Spring官网发布了SpringAI&#xff0c;可点此查看https://spring.io/blog/2024/03/12/spring-ai-0-8-1-released&#xff0c;对于SpringAI的介绍&#xff0c;可看官方文档&#xff1a;https://spring.io/projects/spring-ai#overview。 本文将使用SpringAI配合…

Linux内核有什么之块设备驱动有什么第四回 —— 邂逅的三个文件系统之二:实际文件系统(1)

接前一篇文章&#xff1a;Linux内核有什么之块设备驱动有什么第三回 —— 邂逅的三个文件系统之一&#xff1a;devtmpfs 本文内容参考&#xff1a; 34 | 块设备&#xff08;上&#xff09;&#xff1a;如何建立代理商销售模式&#xff1f;-趣谈Linux操作系统-极客时间 Linux内…

vscode通过多个跳板机连接目标机(两种方案亲测成功)

1、ProxyJump&#xff08;推荐使用&#xff09; 需要OpenSSH 7.3以上版本才可使用&#xff0c;可用下列命令查看&#xff1a; ssh -V ProxyJump命令行使用方法 ssh -J [email protected]:port1,[email protected]:port2 一层跳板机&#xff1a; ssh dst_usernamedst_ip -…

【Spring 篇】SpringMVC拦截器:给你的应用增添色彩

嗨&#xff0c;亲爱的小伙伴们&#xff01;欢迎来到这段关于SpringMVC拦截器的奇妙之旅。今天我们要一探究竟&#xff0c;深入挖掘拦截器的神秘面纱&#xff0c;看看它是如何在你的应用中悄然发挥作用的。别怕&#xff0c;我会用最通俗易懂的语言&#xff0c;一步一步带你走进这…

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结&#xff1a; github 模拟登录 前言 前面学习了requests模块的基础学习后&#xff0c;接下来做一个…

c++算法学习笔记 (8) 树与图部分

1.树与图的存储 &#xff08;1&#xff09;邻接矩阵 &#xff08;2&#xff09;邻接表 // 链式前向星模板&#xff08;数组模拟&#xff09; #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N 100010, M …

GAMES104-现代游戏引擎 1

主要学习重点还是面向就业&#xff0c;重点复习八股和算法 每天早上八点到九点用来学习这个课程 持续更新中... 第一节 游戏引擎导论 第二节 引擎架构分层

jvm的垃圾回收器以及触发full gc的场景

JVM&#xff08;Java虚拟机&#xff09;的垃圾回收器有很多种&#xff0c;主要包括以下几种&#xff1a; Serial收集器&#xff1a;串行收集器是最古老、最稳定的收集器。它使用单个线程进行垃圾收集工作&#xff0c;在进行垃圾回收时会暂停所有用户线程。 ParNew收集器&#…

Mr-Robot1靶场练习靶场推荐小白入门练习靶场渗透靶场bp爆破wordpress

下载链接&#xff1a; Mr-Robot: 1 ~ VulnHub 安装&#xff1a; 打开vxbox&#xff0c;菜单栏----管理----导入虚拟电脑 选择下载完的ova文件&#xff0c;并修改想要保存的位置&#xff08;也可以保持默认位置&#xff09; 导入完成后可以根据自己的情况去配置网络链接方式 完成…

AI健身教练-引体向上-俯卧撑计数代码-仰卧起坐姿态估计-康复训练姿态识别-姿态矫正(附代码)

在AI健身应用中&#xff0c;通过关键点检测技术可以实现对用户动作的精准捕捉和分析&#xff0c;从而进行统计计数和规范性姿态识别。 统计计数&#xff1a;比如在做瑜伽、健身操等运动时&#xff0c;系统可以通过对人体关键点&#xff08;如手部、脚部、关节等&#xff09;的…