Oracle dgbroker常规命令管理简介

Oracle dgbroker常规命令管理简介

在前面的文章中已经部署好了Oracle 19c ADG环境,并配置了db broker管理。

在这里简单介绍下dg broker的基本管理和使用。

1、登录db broker

复制代码
[oracle@mgrser1 admin]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Nov 4 02:56:28 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys@woo_dgmgrl
Password:
Connected to "woo"
Connected as SYSDBA.
DGMGRL> 

2、查看主备数据库信息

复制代码
DGMGRL> show configuration;

Configuration - woo_broker_cfg

  Protection Mode: MaxPerformance
  Members:
  woo    - Primary database
    woostd - Physical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 7 seconds ago)

DGMGRL> 

DGMGRL> show database woo;

Database - woo

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    woo

Database Status:
SUCCESS

DGMGRL> 
DGMGRL> show database woostd;

Database - woostd

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          0 seconds (computed 1 second ago)
  Average Apply Rate: 24.00 KByte/s
  Real Time Query:    ON
  Instance(s):
    woo

Database Status:
SUCCESS

DGMGRL> 

3、查看ADG同步延迟

复制代码
DGMGRL> 
DGMGRL> show database woostd;

Database - woostd

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          0 seconds (computed 1 second ago)  <<<<
  Average Apply Rate: 24.00 KByte/s
  Real Time Query:    ON
  Instance(s):
    woo

Database Status:
SUCCESS  <<<

4、查看详细信息包括日志文件

复制代码
DGMGRL> show database verbose woo;

Database - woo

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    woo

  Properties:
    DGConnectIdentifier             = 'woo_dgmgrl'
    ObserverConnectIdentifier       = ''
    FastStartFailoverTarget         = ''
    PreferredObserverHosts          = ''
    LogShipping                     = 'ON'
    RedoRoutes                      = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = ''
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '0'
    LogArchiveMinSucceedDest        = '0'
    DataGuardSyncLatency            = '0'
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = ''
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    ArchiveLocation                 = ''
    AlternateLocation               = ''
    StandbyArchiveLocation          = ''
    StandbyAlternateLocation        = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    LogXptStatus                    = '(monitor)'
    SendQEntries                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'mgrser1'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.104)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=woo_DGMGRL)(INSTANCE_NAME=woo)(SERVER=DEDICATED)))'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'

  Log file locations:
    Alert log               : /oradb/oracle/diag/rdbms/woo/woo/trace/alert_woo.log
    Data Guard Broker log   : /oradb/oracle/diag/rdbms/woo/woo/trace/drcwoo.log

Database Status:
SUCCESS

DGMGRL> 



DGMGRL> show database verbose woostd;

Database - woostd

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          0 seconds (computed 1 second ago)
  Average Apply Rate: 21.00 KByte/s
  Active Apply Rate:  0 Byte/s
  Maximum Apply Rate: 0 Byte/s
  Real Time Query:    ON
  Instance(s):
    woo

  Properties:
    DGConnectIdentifier             = 'woostd_dgmgrl'
    ObserverConnectIdentifier       = ''
    FastStartFailoverTarget         = ''
    PreferredObserverHosts          = ''
    LogShipping                     = 'ON'
    RedoRoutes                      = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = ''
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '0'
    LogArchiveMinSucceedDest        = '0'
    DataGuardSyncLatency            = '0'
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = ''
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    ArchiveLocation                 = ''
    AlternateLocation               = ''
    StandbyArchiveLocation          = ''
    StandbyAlternateLocation        = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    LogXptStatus                    = '(monitor)'
    SendQEntries                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'mgrser2'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.105)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=WOOSTD_DGMGRL)(INSTANCE_NAME=woo)(SERVER=DEDICATED)))'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'

  Log file locations:
    Alert log               : /oradb/oracle/diag/rdbms/woostd/woo/trace/alert_woo.log
    Data Guard Broker log   : /oradb/oracle/diag/rdbms/woostd/woo/trace/drcwoo.log

Database Status:
SUCCESS

DGMGRL> 

5、使用DG Broker管理日志传输

关闭到备库的日志传输

复制代码
DGMGRL> edit database 'woo' set state='TRANSPORT-OFF';
Succeeded.
DGMGRL> show database woo;

Database - woo

  Role:               PRIMARY
  Intended State:     TRANSPORT-OFF   <<<<<<
  Instance(s):
    woo

Database Status:
SUCCESS

DGMGRL> 

查看主库的LNS进程

复制代码
SQL> select process,status,thread#,sequence# from v$managed_standby where process like 'LNS%';

PROCESS   STATUS          THREAD#  SEQUENCE#
--------- ------------ ---------- ----------
LNS       WRITING               1         34

SQL> --再次查看   
SQL> /

PROCESS   STATUS          THREAD#  SEQUENCE#
--------- ------------ ---------- ----------
LNS       WRITING               1         34

SQL> /

PROCESS   STATUS          THREAD#  SEQUENCE#
--------- ------------ ---------- ----------
LNS       WRITING               1         34

SQL> alter system switch logfile;

System altered.

SQL> select process,status,thread#,sequence# from v$managed_standby where process like 'LNS%';

no rows selected

SQL> 

查看主库上的log_archive_dest_state_n参数

复制代码
SQL> show parameter log_archive_dest_state_2

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      RESET  <<<<<<<<<<<<
log_archive_dest_state_20            string      enable
log_archive_dest_state_21            string      enable
log_archive_dest_state_22            string      enable
log_archive_dest_state_23            string      enable
log_archive_dest_state_24            string      enable
log_archive_dest_state_25            string      enable
log_archive_dest_state_26            string      enable
log_archive_dest_state_27            string      enable
log_archive_dest_state_28            string      enable
log_archive_dest_state_29            string      enable
SQL> 

查看备库日志状态正等待35号

复制代码
SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CONNECTED             0
DGRD      ALLOCATED             0
DGRD      ALLOCATED             0
ARCH      CONNECTED             0
ARCH      CLOSING              33
ARCH      CLOSING              34
RFS       IDLE                  0
MRP0      WAIT_FOR_LOG         35

8 rows selected.

回复到备库的日志同步

复制代码
DGMGRL> 
DGMGRL> edit database 'woo' set state='TRANSPORT-ON';
Succeeded.
DGMGRL> show database woo;

Database - woo

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    woo

Database Status:
SUCCESS

DGMGRL> 

SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CONNECTED             0
DGRD      ALLOCATED             0
DGRD      ALLOCATED             0
ARCH      CLOSING              35
ARCH      CLOSING              33
ARCH      CLOSING              34
RFS       IDLE                 36
RFS       IDLE                  0
RFS       IDLE                  0
MRP0      APPLYING_LOG         36  <<<<< c重新开始应用日志了

10 rows selected.

SQL> 

--主库LNS进程也恢复了
SQL> select process,status,thread#,sequence# from v$managed_standby where process like 'LNS%';

PROCESS   STATUS          THREAD#  SEQUENCE#
--------- ------------ ---------- ----------
LNS       WRITING               1         36

SQL> 
SQL> show parameter log_archive_dest_state_2

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      ENABLE <<<<<<
log_archive_dest_state_20            string      enable
log_archive_dest_state_21            string      enable
log_archive_dest_state_22            string      enable
log_archive_dest_state_23            string      enable
log_archive_dest_state_24            string      enable
log_archive_dest_state_25            string      enable
log_archive_dest_state_26            string      enable
log_archive_dest_state_27            string      enable
log_archive_dest_state_28            string      enable
log_archive_dest_state_29            string      enable
SQL> 
SQL> 

DG Broker控制redo传输是通过修改主库的log_archive_dest_state_n参数来实现的。

关闭到指定备库的redo传输

将备库的LogShipping属性设置为OFF来暂停对该备库的日志传输:

复制代码
show database woostd logshipping;

edit database 'woostd' set property LogShipping='OFF';

edit database 'woostd' set property LogShipping='ON';

6、物理备库和逻辑备库之间的转换

使用DG Broker管理备库

通过DG Broker可以方便地将备库在只读的物理备库模式和可读写的快照备库模式之间转换。在快照备库模式下对备库的写操作是暂时性的,当备库切回物理备库模式时,这些写操作会全部回滚。物理备库转换为快照备库的前提是备库开启了快速闪回区(Fast Recovery Area)。

复制代码
DGMGRL> CONVERT DATABASE 'woostd' TO SNAPSHOT STANDBY;
Converting database "woostd" to a Snapshot Standby database, please wait...
Database "woostd" converted successfully
DGMGRL> 

SQL> set line 200
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
------------------------------ -------------------- ---------------- --------------------
WOOSTD                         READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED

SQL> 
SQL> 
SQL> 
SQL> --check again
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;
select db_unique_name,open_mode,database_role,switchover_status from v$database
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 1635
Session ID: 1 Serial number: 27414


SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@mgrser2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 4 03:21:07 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE
------------------------------ -------------------- ----------------
SWITCHOVER_STATUS
--------------------
WOOSTD                         READ WRITE           SNAPSHOT STANDBY
NOT ALLOWED


SQL> set line 200
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
------------------------------ -------------------- ---------------- --------------------
WOOSTD                         READ WRITE           SNAPSHOT STANDBY NOT ALLOWED

SQL> 
SQL> 

SQL> set line 200
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
------------------------------ -------------------- ---------------- --------------------
WOOSTD                         READ WRITE           SNAPSHOT STANDBY NOT ALLOWED

SQL> 
SQL>  create table elden_npc(npc_id number(6), name varchar2(30), career varchar2(20));

Table created.  <<<<< 备库可读写

SQL> drop table elden_npc purge;

Table dropped.

SQL> create table dgmgrtab(did number(6), name varchar2(30), career varchar2(20));

Table created.

SQL> 
SQL> insert into dgmgrtab values (1, 'dgmgr', 'abc');

1 row created.

SQL> 
SQL> commit;

Commit complete.

转换备库为只读物理备库

尝试切换快照备库为物理备库:

复制代码
DGMGRL> show database woostd;

Database - woostd

  Role:               SNAPSHOT STANDBY
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          5 minutes 30 seconds (computed 1 second ago)  <<<< 在操作过程中主库的数据并未同步到备库
  Instance(s):
    woo

Database Status:
SUCCESS

DGMGRL> CONVERT DATABASE 'woostd' TO PHYSICAL STANDBY;     <<<<< 重新切换到物理备库
Converting database "woostd" to a Physical Standby database, please wait...
Operation requires shut down of instance "woo" on database "woostd"
Shutting down instance "woo"...
Connected to "WOOSTD"
Database closed.
Database dismounted.
ORACLE instance shut down.
Operation requires start up of instance "woo" on database "woostd"
Starting instance "woo"...
Connected to an idle instance.
ORACLE instance started.
Connected to "WOOSTD"
Database mounted.
Connected to "WOOSTD"
Continuing to convert database "woostd" ...
Database "woostd" converted successfully
DGMGRL> 


SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;
select db_unique_name,open_mode,database_role,switchover_status from v$database
*   <<<<<<<<<< 重新切换物理备库后要重新登录一次数据库
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 3963
Session ID: 63 Serial number: 55232


SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@mgrser2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 4 03:26:35 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE
------------------------------ -------------------- ----------------
SWITCHOVER_STATUS
--------------------
WOOSTD                         READ ONLY WITH APPLY PHYSICAL STANDBY
NOT ALLOWED


SQL> set line 200
SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;

DB_UNIQUE_NAME                 OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
------------------------------ -------------------- ---------------- --------------------
WOOSTD                         READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED

SQL> select * from dgmgrtab;   <<<<<<< 可以看到,快照备库期间写入的数据已经回滚了。
select * from dgmgrtab
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> 
SQL> 
SQL> 

7、使用DG Broker进行主备切换

检查是否可以进行切换:

复制代码
DGMGRL> validate database woostd;

  Database Role:     Physical standby database
  Primary Database:  woo

  Ready for Switchover:  Yes
  Ready for Failover:    Yes (Primary Running)

  Flashback Database Status:
    woo   :  Off
    woostd:  Off

  Managed by Clusterware:
    woo   :  NO             
    woostd:  NO             
    Validating static connect identifier for the primary database woo...
    The static connect identifier allows for a connection to database "woo".

DGMGRL> validate database woo;

  Database Role:    Primary database

  Ready for Switchover:  Yes  <<<<<<<<<<<

  Flashback Database Status:
    woo:  Off

  Managed by Clusterware:
    woo:  NO             
    Validating static connect identifier for the primary database woo...
    The static connect identifier allows for a connection to database "woo".

DGMGRL> 

切换前查看主备角色

复制代码
--主库
SQL> col host_name for a30
SQL> select a.host_name,b.database_role from v$instance a,v$database b;

HOST_NAME                      DATABASE_ROLE
------------------------------ ----------------
mgrser1                        PRIMARY


--备库
SQL> col host_name for a30
SQL> select a.host_name,b.database_role from v$instance a,v$database b;

HOST_NAME                      DATABASE_ROLE
------------------------------ ----------------
mgrser2                        PHYSICAL STANDBY

开始切换

switchover to woostd(计划需要成为主库角色的唯一名);

复制代码
DGMGRL> switchover to woostd;
Performing switchover NOW, please wait...
Operation requires a connection to database "woostd"
Connecting ...
Connected to "WOOSTD"
Connected as SYSDBA.
New primary database "woostd" is opening...
Operation requires start up of instance "woo" on database "woo"
Starting instance "woo"...
Connected to an idle instance.
ORACLE instance started.
Connected to "woo"
Database mounted.
Database opened.
Connected to "woo"
Switchover succeeded, new primary is "woostd"
DGMGRL> 
DGMGRL> 
DGMGRL> 

再次查询主备库状态

复制代码
--原主库角色
SQL> --check again
SQL> 
SQL> select a.host_name,b.database_role from v$instance a,v$database b;
select a.host_name,b.database_role from v$instance a,v$database b
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 3476
Session ID: 103 Serial number: 16969


SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@mgrser1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 4 03:38:24 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select a.host_name,b.database_role from v$instance a,v$database b;

HOST_NAME
----------------------------------------------------------------
DATABASE_ROLE
----------------
mgrser1
PHYSICAL STANDBY


SQL> 


--原备库角色
SQL> select a.host_name,b.database_role from v$instance a,v$database b;
select a.host_name,b.database_role from v$instance a,v$database b
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 4379
Session ID: 67 Serial number: 27229


SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@mgrser2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 4 03:38:35 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select a.host_name,b.database_role from v$instance a,v$database b;

HOST_NAME
----------------------------------------------------------------
DATABASE_ROLE
----------------
mgrser2
PRIMARY


DGMGRL> show configuration;

Configuration - woo_broker_cfg

  Protection Mode: MaxPerformance
  Members:
  woostd - Primary database   <<<<<  角色已经调换
    woo    - Physical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 60 seconds ago)

DGMGRL> 

回切正常

复制代码
DGMGRL> 
DGMGRL> switchover to woo;
Performing switchover NOW, please wait...
Operation requires a connection to database "woo"
Connecting ...
Connected to "woo"
Connected as SYSDBA.
New primary database "woo" is opening...
Operation requires start up of instance "woo" on database "woostd"
Starting instance "woo"...
Connected to an idle instance.
ORACLE instance started.
Connected to "WOOSTD"
Database mounted.
Database opened.
Connected to "WOOSTD"
Switchover succeeded, new primary is "woo"
DGMGRL> 
DGMGRL> 
DGMGRL>  show configuration;

Configuration - woo_broker_cfg

  Protection Mode: MaxPerformance
  Members:
  woo    - Primary database
    woostd - Physical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 62 seconds ago)

DGMGRL> 
相关推荐
海边夕阳20062 小时前
PostgreSQL性能调优:解决表膨胀、索引碎片和无效索引问题
数据库·经验分享·postgresql·性能优化
一 乐3 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
m0_748248023 小时前
Redis的数据淘汰策略解读
数据库·redis·缓存
哥哥还在IT中3 小时前
让数据库更智能-大模型如何优化我们的SQL查询
数据库·sql
计算机小手3 小时前
探索 Maxwell:高效捕获 MySQL 数据变更的轻量级中间件
数据库·经验分享·mysql·开源软件
IvorySQL3 小时前
使用 PostgreSQL 时间点恢复(Point-In-Time Recovery)的多种数据恢复技术
数据库·postgresql
腾讯云云开发4 小时前
小程序数据库权限管理,一看就会!——CloudBase新手指南
前端·数据库·微信小程序
王道长服务器 | 亚马逊云4 小时前
帝国CMS + AWS:老牌内容系统的新生之路
服务器·网络·数据库·云计算·aws
李慕婉学姐5 小时前
Springboot的民宿管理系统的设计与实现29rhm9uh(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端