客户案例|用友NC财务系统上云
本文分享一次成功将用友NC财务系统上云的经验,主要涉及阿里云上Oracle ASM存储扩容,阿里云ESC RAC服务器扩容,阿里云上Oracle RAC数据库迁移等相关技术,一起来看看吧!
1 客户数据库上云背景
本次项目我司主要负责客户Oracle RAC数据库迁移,应用系统由客户专门的团队负责。系统始建于2017年,根据企业集团战略规划,所有业务系统全部上云,财务NC自然不可避免。
云下财务数据库基于Linux x86 64位环境构建,采用了Oracle 11g RAC集群数据库架构,64C128G配置,数据量超过1T。
客户原计划找我们在阿里云上搭建一套新的RAC,通过物理备份RMAN迁移的方式上云。但是考虑到成本,客户计划使用逻辑迁移的方式将数据库导入到现有的一套云上RAC中。原先那套业务系统的RAC也由我司搭建和运维,配置为16C64G,数据量100G左右。
2 上云方案
我司作为技术专家给到客户建议:
1)复用原有的云上 RAC环境,不需要购买新的服务器。
2)云上RAC扩容。新购买NC财务的共享数据盘1.5T,归档盘0.5T,两套服务器升配到64C128G;
3)评估停机时间。若采用逻辑导入迁移,加上与周边业务系统调试、参数修改,总共需要2天停机时间,业务不能承受这么长的停机时间。因此改为使用RMAN迁移,在扩容后的RAC环境下新建一套数据库,采用RMAN增量迁移方式,数据库割接时间几乎为0,其他都是应用调整时间,由原先的两天时间缩短为几个小时;
4)建议使用2次迁移的方式,提前1周做好一次数据库迁移,基于云上数据库环境调整好应用,测试应用可用性,更能缩短第二次正式迁移的应用调整时间。
最终云上架构如下:

进行详细评审后,客户最终采用了我司提出的整体迁移实施方案。
3 实施过程
下面是具体的实施过程:
(1)共享磁盘扩容
阿里云控制台上购买ESSD共享磁盘,分别挂载到两个ECS上后,用udev方式添加ASM磁盘,原业务系统的数据盘是DATA,归档盘是ARCH。新建磁盘名为NCDATA和NCARCH,用于存放新的NC系统数据。
(2)ECS升配
ECS升配在阿里云控制台操作,要停机重启。客户的业务系统很重要,不能随意停业。RAC架构的优势就出现出来了,通过逐台升配,可以保证业务不停。
整个升配过程如下:
1)节点1,停数据库,停CRS;
2)节点1 ECS控制台上停机,升配选择64C256G配置(64C128G配置阿里云该可用区已售罄)。节点1 ECS停机时,VIP、SCAN IP自动漂移到节点2,因此业务也自动切换到了节点2。
3)启动节点1,用crsctl check crs和crsctl stat res -t 检测到集群启动后,启动实例1数据库实例,crsctl stat res -t检查资源正常,节点1升配完成。
然后在节点2重复节点1的升配过程即可。
(3)迁移验证
1)参数文件很重要,原库的配置文件通过create pfile导出,修改关键的配置参数以适合新的环境。注意涉及到目录的、注意涉及到scan ip的、注意cluster databae要改成false等等。
2)备份数据上云。将前一天的备份文件传到云上,备份文件有1T的数据,所用数据通过专线传了4个多小时才完成,这也是迁移过程中最耗时的一个步骤。
3)数据库恢复。在节点1上操作,需要注意ORACLE_SID。因为RAC环境中有1套生产库,操作时务必再三确认清楚操作对象。先建spfile文件,同时要建好初始文件中涉及到文件系统和ASM存储下的目录结构。然后nomount下恢复控制文件,mount下restore database,然后recover database,然后open resetlogs等等,都是常规操作。restore database脚本务必要改新的asm存储数据目录,否则就恢复到原生产库的data目录上了,比如“set newname for datafile 1 to '+NCDATA/orcl/datafile/system.dbf’;”所有数据文件和临时文件统统要改。再说一遍有生产库在,restore是高危操作,务必检查sid环境和restore脚本。
4)将数据库添加到RAC集群。修改cluster databae参数为true,用srvctl 加下数据库,宕下单库后srvctl start database -d nccdb -o open启动,crsct stat查看实例就有了。
交付给应用测试,数据库完工,一路下来,有惊无险。4通道数据库恢复用了不到2小时,瓶颈在NAS数据读取(备份介质在NAS上)。阿里的ESSD共享存储性能很高。
(4)正式迁移
初次迁移验证了整个迁移方案的可行性,同时也验证了应用系统上云后的功能。正式迁移时,因为第一次迁移后参数文件都在,就相对简单点。
同样在节点1上操作,确保sid已经设置为nccdb1。
1) 删掉第一次迁移恢复的数据库。也可以删除,第二次恢复时会覆盖。删除过程如下,删RAC库要注意几点
a) 环境变量,sid不要搞错了,务必再三确认;
b) 修改cluster_database=FALSE;
c) 停库srvctl stop database -d nccdb,两节点都停掉;
d) 确认instance_name后drop database;
e) srvctl remove database -d nccdb删除该库的集群信息。第5步可以不执行。
2)修改spfile参数cluster_database=FALSE后,检查ASM目录结构,nccdb的是否存在,不存在需要重建;
3)启动数据库到nomount状态恢复控制文件后, restore databse,recover database追归档,最后open resetlogs等等,一路顺利。
4)修改spfile参数cluster_database=true后,shutdown单库,srvctl start database -d nccdb -o open启动,检查集群资源,新数据库存在,检查日志正常。最后别忘了更换临时文件,迁移后原临时文件会失效。
至此,用友NC财务系统 上阿里云oracle RAC完成。
4、本次上云的价值
1)、实现了阿里云上RAC架构下承载多个数据库的案例,为客户节省了云资源成本;
2)、技术上解决了客户不能接受的停机时间,用RMAN增量迁移的方式减少了应用人员迁移业务数据的复杂度、节省迁移时间,最终缩短了业务的停机时间。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw
相关文章:
客户案例|用友NC财务系统上云
本文分享一次成功将用友NC财务系统上云的经验,主要涉及阿里云上Oracle ASM存储扩容,阿里云ESC RAC服务器扩容,阿里云上Oracle RAC数据库迁移等相关技术,一起来看看吧! 1 客户数据库上云背景 本次项目我司主要负责客户…...
OceanPen Art AI绘画系统内容讲解
在一个崇高的目标支持下,不停地工作,即使慢,也一定会获得成功。 —— 爱因斯坦 演示站点: ai.oceanpen.art官方论坛: www.jingyuai.com 💡技术栈 前端:VUE3后端:Java数据…...
类 Unix 系统的文件目录结构
以下是类 Unix 系统的文件目录结构、各个目录主要存放的文件以及缩写的全称的详细说明: 根目录 /: 全称: Root Directory说明:根目录是整个文件系统的起点,包含了所有其他目录和文件。 /bin 目录: 全称: Binary说明&a…...
外部存储器接口(EMIF)
外部存储器接口(EMIF) 该设备支持双核架构;为了为每个CPU子系统提供一个专用的EMIF,该设备支持两个EMIF模块——EMIF1和EMIF2。两个模块完全相同,具有相同的功能集,但具有不同的地址/数据大小。EMIF1在CPU…...
华为认证HCIP报名条件有哪些?考试要求介绍
华为HCIP认证是很多网络工程师的考证首选,尤其对于刚入行不久的网络工程师们来说,这个证书无论是从难度出发还是从含金量出发,都是值得一考的。 那么如果想报名华为HCIP认证有哪些条件以及考试要求,华为HCIP的报名需不需要通过机…...
【Python】变量的引用
🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...
nextjs13如何进行服务端渲染?
目录 一、创建一个新项目 二、动态获取后端数据进行服务端渲染出现的问题 三、nextjs13如何进行服务端渲染 nextjs13是nextjs的一个重大升级,一些原本在next12当中使用的API在nextjs13上使用十分不便。本文将着重介绍在nextjs13及以上版本当中进行服务端渲染的方…...
Redis-基础篇
Redis是一个开源、高性能、内存键值存储数据库,由 Salvatore Sanfilippo(网名antirez)创建,并在BSD许可下发布。它不仅可以用作缓存系统来加速数据访问,还可以作为持久化的主数据存储系统或消息中间件使用。Redis因其数…...
【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)
😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:洲与AI。 🎈 本文专栏:本文收录…...
还在犹豫学不学?鸿蒙技术是否有前途的最强信号来了
2024年3月3日 上午10 点,深圳官方账号发布了一篇关于鸿蒙技术发展的重要文章,看到这篇文章后我非常激动,忍不住和大家分享一下! 华为鸿蒙系统自提出以来,网友们的态度各不相同,有嘲笑“安卓套壳”的&#x…...
webpack的plugin 插件教程
Webpack 是一个流行的前端打包工具,通过使用插件(plugin),我们可以对 Webpack 进行扩展和定制,实现更多功能和优化构建过程。在本教程中,我将向你介绍如何编写一个简单的 Webpack 插件,并演示如…...
v72.关于指针操作的补充
1.指针作为函数参数 调用函数时,传递参数的形式决定了是否可以修改这些参数。 传值方式:传递了参数给函数,并且这个参数是基本数据类型,如(int,float),那么函数内对参数的任何操作…...
【学习心得】爬虫JS逆向通解思路
我希望能总结一个涵盖大部分爬虫逆向问题的固定思路,在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中,下面的通解思路尚不完善,还望各位读者见谅。 一、第一步:明确反爬手段 反爬手段可以分为几个大类 &#…...
如何使用Logstash搜集日志传输到es集群并使用kibana检测
引言:上一期我们进行了对Elasticsearch和kibana的部署,今天我们来解决如何使用Logstash搜集日志传输到es集群并使用kibana检测 目录 Logstash部署 1.安装配置Logstash (1)安装 (2)测试文件 ÿ…...
AutoEncoder和 Denoising AutoEncoder学习笔记
参考: 【1】 https://lilianweng.github.io/posts/2018-08-12-vae/ 写在前面: 只是直觉上的认识,并没有数学推导。后面会写一篇(抄)大一统文章(概率角度理解为什么AE要选择MSE Loss) TOC 1 Au…...
计算机系统基础
一、计算机系统概述 计算机系统:硬件软件,软件包括系统软件和应用软件 二、计算机组成结构 三、存储结构 3.1 层次化存储结构 3.2 Cache Cache(高速缓存)的功能:提高CPU数据输入输出的速率,突破冯.若依曼瓶…...
live555学习 - 环境准备
环境:Ubuntu 16.04.7 ffmpeg-6.1 1 代码下载 最新版本: http://www.live555.com/liveMedia/public/ 历史版本下载 https://download.videolan.org/pub/contrib/live555/ 选择版本live.2023.01.19.tar.gz ps:没有选择新版本是新版本在…...
C++ 模拟OJ
目录 1、1576. 替换所有的问号 2、 495. 提莫攻击 3、6. Z 字形变换 4、38. 外观数列 5、 1419. 数青蛙 1、1576. 替换所有的问号 思路:分情况讨论 ?zs:左边没有元素,则仅需保证替换元素与右侧不相等;z?s:左右都…...
MariaDB MaxScale实现mysql8读写分离
MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 MaxScale 实验环境 中间件192.168.142.13…...
代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)
题目要求:给定一个字符串,将其中单词顺序反转,且每个单词之间有且仅有一个空格。 思路:因为本题没有限制空间复杂度,所以首先想到的是用split直接分割单词,然后将单词倒叙相加。 但如果想让空间复杂度为O…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
