阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下Oracle 12C 无图形界面静默安装

195次阅读
没有评论

共计 11277 个字符,预计需要花费 29 分钟才能阅读完成。

在有些情况,服务器是的操作系统是最小安装的,最小安装并不包括图形界面,网上很多 Oracle 的安装文章都是在有图形界面下完成的,本篇文章介绍如何在 CentOS 7 下无图形界面下安装 Oracle,再安装完毕后总结了日常的启动和关闭数据库的方式,同时也综合总结了 sqlplus 的一些可以改进的方法和 navicat 远程连接数据库的时候遇到的问题以及对应的解决方案,本文部分素材、方法步骤来源于网络,再结合本人实践而得出的结果。

文章目录

  • 一、安装环境
  • 二、安装包下载
  • 三、环境配置准备
  • 四、安装部署及配置
  • 五、数据库启动与关闭
  • 六、sqlplus 改进
  • 七、navicat 远程数据库遇到的问题及解决方案

一、安装环境

以下安装环境是在虚拟机测试环境,仅供参考
操作系统:CentOS 7
内存:2G
CPU:双核
硬盘:50G

二、安装包下载

1、百度“Oracle”,第一个结果进到官网

CentOS 7 下 Oracle 12C 无图形界面静默安装

2、依次点击菜单 -> 开发人员 -> 数据库

CentOS 7 下 Oracle 12C 无图形界面静默安装

3、在下载一栏选择 Oracle

CentOS 7 下 Oracle 12C 无图形界面静默安装

4、点击同意协议,然后找到对应的版本点击 file 1

CentOS 7 下 Oracle 12C 无图形界面静默安装

之后就会进入下载界面,如果提示需要注册的话那就注册一个账号就好了,注册是免费的

三、环境配置准备

在下载的同时可以在服务器上准备一下需要安装的环境

1、关闭防火墙
# systemctl stop firewalld.service -- 关闭防火墙

# systemctl disable firewalld.service -- 禁止防火墙开机启动
2、关闭 selinux
# setenforce 0
# vim /etc/selinux/config -- 编辑文件

文件中设置 SELINUX=disabled

修改 host 名称(其实可以省略)

# vim /etc/hosts

在文件末尾加上

192.168.15.206 oracleVM

CentOS 7 下 Oracle 12C 无图形界面静默安装

3、安装必要的依赖包

期间可能会出现错误的情况,执行多几次就好了

# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

安装完后检查是否安装成功,成功是 31 个包

# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

CentOS 7 下 Oracle 12C 无图形界面静默安装

4、创建用户和用户组

创建 oinstall 和 dba 组

# groupadd oinstall
# groupadd dba

创建 Oracle 用户

# useradd -g oinstall -G dba oracle

设置 Oracle 用户密码

# passwd oracle

查看创建结果

# id oracle

CentOS 7 下 Oracle 12C 无图形界面静默安装

5、修改内核参数(根据需要修改)

编辑打开配置文件

# vim /etc/sysctl.conf

在文件中加上:

fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=524288
kernel.shmmax=2147483647
kernel.sem=250 32000 100 128
kernel.shmmni=4096
kernel.panic_on_oops=1
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2
fs.aio-max-nr=1048576
net.ipv4.ip_local_port_range=9000 65500

CentOS 7 下 Oracle 12C 无图形界面静默安装

付上各个参数说明:
fs.aio-max-nr:
此参数限制并发未完成的请求,应该设置避免 I / O 子系统故障。
fs.file-max:
该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表 linux 系统中可以打开的文件的数量。
kernel.shmall:
该参数控制可以使用的共享内存的总页数。Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是 16GB/4KB=16777216KB /4KB=4194304(页),也就是 64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求.
kernel.shmmax:
是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 (在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
官方建议值:
32 位 linux 系统:可取最大值为 4GB(4294967296bytes)-1byte,即 4294967295。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295。
64 位 linux 系统:可取的最大值为物理内存值 -1byte,建议值为多于物理内存的一半,例如,如果为 12GB 物理内存,可取 1210241024*1024-1=12884901887。
kernel.shmmni:
该参数是共享内存段的最大数量。shmmni 缺省值 4096,一般肯定是够用了。
kernel.sem:
以 kernel.sem = 250 32000 100 128 为例:

  • 250 是参数 semmsl 的值,表示一个信号量集合中能够包含的信号量最大数目。

  • 32000 是参数 semmns 的值,表示系统内可允许的信号量最大数目。

  • 100 是参数 semopm 的值,表示单个 semopm()调用在一个信号量集合上可以执行的操作数量。

  • 128 是参数 semmni 的值,表示系统信号量集合总数。

net.ipv4.ip_local_port_range:
表示应用程序可使用的 IPv4 端口范围。
net.core.rmem_default:
表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:
表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:
表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:
表示套接字发送缓冲区大小的最大值。

使配置文件生效

# sysctl -p
6、修改配置
(1)打开并编辑文件 /etc/security/limits.conf
# vim /etc/security/limits.conf

在文件末尾加上:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240

第 1 行是设置进程数软限制;
第 2 行是设置进程数硬限制;
第 3 行是设置文件数软限制;
第 4 行是设置文件数硬限制

(2)打开并编辑文件 /etc/pam.d/login
# vim /etc/pam.d/login

添加以下内容

session required /lib64/security/pam_limits.so

session required pam_limits.so

(3)打开并编辑文件 /etc/profile
# vim /etc/profile

在文件末尾添加以下内容

if [$USER = "oracle" ]; then
    if [$SHELL = "/bin/ksh" ]; then
        ulimit -p 16384 ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi

使配置文件生效

# source /etc/profile
(4)创数据库目录
# mkdir -p /database/oracle  
# chown -R oracle:oinstall /database/oracle/  
# chmod -R 775 /database/oracle/
(5)配置 Oracle 用户

切换到 oracle 用户下

# su - oracle

打开并编辑环境变量文件,配置 oracle 用户环境变量

$ vim ~/.bash_profile

在末尾添加

export ORACLE_BASE=/database/oracle/oracle

export ORACLE_SID=orcl

使配置生效

$ source ~/.bash_profile

四、安装部署及配置

1、上传 Oracle 安装包

创建一个文件夹

# mkdir /home/oracle/oradb
2、安装解压工具

切换到 root 用户

# su - root

安装解压工具

# yum install -y unzip zip
3、解压文件

切换到 oracle 用户

# su - oracle 

解压文件

$ unzip xxx.zip
4、复制相应的模板

为了不影响原来的文件内容(后面文件脚本内容会作修改),将相应的模板复制一份,当然也可以省略这步

$ cd /home/oracle
$ mkdir etc 
$ cp  /home/oracle/oradb/database/response/* /home/oracle/etc/

切换到 root 用户

# su - root

设置权限

# chmod 700 /home/oracle/etc/*.rsp
5、编辑文件内容

切换到 oracle 用户

# su - oracle

打开编辑 db_install.rsp

$ vim /home/oracle/etc/db_install.rsp

找出以下项,并作修改(根据个人实际情况修改,比如我这边的 oracle 的目录是做过调整的)

oracle.install.option=INSTALL_DB_SWONLY // 安装类型  
UNIX_GROUP_NAME=oinstall // 安装组  
INVENTORY_LOCATION=/database/oracle/oraInventory //INVENTORY 目录(不填就是默认值)
ORACLE_HOME=/database/oracle/oracle/product/12/db_1  
ORACLE_BASE=/database/oracle/oracle  
oracle.install.db.InstallEdition=EE     // 企业版本  
oracle.install.db.OSDBA_GROUP=dba  
oracle.install.db.OSOPER_GROUP=oinstall  
oracle.install.db.OSBACKUPDBA_GROUP=oinstall  
oracle.install.db.OSDGDBA_GROUP=oinstall  
oracle.install.db.OSKMDBA_GROUP=oinstall  
oracle.install.db.OSRACDBA_GROUP=oinstall  
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE // 数据库类型  
oracle.install.db.config.starterdb.globalDBName=orcl  
oracle.install.db.config.starterdb.SID=orcl  
oracle.install.db.config.starterdb.memoryLimit=81920 // 自动管理内存的内存(M)  
oracle.install.db.config.starterdb.password.ALL=oracle// 设定所有数据库用户使用同一个密码  
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false  
DECLINE_SECURITY_UPDATES=true
6、开始安装

执行 db_install.rsp 文件

$ cd /home/oracle/oradb/database
$ ./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion \
-showProgress -silent -responseFile /home/oracle/database/response/db_install.rsp

在安装快完成的时候会提示要切换到 root 用户执行两个脚本,这步跟着照做就是

$ su - root 
# /database/oracle/oraInventory/orainstRoot.sh

# /database/oracle/oracle/product/12/db_1/root.sh

7、修改 oracle 用户环境变量

切换到 oracle 用户,打开并编辑用户编辑变量文件

# su - oracle
$ vim ~/.bash_profile

按需求将以下内容加上

export ORACLE_BASE=/database/oracle/oracle
export ORACLE_SID=orcl 
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/database/oracle/oracle/product/12/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

使配置生效

$ source ~/.bash_profile

配置监听

$ netca /silent /responsefile /home/oracle/etc/netca.rsp

CentOS 7 下 Oracle 12C 无图形界面静默安装

启动监听

$ lsnrctl start

修改静默建库文件

$ vim /home/oracle/etc/dbca.rsp

其中文件内容修改如下(根据实际情况修改)

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0  
gdbName=orcl  
sid=orcl  
databaseConfigType=SI  
createAsContainerDatabase=true  
numberOfPDBs=1  
pdbName=orclpdb  
templateName=/database/oracle/oracle/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc  
emExpressPort=5500  
omsPort=0  
characterSet=AL32UTF8  
listeners=LISTENER  
memoryPercentage=40  
automaticMemoryManagement=false  
totalMemory=0

执行静默建库

$ dbca -silent -createDatabase  -responseFile  /home/oracle/etc/dbca.rsp

CentOS 7 下 Oracle 12C 无图形界面静默安装

CentOS 7 下 Oracle 12C 无图形界面静默安装

此时数据库已安装成功

8、登进数据库开启实例
$ sqlplus / as sysdba
SQL>startup

五、数据库启动与关闭

概述:只有具备 sysdba 和 sysoper 系统特权的用户才能启动和关闭数据库。
在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库。
虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库。

1、启动

Oracle 数据库的完整启动过程包含以下 3 个步骤:
简单地说,就是:启动实例 –> 加载数据库 –> 打开数据库 .
具体说明:
1. 创建并启动与数据库对应的实例。
在启动实例时,将为实例创建一系列后台进程和服务进程,并且在内存中创建 SGA 区等内存结构。在实例启动的过程中只会使用到初始化参数文件,数据库是否存在对实例的启动没有影响。如果初化参数设置有误,实例将无法启动。
2. 为实例加载数据库。
加载数据库时实例将打开数据库的控制文件,从控制文件中获取数据库名称、数据文件的位置和名称等有关数据库物理结构的信息,为打开数据库做好准备。如果控制文件损坏,则实例将无法加载数据库。在加载数据库阶段,实例并不会打开数据库的物理文件 —- 数据文件和重做日志文件。
3. 将数据库设置为打开状态。
打开数据库时,实例将打开所有处于联机状态的数据文件和重做日志文件。控制文件中的任何一个数据文件或重做日志文件无法正常打开,数据库都将返回错误信息,这时需要进行数据库恢复。
只有将数据库设置为打开状态后,数据库才处于正常状态,这时普通用户才能够访问数据库。在很多情况下,启动数据库时并不是直接完成上述 3 个步骤,而是逐步完成的,然后执行必要的管理操作,最后才使数据库进入正常运行状态。所以,才有了各种不同的启动模式用于不同的数据库维护操作。
因为 Oracle 数据库启动过程中不同的阶段可以对数据库进行不同的维护操作,对应我们不同的需求,所以就需不同的模式启动数据库。

各种模式详解:
1.NoMount 模式 (启动实例不加载数据库)
命令 :startup nomount
讲解 :这种启动模式只会创建实例,并不加载数据库,Oracle 仅为实例创建各种内存结构和服务进程,不会打开任何数据文件。在 NoMount 模式下,只能访问那些与 SGA 区相关的数据字典视图,包括 V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION 等,这些视图中的信息都是从 SGA 区中获取的,与数据库无关。非安装启动,这种方式启动下可执行: 重建控制文件、重建数据库、读取 init.ora 文件,启动 instance,即启动 SGA 和后台进程,这种启动只需要 init.ora 文件。
模式用途
(1) 创建新数据库;
(2)重建控制文件。

2.Mount 模式 (加载数据库但不打开数据库)
命令 :startup mount
讲解 :这种启动模式将为实例加载数据库,但保持数据库为关闭状态。因为加载数据库时需要打开数据库控制文件,但数据文件和重做日志文件都都无法进行读写,所以用户还无法对数据库进行操作。在 Mount 模式下,只能访问那些与控制文件相关的数据字典视图,包括 V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE 等,这些视图都是从控制文件中获取的。
模式用途
(1) 重命名数据文件;
(2)添加、删除或重命名重做日志文件;
(3)执行数据库完全恢复操作;
(4)改变数据库的归档模式。

3.Open 模式 (正常打开数据库)
命令 :startup [open]
讲解 :正常按 3 个步骤启动数据库。
模式用途:平时不对数据库做什么维护,像只做应用开发,用这个模式就好了。

4. 强制启动模式
命令 :startup force
用途 & 讲解 :在某些情况下,使用前面的各种模式都无法成功启动数据库时,可以尝试强制启动模式。
使用 Alter Database 语句,还可以在各启动模式间切换。并且,还可以对数据库设置不同的状态用于不同的操作,如受 / 非受限抽状态、只读。

使用 Alter Database 语句,在各启动模式间切换。
(1)从 NoMount 模式切换到 Mount 模式 (没有从 mount 切换到 nomount 的):
命令:ALTER DATABASE MOUNT;
(2)当数据库状态为关闭时,切换到 Open 模式
命令:ALTER DATABASE OPEN;
(3)在 Open 模式下,还可以选择将数据库设置为非受限状态和受限状态。
命令:
在启动 Open 模式时,添加 restrict 关键字:startup restrict
设置或取消受限状态:alter system enable\disable restricted session;
讲解
非受限状态,就是我们平时应用程序开发用到的状态。
受限状态,当打开的数据库被设置为受限状态时,只有 Create Session 和 Restricted Session 系统权限 或者 具有 SYSDBA 和 SYSPORE 系统权限的用户才能连接到数据库。但进入受限状态后,系统中仍然可能会存在活动的普通用户会话。
受限状态用途:
(1)执行数据导入或导出操作;
(2)暂时拒绝普通用户访问数据库;
(3)进行数据库移植或升级操作。
(4) 只读状态
设置只读命令:alter database open read only;
取消只读命令:alter database open read write;
用途 & 讲解:当一个正常打开的数据库被设置为只读状态时,用户只能查询数据,但不能以任何方式对数据库对象进行修改。处于只读状态,可能保证数据文件和重做日志文件中的内容不被修改,但是并不限制那些不会写入数据文件与重做日志文件的操作。

2、关闭

与数据库启动一样,关闭数据库与实例也分为 3 步:关闭数据库 –> 实例卸载数据库 —> 终止实例
详细步骤为
(1) 关闭数据库,oracle 将重做日志高速缓存中的内容写入重做日志文件,并且将数据库高速缓存中被改动过的数据写入数据文件,然后再关闭所有的数据文件和重做日志文件,这时数据库的控制文件仍然处于打开状态,但是由于数据库处于关闭状态,所以用户无法访问数据库。
(2)卸载数据库,关闭数据库后,例程才能被卸载,控制文件再这个时候被关闭,但例程仍然存在。
(3)终止例程,进程终止,分配给例程的内存 sga 区被回收。

1.Nomal(正常关闭方式)
命令 :shutdown nomal
讲解 :正常方式关闭数据时,Oracle 执行如下操作:
(1) 阻止任何用户建立新的连接。
(2)等待当前所有正在连接的用户主动断开连接(此方式下 Oracle 不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)
(3)一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)
2.Immediate(立即关闭方式)
命令 :shutdown immediate
讲解
(1) 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
(2)Oracle 不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)
(3)直接关闭、卸载数据库,并终止实例。
3.Transactional(事务关闭方式)
命令 :shutdown transactional
讲解 :这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:
(1) 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
(2)等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。
(3)直接关闭、卸载数据库,并终止实例。
4.Abort(终止关闭方式)
命令 :shutdown abort
讲解 :这是比较粗暴的一种关闭方式,当前面 3 种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程 SMON 会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:
(1) 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
(2)立即终止当前正在执行的 SQL 语句。
(3)任何未提交的事务均不被退名。
(4)直接断开所有用户的连接,关闭、卸载数据库,并终止实例。

六、sqlplus 改进

概述:在默认的 sqlplus 的使用过程中发现是比较难用的,最好的例子就是不能用退格键以及掉出历史命令的上下键,这里介绍退格键的改进,至于掉出历史命令的上下键可参考文末的文章

切换至 oracle 用户

# su - oracle

打开并编辑用户环境变量配置文件

$ vim ~/.bash_profile

在文件末尾加上以下代码并保存退出

stty erase ^h

CentOS 7 下 Oracle 12C 无图形界面静默安装

使配置文件生效

$ source ~/.bash_profile

此时再进入 sqlplus 测试发现,退格键已经能用了

七、navicat 远程数据库遇到的问题及解决方案

一般数据库是安���在远程服务器上,然后用本机的管理软件去连接,此时需要配置一下
在 oracle 用户下,打开并编辑 listener.ora 文件(一般在安装目录下)

$ vim /database/oracle/oracle/product/12/db_1/network/admin/listener.ora

然后将其中的 HOST 改为服务器的 IP(这里为了保留之前的配置所以直接在文件后面复制了上面的配置然后作修改)

CentOS 7 下 Oracle 12C 无图形界面静默安装

保存退出
打开并编辑 tnsnames.ora 文件

$ vim /database/oracle/oracle/product/12/db_1/network/admin/tnsnames.ora

跟上面操作一样,将 HOST 改为服务器的 IP

CentOS 7 下 Oracle 12C 无图形界面静默安装

保存退出
然后重启数据库实例和数据库监听,此时可以用 navicat 来连接数据库了

可能会遇到的错误:
1、

ORA-12170:TNS:连接超时

检查步骤及解决方法:
(1)从本机 ping 服务器 IP 是否能 ping 通
(2)使用 tnsping 或者 telnet 测试端口是否通畅
(3)服务器防火墙是否已关闭
(4)服务器 selinux 是否已关闭
(5)数据库监听是否开启
(6)如果是用 PL/SQL 的话,tns 配置中,host 是否为服务器的 IP

2、

ORA-28040:No matching authentication protocol

错误原因是因为 navicat 的 oci.dll 版本不匹配,通常是因为版本过低,即低版本的 oci.dll 连接高版本的数据
根据下面步骤查看 oci.dll 的版本

CentOS 7 下 Oracle 12C 无图形界面静默安装

CentOS 7 下 Oracle 12C 无图形界面静默安装

CentOS 7 下 Oracle 12C 无图形界面静默安装

可看到这个版本是 10_2,需要上官网找到最新的版本(截至到本篇文章的日期,最新版本是 18_5)
地址:https://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index-4369172.html

CentOS 7 下 Oracle 12C 无图形界面静默安装

CentOS 7 下 Oracle 12C 无图形界面静默安装

CentOS 7 下 Oracle 12C 无图形界面静默安装

下载好后解压,并找到以下三个文件,然后替换掉原来版本的三个文件然后重启 navicat 即可(10_2 跟 18_5 的有两个文件文件名会有点不同)

CentOS 7 下 Oracle 12C 无图形界面静默安装

更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计11277字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中