前言

Oracle 一键安装脚本,演示 openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC 过程(全程无需人工干预)。

⭐️ 脚本下载地址:Shell脚本安装Oracle数据库

⭐️ 更多教程参考 Oracle 一键安装脚本实操合集,持续更新中!!!

安装准备

  • 1、系统组所有节点均安装好操作系统(支持最小化安装)
  • 2、网络组所有节点均配置好主机网络,至少需要一组公网 IP 地址和一组心跳 IP 地址
  • 3、存储组所有节点均配置并在主机层挂载好 ASM 磁盘,至少需要一组 OCR 和 DATA 磁盘组,虚拟化环境需要确保已开启磁盘的 UUID
  • 4、DBA 只需要在主节点创建软件目录:mkdir /soft
  • 5、DBA 只需要在主节点上传 Oracle 安装介质(基础包,补丁包)到 /soft 目录下,其他节点无需任何操作
  • 6、DBA 只需要在主节点上传 Oracle 一键安装脚本到 /soft 目录下,授予脚本执行权限:chmod +x OracleshellInstall
  • 7、DBA 所有节点均挂载主机 ISO 镜像,这里只需要 mount 上即可(这个很简单,不了解的可以百度下)
  • 8、根据脚本安装脚本以及实际情况,配置好脚本的安装参数,在主节点的 /soft 目录下执行一键安装即可。

环境信息

# 主机版本
## 节点一
[root@openeuler22-01 ~]# cat /etc/os-release 
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"

## 节点二
[root@openeuler22-02 ~]# cat /etc/os-release 
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"

# 网络信息
## 节点一
[root@openeuler22-01 ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:bc:93:6b brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.160/24 brd 192.168.6.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febc:936b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:bc:93:75 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.1/24 brd 1.1.1.255 scope global noprefixroute ens34
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febc:9375/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

## 节点二
[root@openeuler22-02 ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:42:ca:b7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.161/24 brd 192.168.6.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe42:cab7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:42:ca:c1 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.2/24 brd 1.1.1.255 scope global noprefixroute ens34
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe42:cac1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


# 挂载本地 ISO 镜像
## 节点一
[root@openeuler22-01 ~]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@openeuler22-01 ~]# mount | grep iso9660 | grep -v "/run/media"
/dev/sr0 on /mnt type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,iocharset=utf8)
[root@openeuler22-01 ~]# df -h|grep /mnt
/dev/sr0                     19G   19G     0  100% /mnt

## 节点二
[root@openeuler22-02 ~]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@openeuler22-02 ~]# mount | grep iso9660 | grep -v "/run/media"
/dev/sr0 on /mnt type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,iocharset=utf8)
[root@openeuler22-02 ~]# df -h|grep /mnt
/dev/sr0                     19G   19G     0  100% /mnt

# 两节点均需执行,配置本地软件源(为了安装 iscsi,不需要使用 starwind 挂载共享存储可以不配置)
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
cat <<-EOF > /etc/yum.repos.d/local.repo
[openEuler]
name=openeuler
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-openEuler
EOF

# 两节点均需执行,Starwind 共享磁盘挂载(有存储就不需要使用 starwind,直接存储上划盘挂载就可)
yum install -y iscsi-initiator-utils*
systemctl start iscsid.service
systemctl enable iscsid.service
iscsiadm -m discovery -t st -p 192.168.6.188
## 挂载 ASM 磁盘
iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:192.168.6.188-lucifer -p 192.168.6.188 -l
## 配置开机自动挂载
iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:192.168.6.188-lucifer -p 192.168.6.188 --op update -n node.startup -v automatic

## 节点一
[root@openeuler22-01 ~]# lsblk 
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  100G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   99G  0 part 
  ├─openeuler-root 253:0    0   91G  0 lvm  /
  └─openeuler-swap 253:1    0    8G  0 lvm  [SWAP]
sdb                  8:16   0   50G  0 disk 
sdc                  8:32   0   20G  0 disk 
sr0                 11:0    1 18.4G  0 rom  /mnt
## 节点二
[root@openeuler22-02 ~]# lsblk 
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  100G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   99G  0 part 
  ├─openeuler-root 253:0    0   91G  0 lvm  /
  └─openeuler-swap 253:1    0    8G  0 lvm  [SWAP]
sdb                  8:16   0   50G  0 disk 
sdc                  8:32   0   20G  0 disk 
sr0                 11:0    1 18.4G  0 rom  /mnt

# 安装包存放在 /soft 目录下
[root@openeuler22-01 soft]# ll
-rwx------. 1 root root 3059705302  7月 15 17:07 LINUX.X64_193000_db_home.zip
-rwx------. 1 root root 2889184573  7月 15 17:07 LINUX.X64_193000_grid_home.zip
-rwxr-xr-x. 1 root root     233993  7月 15 17:10 OracleShellInstall
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.

确保安装环境准备完成后,即可执行一键安装。

安装命令

使用标准生产环境安装参数(安装过程若失败,脚本支持重复执行安装):

# 根据脚本 README 或者 -h 命令提示,编辑好一键安装命令,进入 /soft 目录执行安装:
[root@openeuler22-01 ~]# cd /soft/
[root@openeuler22-01 soft]# chmod +x OracleShellInstall 

./OracleShellInstall -n openeuler22 `# RAC 主机名前缀`\
-hn openeuler22-01,openeuler22-02 `# RAC 主机名`\
-cn openeuler22-cls `# RAC 集群名称`\
-sn openeuler22-scan `# RAC SCAN 名称`\
-rp 'P@ssw0rdPST' `# 主机 root 用户密码`\
-lf ens33 `# 主机网卡名称`\
-pf ens34 `# 主机心跳网卡名称`\
-ri 192.168.6.160,192.168.6.161 `# RAC 公网 IP`\
-vi 192.168.6.162,192.168.6.163 `# RAC 虚拟 IP`\
-si 192.168.6.165 `# RAC SCAN IP`\
-od /dev/sdb `# OCR 磁盘盘符名称`\
-dd /dev/sdc `# DATA 磁盘盘符名称`\
-o lucifer `# 数据库名称`\
-dp 'Passw0rd#PST' `# sys/system 用户密码`\
-ds AL32UTF8 `# 数据库字符集`\
-ns AL16UTF16 `# 国家字符集`\
-redo 100 `# 在线重做日志大小(M)`\
-opd Y `# 是否优化数据库`
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

安装过程

███████                             ██          ████████ ██               ██  ██ ██                    ██              ██  ██
  ██░░░░░██                           ░██         ██░░░░░░ ░██              ░██ ░██░██                   ░██             ░██ ░██
 ██     ░░██ ██████  ██████    █████  ░██  █████ ░██       ░██       █████  ░██ ░██░██ ███████   ██████ ██████  ██████   ░██ ░██
░██      ░██░░██░░█ ░░░░░░██  ██░░░██ ░██ ██░░░██░█████████░██████  ██░░░██ ░██ ░██░██░░██░░░██ ██░░░░ ░░░██░  ░░░░░░██  ░██ ░██
░██      ░██ ░██ ░   ███████ ░██  ░░  ░██░███████░░░░░░░░██░██░░░██░███████ ░██ ░██░██ ░██  ░██░░█████   ░██    ███████  ░██ ░██
░░██     ██  ░██    ██░░░░██ ░██   ██ ░██░██░░░░        ░██░██  ░██░██░░░░  ░██ ░██░██ ░██  ░██ ░░░░░██  ░██   ██░░░░██  ░██ ░██
 ░░███████  ░███   ░░████████░░█████  ███░░██████ ████████ ░██  ░██░░██████ ███ ███░██ ███  ░██ ██████   ░░██ ░░████████ ███ ███
  ░░░░░░░   ░░░     ░░░░░░░░  ░░░░░  ░░░  ░░░░░░ ░░░░░░░░  ░░   ░░  ░░░░░░ ░░░ ░░░ ░░ ░░░   ░░ ░░░░░░     ░░   ░░░░░░░░ ░░░ ░░░


注意:本脚本仅用于新服务器上实施部署数据库使用,严禁在已运行数据库的主机上执行,以免发生数据丢失或者损坏,造成不可挽回的损失!!!

请选择安装模式 [单机(si)/单机ASM(sa)/集群(rac)] : rac

数据库安装模式: rac

请选择数据库版本 [11/12/19/21] : 19

数据库版本:     19

!!! 免责声明:当前操作系统版本是 [ openEuler 22.03 (LTS-SP4) ] 不在 Oracle 官方支持列表,本脚本只负责安装,请确认是否继续安装 (Y/N): [Y]

OracleShellInstall 开始安装,详细安装过程可查看日志: tail -2000f /soft/print_shell_install_20240715171604.log

正在进行安装前检查,请稍等......

正在检测安装包 /soft/LINUX.X64_193000_grid_home.zip 的 MD5 值是否正确,请稍等......
正在检测安装包 /soft/LINUX.X64_193000_db_home.zip 的 MD5 值是否正确,请稍等......

正在配置本地软件源......已完成 (耗时: 0 秒)
配置 root 用户互信......已完成 (耗时: 4 秒)
正在检查并更新 RAC 主机时间......已完成 (耗时: 2 秒)
正在获取操作系统信息......已完成 (耗时: 1 秒)
正在安装依赖包......已完成 (耗时: 63 秒)
正在禁用防火墙......已完成 (耗时: 1 秒)
正在禁用 selinux......已完成 (耗时: 1 秒)
正在配置 nsyctl......已完成 (耗时: 0 秒)
正在配置主机名和 /etc/hosts......已完成 (耗时: 0 秒)
正在创建用户和组......已完成 (耗时: 2 秒)
正在创建安装目录......已完成 (耗时: 1 秒)
正在配置透明大页 && NUMA && 磁盘 IO 调度器......已完成 (耗时: 1 秒)
正在配置操作系统参数 sysctl......已完成 (耗时: 1 秒)
正在配置 RemoveIPC......已完成 (耗时: 1 秒)
正在配置用户限制 limit......已完成 (耗时: 1 秒)
正在配置 shm 目录......已完成 (耗时: 0 秒)
正在配置用户环境变量......已完成 (耗时: 1 秒)
正在配置 RAC 其他节点信息......已完成 (耗时: 84 秒)
正在配置 RAC 所有节点互信......已完成 (耗时: 13 秒)
正在解压 Grid 安装包以及补丁......已完成 (耗时: 74 秒)
正在解压 Oracle 软件以及补丁......已完成 (耗时: 95 秒)
正在安装 Grid 软件以及补丁......已完成 (耗时: 1220 秒)
正在创建 ASM 磁盘组......已完成 (耗时: 27 秒)
正在安装 Oracle 软件以及补丁......已完成 (耗时: 502 秒)
正在创建数据库......已完成 (耗时: 1140 秒)
正在优化数据库......已完成 (耗时: 88 秒)

恭喜!Oracle 一键安装执行完成 (耗时: 3379 秒),现在是否重启主机:[Y/N] Y

正在重启节点 192.168.6.161 主机......

正在重启当前节点主机......
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

连接测试

查看系统版本:

[root@openeuler22-01:/root]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

查看 Grid 版本以及补丁:

[grid@openeuler22-01:/home/grid]$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

[grid@openeuler22-01:/home/grid]$ opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)

OPatch succeeded.
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

查看集群:

[grid@openeuler22-01:/home/grid]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       openeuler22-01           STABLE
               ONLINE  ONLINE       openeuler22-02           STABLE
ora.chad
               ONLINE  ONLINE       openeuler22-01           STABLE
               ONLINE  ONLINE       openeuler22-02           STABLE
ora.net1.network
               ONLINE  ONLINE       openeuler22-01           STABLE
               ONLINE  ONLINE       openeuler22-02           STABLE
ora.ons
               ONLINE  ONLINE       openeuler22-01           STABLE
               ONLINE  ONLINE       openeuler22-02           STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       openeuler22-01           STABLE
      2        ONLINE  ONLINE       openeuler22-02           STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       openeuler22-01           STABLE
      2        ONLINE  ONLINE       openeuler22-02           STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       openeuler22-02           STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       openeuler22-01           STABLE
      2        ONLINE  ONLINE       openeuler22-02           STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       openeuler22-01           Started,STABLE
      2        ONLINE  ONLINE       openeuler22-02           Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       openeuler22-01           STABLE
      2        ONLINE  ONLINE       openeuler22-02           STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       openeuler22-02           STABLE
ora.lucifer.db
      1        ONLINE  ONLINE       openeuler22-01           Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
      2        ONLINE  ONLINE       openeuler22-02           Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /db,STABLE
ora.openeuler22-01.vip
      1        ONLINE  ONLINE       openeuler22-01           STABLE
ora.openeuler22-02.vip
      1        ONLINE  ONLINE       openeuler22-02           STABLE
ora.qosmserver
      1        ONLINE  ONLINE       openeuler22-02           STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       openeuler22-02           STABLE
--------------------------------------------------------------------------------
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

查看 ASM 磁盘组:

[grid@openeuler22-01:/home/grid]$ asmcmd lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304     20480    14512                0           14512              0             N  DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304     51200    50840                0           50840              0             Y  OCR/
  • 1.
  • 2.
  • 3.
  • 4.

查看 Oracle 版本以及补丁:

[oracle@openeuler22-01:/home/oracle]$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

[oracle@openeuler22-01:/home/oracle]$ opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

OPatch succeeded.
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

连接数据库:

[oracle@openeuler22-01:/home/oracle]$ sas

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jul 17 09:20:59 2024
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

sys@LUCIFER 2024-07-17 09:20:59> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name                     string
cell_offloadgroup_name               string
db_file_name_convert                 string
db_name                              string      lucifer
db_unique_name                       string      lucifer
global_names                         boolean     FALSE
instance_name                        string      lucifer1
lock_name_space                      string
log_file_name_convert                string
pdb_file_name_convert                string
processor_group_name                 string
service_names                        string      lucifer
sys@LUCIFER 2024-07-17 09:21:04> select instance_name,status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
lucifer1         OPEN
lucifer2         OPEN
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.

数据库连接正常。