单机19c oracle不停机搭建ADG备库 同步数据并主备切换
0.前期准备
数据库版本、补丁、操作系统版本一样,ADG只需要安装数据库软件,不需要dbca创建库
备库ORACLE_HOME、ORACLE_SID路径和主库保持一致
| 主库 | ADG-备库 | |
| IP |
10.98.3.70 |
10.98.3.75 |
| 数据库版本 | 19.19.0.0.0 | 19.19.0.0.0 |
| 补丁 |
19.19_DB_p35042068 _190000_Linux-x86-64.zip |
19.19_DB_p35042068 _190000_Linux-x86-64.zip |
| 操作系统版本 | Red Hat7.9 | Red Hat8.8 |
备库hostname=wza01,oracle_sid=orcl,db_unique_name=orcl
备库hostname=wzabak,oracle_sid=orcldg,db_unique_name=orcldg
一、主库&备库环境准备
1、主库配置
1.1.主库更改hosts文件
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#DG备库
10.98.3.75 wzabak
#主库
10.98.3.70 wza01
1.2.主库开启强日志&归档模式
select force_logging from v$database;
alter database force logging;
archive log list;
--如果主库没有开启归档是需要停机窗口开启归档的
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database open
1.3.主库配置参数
查询数据文件位置:select name from v$datafile;
查询日志文件位置:select member from v$logfile;
DG_CONFIG主库和备库必须设置不同的名称,不区分大小写,
oracle_sid可以重复(因为是异机)fal_client=本机oracle_sid
DB_FILE_NAME_CONVERT=主库路径、备库路径
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)' scope=both sid='*';
alter system set log_archive_dest_1='LOCATION=/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=spfile;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg' scope=both sid='*';
alter system set fal_client='orcl' scope=both sid='*';
alter system set FAL_SERVER='orcldg' scope=both sid='*';
alter system set standby_file_management=AUTO scope=both sid='*';
alter system set DB_FILE_NAME_CONVERT='/data/orcl','/u01/app/oracle/oradata/orcldg/datafile' scope=spfile sid='*';
alter system set LOG_FILE_NAME_CONVERT='/data/orcl','/u01/app/oracle/oradata/orcldg/onlinelog' scope=spfile sid='*';
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;
alter system set PARALLEL_EXECUTION_MESSAGE_SIZE=8192 scope=spfile;
有scope=spfile的参数,需要重启数据库生效
(无停机窗口的时候可以不设置非必要的参数)
1.4.主库增加standby logfile日志组
select GROUP#,BYTES/1024/1024 MB,STATUS from v$log;
GROUP# MB STATUS
---------- ---------- ----------------
1 200 CURRENT
2 200 INACTIVE
3 200 INACTIVE
4 200 CURRENT
备库比主库多一组redolog,大小一样,group最好从10开始,防止和主库冲突
alter database add standby logfile thread 1 group 11 '/u01/app/oracle/fast_recovery_area/redo11.log' size 200m;
alter database add standby logfile thread 1 group 12 '/u01/app/oracle/fast_recovery_area/redo12.log' size 200m;
alter database add standby logfile thread 1 group 13 '/u01/app/oracle/fast_recovery_area/redo13.log' size 200m;
alter database add standby logfile thread 2 group 14 '/u01/app/oracle/fast_recovery_area/redo14.log' size 200m;
alter database add standby logfile thread 2 group 15 '/u01/app/oracle/fast_recovery_area/redo15.log' size 200m;
alter database add standby logfile thread 2 group 16 '/u01/app/oracle/fast_recovery_area/redo16.log' size 200m;
1.5.主库修改tnsnames文件
cd $ORACLE_HOME/network/admin
vi tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = wza-01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLDG=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = wzabak)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME= orcldg)
)
)
1.6.主库监听重启,确认监听状态
su - oracle
lsnrctl stop
lsnrctl start
lsnrctl status
[oracle@wza01]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-APR-2025 15:55:29
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 14-APR-2025 10:14:49
Uptime 3 days 5 hr. 40 min. 40 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19c/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/wza01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.98.3.70)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for this service...
The command completed successfully
2、备库配置
2.1.备库更改hosts文件,和主库内容相同
su - root
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#DG备库
10.98.3.75 wzabak
#主库
10.98.3.70 wza01
2.2.备库更改Oracle用户环境变量
[oracle@wzabak ~]$ pwd
/home/oracle
[oracle@wzabak ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export EDITOR=vi
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcldg
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/db_1
export INVENTORY_LOCATION=/u01/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
2.3.备库修改tnsnames文件,和主库内容相同
cd $ORACLE_HOME/network/admin
vi tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = wza-01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLDG=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = wzabak)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME= orcldg)
)
)
2.4.备库修改listener.ora文件
cd $ORACLE_HOME/network/admin
vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.3.75)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19c/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orcldg)
(ORACLE_HOME = /u01/app/oracle/product/19c/db_1)
(SID_NAME = orcldg)
)
)
2.5.备库监听重启,确认监听状态
su - oracle
lsnrctl stop
lsnrctl start
lsnrctl status
[oracle@wzabak]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 16-APR-2025 17:25:01
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.98.3.75)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 16-APR-2025 17:14:50
Uptime 0 days 0 hr. 10 min. 10 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19c/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/wzabak/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.98.3.75)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "orcldg" has 1 instance(s).
Instance "orcldg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
3、复制密码文件到备库
注意:duplicate需要确保主备库的数据库密码&用户名一致,pfile(init*.ora)文件名一致
3.1.主库重新生成密码文件
密码文件名称=orapw{主库ORACLE_SID}
密码需要满足复杂度,至少8位,有一个特殊字符,包含字母和数字
spfile同路径下可以找到密码文件的位置
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /data/ORCL/PARAMETERFILE/spfil
e.276.1191232127
su - grid
orapwd file=$ORACLE_HOME/dbs/orapworcl password=dba_12345 force=y
3.2.复制密码文件到备库
备库的路径不可以用$ORACLE_HOME代替,除非主备库的ORACLE_HOME一模一样
scp $ORACLE_HOME/dbs/orapworcl oracle@wzabak:/u01/app/oracle/product/19c/db_1/dbs/
备库:
cd /u01/app/oracle/product/19c/db_1/dbs/
cp orapworcl orapworcldg
4、备库修改参数文件
备库的参数文件名称=init{主库ORACLE_SID}.ora,备库启动&主库duplicate的时候读取此文件
文件修改完毕之后复制一份,=init{备库ORACLE_SID}.ora,搭建完成之后读取此文件
主库:
create pfile from spfile
cd $ORACLE_HOME/dbs
scp $ORACLE_HOME/dbs/initorcl.ora oracle@wzabak:/u01/app/oracle/product/19c/db_1/dbs/
备库:
cp initorcl.ora initorcldg.ora
4.1.修改参数文件
enable_pluggable_database=true,备库开启PDB模式,这个是可选项
su - oracle
vi /u01/app/oracle/product/19c/db_1/dbs/initorcl.ora
*.audit_file_dest='/u01/app/oracle/audit'
*.audit_trail='db'
*.compatible='19.19.0.0'
*.control_files='/u01/app/oracle/oradata/orcldg/control01.ctl','/u01/app/oracle/oradata/orcldg/control02.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/orcldg'
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle/diag/rdbms'
*.db_unique_name='orcldg'
*.dispatchers=''
*.fal_client='orcldg'
*.fal_server='orcl'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.log_archive_format='%t_%s_%r.arc'
*.LOG_FILE_NAME_CONVERT='+DATA/orcl','/u01/app/oracle/oradata/orcldg/onlinelog'
*.DB_FILE_NAME_CONVERT='+DATA/orcl','/u01/app/oracle/oradata/orcldg/datefile'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.parallel_execution_message_size=8192
*.pga_aggregate_target=1006m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3018m
*.standby_file_management='AUTO'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=5242880
*.enable_pluggable_database=true
*.service_names='orcl','orcldg'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
4.2.根据参数文件,在备库创建目录
su - oracle
mkdir -p /u01/app/oracle/oradata/orcldg/onlinelog
mkdir -p /u01/app/oracle/oradata/orcldg/datafile
mkdir -p /u01/app/oracle/oradata/orcldg/
mkdir -p /u01/app/oracle/diag/rdbms/
mkdir -p /u01/app/oracle/audit
mkdir -p /u01/app/oracle/fast_recovery_area
二、主备库数据同步
1、备库启动至unmount
[oracle@wzabak ]$ sqlplus / as sysdba
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 3170891368 bytes
Fixed Size 9168488 bytes
Variable Size 637534208 bytes
Database Buffers 2516582400 bytes
Redo Buffers 7606272 bytes
SQL> select status from v$instance;
STATUS
------------------------------------
STARTED
2、主库使用RMAN进行在线auxiliary克隆
2.1rman登录主库和备库
主备库的数据库登录用户名和密码必须相同
[oracle@wza01:/home/oracle]$ rman target sys/dba_12345@orcl auxiliary sys/dba_12345@orcldg
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Apr 16 17:30:39 2025
Version 19.19.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1719012227)
connected to auxiliary database: ORCL (not mounted)
RMAN>
2.2duplicate复制
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate AUXILIARY channel c7 type disk;
allocate AUXILIARY channel c8 type disk;
allocate AUXILIARY channel c9 type disk;
allocate AUXILIARY channel c10 type disk;
allocate AUXILIARY channel c11 type disk;
allocate AUXILIARY channel c12 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
release channel c9;
release channel c10;
release channel c11;
release channel c12;
}
2.3复制成功,此时备库应为mounted状态。以下为示例log
Starting restore at 18-JUL-26
channel aux1: starting archived log restore to default destination
channel aux1: using network backup set from service orcl
channel aux1: restoring archived log
archived log thread=1 sequence=96993
channel aux2: starting archived log restore to default destination
channel aux2: using network backup set from service orcl
channel aux2: restoring archived log
archived log thread=1 sequence=96994
channel aux3: starting archived log restore to default destination
channel aux3: using network backup set from service orcl
channel aux3: restoring archived log
archived log thread=1 sequence=96995
channel aux1: restore complete, elapsed time: 00:00:00
channel aux2: restore complete, elapsed time: 00:00:01
channel aux3: restore complete, elapsed time: 00:00:01
Finished restore at 18-JUL-26
Starting recover at 18-JUL-26
Starting recover at 18-JUL-26
starting media recovery
archived log for thread 1 with sequence 96993 is already on disk as file /data/app/oracle/archivelog1_96993_1204799200.dbf
archived log for thread 1 with sequence 96994 is already on disk as file /data/app/oracle/archivelog1_96994_1204799200.dbf
archived log for thread 1 with sequence 96995 is already on disk as file /data/app/oracle/archivelog1_96995_1204799200.dbf
archived log file name=/data/app/oracle/archivelog1_96993_1204799200.dbf thread=1 sequence=96993
archived log for thread 1 with sequence 96995 is already on disk as file /data/app/oracle/archivelog1_96995_1204799200.dbf
archived log file name=/data/app/oracle/archivelog1_96993_1204799200.dbf thread=1 sequence=96993
archived log file name=/data/app/oracle/archivelog1_96994_1204799200.dbf thread=1 sequence=96994
archived log file name=/data/app/oracle/archivelog1_96995_1204799200.dbf thread=1 sequence=96995
media recovery complete, elapsed time: 00:00:02
Finished recover at 18-JUL-26
Deleted 1 objects
deleted archived log
archived log file name=/data/app/oracle/archivelog1_96994_1204799200.dbf RECID=3 STAMP=1238945222
Deleted 1 objects
Finished Duplicate Db at 18-JUL-26
released channel: c1
released channel: c2
released channel: c3
released channel: c4
released channel: aux1
released channel: aux2
released channel: aux3
released channel: aux4
3、备库启动至open
alter database recover managed standby database using current logfile disconnect;
该命令用于启动备用数据库的恢复管理进程,让备用数据库开始接收并应用主数据库传输过来的重做日志(Redo Log),以此保持与主数据库的数据同步。同时,disconnect 选项允许在启动恢复进程后,当前的 SQL 会话与恢复进程断开连接,这样你可以继续使用该会话执行其他操作,而恢复进程会在后台持续运行
SQL> alter database open;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
SQL> select status from v$instance;
STATUS
------------
OPEN
4、在备库确认物理备库搭建成功,进程正常运行
SQL> select process,client_process,sequence#, THREAD# ,status from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# THREAD# STATUS
--------- -------- ---------- ---------- ------------
ARCH ARCH 0 0 CONNECTED
DGRD N/A 0 0 ALLOCATED
DGRD N/A 0 0 ALLOCATED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
ARCH ARCH 0 0 CONNECTED
RFS Archival 0 1 IDLE
RFS LGWR 177 1 IDLE
MRP0 N/A 170 2 WAIT_FOR_LOG
RFS UNKNOWN 0 0 IDLE
10 rows selected.
SQL> select database_role,protection_mode,protection_level,open_mode from v$database;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL OPEN_MODE
---------------- -------------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE READ ONLY WITH APPLY
SQL> SELECT sequence#, thread#, first_time FROM V$ARCHIVED_LOG ORDER BY sequence#;
SEQUENCE# THREAD# FIRST_TIME
---------- ---------- -------------------
167 2 2025-04-25 10:52:31
168 2 2025-04-25 10:59:08
169 2 2025-04-25 10:59:26
169 2 2025-04-25 10:59:26
175 1 2025-04-25 10:59:06
176 1 2025-04-25 10:59:26
6 rows selected.
SQL> select group#,thread#,sequence#,archived,status from v$standby_log;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
11 1 0 NO UNASSIGNED
12 1 0 NO UNASSIGNED
13 1 177 YES ACTIVE
14 2 0 YES UNASSIGNED
15 2 0 YES UNASSIGNED
16 2 0 YES UNASSIGNED
6 rows selected.
三、主备库角色切换
0.应用停止向数据库写入,因为主备切换有段时间停止窗口
1.在主库检查 Switchover 状态
SELECT SWITCHOVER_STATUS FROM V$DATABASE;
-- 预期:返回 TO STANDBY 或 SESSIONS ACTIVE 才能继续
检查主库状态(必须在主库执行)
SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;
-- 预期:PRIMARY READ WRITE
检查主库是否有活动会话(建议切换前先踢掉应用连接)
SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;
在主、备库执行,确认最后归档已应用
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED='YES';
在备库确认同步状态
SELECT PROCESS, STATUS, SEQUENCE# FROM V$MANAGED_STANDBY WHERE PROCESS='MRP0';
-- MRP0 状态应为 APPLYING_LOG,SEQUENCE# 应与主库一致
2.主库执行 Switchover 切换,状态变为备库
-- 在主库执行,将主库转为备库角色
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
-- 切换完成后,主库会进入 MOUNT 状态
-- 然后关闭并启动到备库模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
3.在备库执行 Switchover 切换
-- 在备库(当前是 READ ONLY WITH APPLY)执行
-- 先取消日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- 切换为新主库
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
-- 打开新主库
ALTER DATABASE OPEN;
4.验证新主库状态
-- 在新主库(原备库)上执行
SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;
DATABASE_ROLE OPEN_MODE
---------------- ------------
PRIMARY READ WRITE
5.在新备库(原主库)启动日志应用,如果这个新的备库准备废弃可以不做,直接关机
-- 在原主库(现在是新备库)上执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
6.验证ADG同步
-- 在新主库(原备库)上查询
SELECT THREAD#, SEQUENCE#, FIRST_TIME, LAST_TIME FROM V$ARCHIVED_LOG WHERE APPLIED='YES' ORDER BY SEQUENCE# DESC FETCH FIRST 3 ROWS ONLY;
-- 在新备库(原主库)上查询
SELECT PROCESS, STATUS, SEQUENCE# FROM V$MANAGED_STANDBY WHERE PROCESS='MRP0';
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)