大家好,CentOS 7系统上部署Oracle 11g(11.2.0)数据库教程相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于CentOS 7系统上部署Oracle 11g(11.2.0)数据库教程和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
第一步:检查当前服务器操作系统是64位还是32位(我的是centos7是64位)
[root@chances127 ~]# uname -a
Linux opportunity127 3.10.0-327.28.3.el7.x86_64 #1 SMP 8 月18 日星期四19:05:49 UTC 2016x86_64 x86_64 x86_64GNU/Linux
没有x86_64 x86_64 x86_64表示是32位操作系统
第2 步:检查内存
阐明:
内存大于1G(使用虚拟机安装时内存要稍大,否则安装检查无法通过)
检查内存大小#cat /proc/meminfo
交换分区是内存的1.5倍,可以根据实际情况进行调整。
检查交换分区大小#grep SwapTotal /proc/meminfo
硬盘空间必须满足所需软件的大小,要求/tmp分区不小于400M,安装目录大于4G:
检查磁盘空间使用情况#df h
检查目录空间大小#du -ch
操作:
#free-m
如果Swap小于1024,请增加内存。
1.1 增加内存
1)增加记忆力
#dd if=/dev/zero of=/tmpswap bs=1k count=2048000
2048000+0 条记录
2048000+0 条记录输出
复制了2097152000 字节(2.1 GB),169.875 秒,12.3 MB/s
2) 设置交换文件
# mkswap /tmpswap
设置交换空间版本1,大小=2097147 kB
3)立即启用交换分区文件
# 交换tmpswap
查看swap分区大小,发现增加了2G。
4) 开机时自动启用
#vi /etc/fstab
添加以下内容:
查看交换
# swapon-s
安装时我的内存满足要求,所以省略了上面的步骤(供参考)
第三步:软件检查并安装Oracle依赖的组件包:
1.binutils-2.17.50.0.6
2.compat-libstdc++-33-3.2.3
3.elfutils-libelf-0.125
4.elfutils-libelf-devel-0.125
5.elfutils-libelf-devel-static-0.125
6.gcc-4.1.2
7.gcc-c++-4.1.2
8.glibc-2.5-24
9.glibc-common-2.5
10.glibc-devel-2.5
11.glibc-headers-2.5
12.kernel-headers-2.6.18
13.pdksh-5.2.14
14.libaio-0.3.106
15.libaio-devel-0.3.106
16.libgcc-4.1.2
17.libgomp-4.1.2
18.libstdc++-4.1.2
19.libstdc++-开发-4.1.2
20.make-3.81
21.numactl-开发-0.9.8.i386
22.sysstat-7.0.2
23.unixODBC-2.2.11
24.unixODBC-devel-2.2.11
包检查命令:#rpm qa |grep 包名
软件包安装命令:#rpm ivh 软件包名称
或者
#yum安装包名称
第四步:关闭防火墙
注意:centos7默认使用的防火墙是firewall。虽然也安装了iptables,但是没有启用。
所以关闭防火墙的操作是:
systemctl stop firewalld.service #停止防火墙
systemctl禁用firewalld.service#禁用防火墙启动
参考文档:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html
第5步:关闭SELIINUX
#vi /etc/selinux/config 确保以下内容
SELINUX=禁用
第五步:配置系统环境
1.1 Linux内核参数设置
vi /etc/sysctl.conf ,在行尾添加以下内容
fs.文件最大值=6815744
fs.aio-max-nr=1048576
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
网络核心.wmem_max=1048576
内核.sem=250 32000 100 128
kernel.shmall=2097152(按照系统默认即可,不要修改)
kernel.shmmax=536870912(按照系统默认即可,不要修改)
#sysctl p 使内核参数生效
Linux下安装Oracle时对内核参数的要求:
kernel.shmall 是物理内存除以页面大小
kernel.shmmax 是物理内存的一半
fs.file-max是进程的512倍(比如128个进程,就是65536)
评论:
下图中的内核参数是我安装oracl时的参数设置:
部分解释:
以kernel.sem=250 32000 100 128为例:
250是参数semmsl的值,它表示一个信号量集中可以包含的最大信号量数量。
32000是参数semmns的值,表示系统允许的最大信号量数量。
100 是参数semopm 的值,它表示单个semopm() 调用可以对信号量集合执行的操作数。
128是参数semmni的值,代表系统信号量集的总数。
为什么需要设置参数:
其实oracle中有一个文件,cvu_prereq.xml文件。
该文件包含参数值和依赖包,Oracle安装时依赖这些包。它将在静默安装过程中受到监控。如果监控失败,则无法进行安装。
阐明:
我安装的时候,参数监控失败(其实安装前我已经设置过参数了,不知道为什么设置的参数值不见了,可能是因为:执行静默安装时检查了各种错误,一直重新执行,导致参数丢失,其他原因暂时未知,后来根据报错重新设置了参数值)
执行过程(当然,按照上面的步骤,这一步还不能进行,只是为了说明为什么需要安装参数设置和依赖包)
[oracle@chances127 数据库]$ ./runInstaller -silent -responseFile /opt/oracle_11g/database/response/db_install.rsp
启动Oracle 通用安装程序.
检查临时空间:必须大于120MB。实际已通过286724 MB
检查交换空间: 必须大于150 MB。实际已通过16383 MB
准备从/tmp/OraInstall2016-09-20_10-41-12AM 启动Oracle Universal Installer。请稍候.[oracle@chances127 数据库]$ [警告] [INS-32018] 所选的Oracle 主目录位于Oracle 基目录之外。
原因: 选定的Oracle 主目录位于Oracle 基本目录之外。
操作: Oracle 建议将Oracle 软件安装在Oracle 基本目录中。请相应地调整Oracle 主目录或Oracle 基目录。
[警告] [INS-32055] 主产品清单位于Oracle 基本目录中。
原因: 主产品库存位于Oracle 基本目录中。
操作: Oracle 建议将此主产品清单放置在Oracle 基本目录之外的位置。
[致命] [INS-13013] 目标环境不满足某些必需的要求。
原因: 未满足某些必需的先决条件。检查日志以获取详细信息。 /tmp/OraInstall2016-09-20_10-41-12AM/installActions2016-09-20_10-41-12AM.log
操作: 从日志/tmp/OraInstall2016-09-20_10-41-12AM/installActions2016-09-20_10-41-12AM.log 中标识失败的先决条件检查列表。然后,从日志文件或安装手册中找到满足这些先决条件的适当配置并手动修复。
注意:fatal表示安装失败,需要重新安装。
警告信息。你可以暂时不管它
部分日志信息:
错误消息:PRVF-7543 : 操作系统内核参数“wmem_max”在节点“chances127”上没有适当的值[expected=“1048576”;发现="262144"]
ErrorMessage:PRVF-7543: 操作系统内核参数“rmem_max”在节点“chances127”上没有适当的值[expected=“4194304”;发现="262144"]。
ErrorMessage:PRVF-7543: 操作系统内核参数"ip_local_port_range" 在节点"chances127" 上没有适当的值[expected=" Between900065500";发现="之间102465000"]。
ErrorMessage:PRVF-7543: 操作系统内核参数“file-max”在节点“chances127”上没有适当的值[expected=“6815744”;发现="6553600"]。
INFO:Cause: 内核参数值不满足要求。
:ErrorMessage:PRVF-7543: 操作系统内核参数“semmni”在节点“chances127”上没有适当的值[expected=“128”;发现="0"]。
INFO:Cause: 内核参数值不满足要求。
1.2 修改进程数和最大会话数
#vi /etc/security/limits.conf,在行尾添加以下内容
甲骨文软nproc 2047
Oracle 硬nproc 16384
oracle 软nofile 1024
oracle 硬文件65536
:
以我的为例:
1.3 关联设置
#vi /etc/pam.d/login 在行尾添加以下内容
需要会话pam_limits.so
如果操作系统是x64,那么
需要会话/lib64/security/pam_limits.so
以我的为例:
注意:当我安装它时,此配置是使用会话所需的pam_limits.so 配置的。这可能是安装失败的原因。由于是第一次安装,不知道是不是这个原因。
1.4 在/etc/profile中添加以下内容,红色的是实际的oracle用户(只需添加到行尾即可)
导出LIBXCB_ALLOW_SLOPPY_LOCK=true
如果[ $USER="oracle" ];然后
如果[ $SHELL="/bin/ksh" ];然后
ulimit -p 16384
ulimit -n 65536
别的
ulimit -u 16384 -n 65536
菲
掩码022
菲
取消设置我
root用户下使用命令source profile使环境变量生效。
#cd /等
#来源简介
以我的为例
阐明:
当时这个配置,我配置的是:
#vi /etc/配置文件
如果[ $USER="oracle" ];然后
如果[ $SHELL="/bin/ksh" ];然后
ulimit -p 16384
ulimit -n 65536
别的
ulimit -u 16384 -n 65536
菲
菲
导出LIBXCB_ALLOW_SLOPPY_LOCK=true 和未设置的i 丢失。当时安装并没有成功。我不知道这是不是原因之一。
1.5 修改/etc/redhat-release文件为系统支持的版本
红帽-4
以我的为例:
阐明:
其实我也不知道为什么要修改系统版本。我也安装失败。检查信息:
由于oracle10g发布时centos6/7还没有发布,所以oracle10g并没有确认对centos6/7的支持。需要修改该文件,让oracle10g支持centos6/7。
编辑/etc/redhat-release 文件
# vi /etc/redhat-release 修改内容Centos Linux release 7.1.1503 (Core) 为redhat 4
不过,我正在安装Oracle11g。我不确定是否需要修改版本号。不过为了防止安装失败,我还是修改了版本号。
第一次安装的时候,由于很多错误和原因,我一筹莫展,只能尝试当医生。
1.6 修改主机名
vi /etc/hosts 文件
127.0.0.1 本地主机本地主机.本地域本地主机4 本地主机4.本地域4
:1 本地主机本地主机.本地域本地主机6 本地主机6.本地域6
192.168.20.237 主机名
#hostname 主机名
以我的为例
上述准备工作完成后,开始安装过程:
第一步:创建oracle用户和用户组
#groupaddoinstall(创建oinstall组)
#groupadddba(创建dba 组)
#useradd -g oinstall -G dbaoracle(创建新用户oracle,将其主组设置为oinstall,辅助组设置为dba)
#id oracle(检查结果)
#passwd oracle(设置oracle用户密码)
第二步:创建oracle安装目录
#mkdir -p /opt/oracle_11g/product/110201/db_1
注:1.我是进行静默安装,报了如下错误(其实是一个警告,可以忽略)
准备从以下地址/opt/oracle_11g/u01/tmp/OraInstall2016-09-19_01-52-29PM 启动Oracle Universal Installer。请稍候.[oracle@chances127 数据库]$ [警告] [INS-32055] 主要产品清单位于Oracle 基本目录中。
原因: 主产品清单位于Oracle 基本目录中。
操作:Oracle 建议将此主产品清单放置在Oracle 基本目录以外的位置
2、根据警告信息:我删除了创建的product/110201/db_1,并在opt目录下创建了一个安装目录如:/opt/product/110201/db_1
特别要注意的是:最好不要一一创建安装目录,最好不要一一修改用户和用户组。
原因:第一:不仅麻烦,而且还容易出错。 oracle_11g目录及其所有子目录必须是oracle用户和oinstall组。
以我的为例:我在/opt/目录下重新创建了三个目录,product 110201 db_1。由于我是root用户操作的,所以当时并没有修改为oracle用户和oinstall组。结果:执行静默安装时,出现以下错误:
准备从/tmp/OraInstall2016-09-19_11-37-25AM 启动Oracle Universal Installer。请稍候. [oracle@chances127 数据库]$ [致命] [INS-32012] 无法创建目录。
原因: 未授予创建目录的正确权限,或者卷中没有剩余空间。
操作: 请检查您对所选目录的权限或选择其他目录。
此会话的日志当前保存为: /tmp/OraInstall2016-09-19_11-37-25AM/installActions2016-09-19_11-37-25AM.log。如果您想保留此日志,Oracle 建议将其从临时位置移动到更持久的位置
我一直以为/tmp没有足够的空间。 tmp是根目录下的目录,不是分区。我对Linux了解不多,就不详细说了。我指定了一个新目录。
# vim /home/oracle
#ll-a
# vim .bash_profile
添加以下变量:
导出TEMP=/opt/oracle_11g/u01/tmp
导出TMPDIR=/opt/oracle_11g/u01/tmp
u01和tmp是oracel_11g目录下新建的两个目录。
但是执行:/runInstaller -silent -responseFile 还是报错
准备从以下地址/opt/oracle_11g/u01/tmp/OraInstall2016-09-19_11-37-25AM 启动Oracle Universal Installer。请稍候.[oracle@chances127 数据库]$ [致命] [INS-32012] 无法创建目录。
原因: 未授予创建目录的正确权限,或者卷中没有剩余空间。
操作: 请检查您对所选目录的权限或选择其他目录。
此会话的日志当前保存为: /opt/oracle_11g/u01/tmp/OraInstall2016-09-19_11-37-25AM/installActions2016-09-19_11-37-25AM.log。如果您想保留此日志,Oracle 建议将其从临时位置移动到更持久的位置
检查opt/oracle_11g/u01/tmp。用户和用户组已设置为oraclehe oinstall。最后检查了目录/opt/product/110201/db_1:发现product 110201 db_1这三个目录下的用户和用户组都是root。最后执行:#chown oracle:oinstall 产品
# chown oracle:oinstall 110201
#chown oracle:oinstall db_1
发现问题:
一一设置比较麻烦,而且很容易漏设置,所以按照以下两个步骤即可完成:
#mkdir -p /opt/oracle_11g/product/110201/db_1
#chown -R oracle.oinstall /opt/oracle_11g/
特别声明:由于误导性的警告消息,我删除了该目录并将其移至基本目录之外以重新创建产品目录。结果新建的目录并没有修改用户和用户组,导致安装了Oracle。日志信息无法写入/tmp
执行成功后自动生成product/110201/db_1目录下的内容:/runInstaller
当我安装时创建目录结构时:
/opt/oracle_11g/(oraclea安装压缩包)
/opt/product/110201/db_1/(oracle安装路径)
第三步:更改oracle安装目录的用户和用户组
#chown -R oracle.oinstall /opt/oracle_11g/
第四步:授予安装目录权限
#chmod -R 755 /opt/oracle_11g/
步骤5:设置用户环境变量
#vi /home/oracle/.bash_profile
export ORACLE_BASE=/opt/oracle_11g//软件安装基目录
export ORACLE_SID=orcl //实例名
export ORACLE_HOME=$ORACLE_BASE/product/110201/db_1 //软件安装产品目录
导出路径=$PATH:$HOME/bin:$ORACLE_HOME/bin
#source /home/oracle/.bash_profile 配置生效
#env |more 检查配置的环境变量是否正确
ORACLE_BASE下有admin和product
ORACLE_HOME下有ORACLE命令、连接库、安装助手、监听器等。
这只是ORACLE自己的定义习惯。 ORACLE_HOME 比ORACLE_BASE 目录更深。也就是说:ORACLE_HOME=$ORACLE_BASE/product/version。
ORACLE_BASE是Oracle的根目录,ORACLE_HOME是Oracle产品的目录。
简单来说,如果安装了两个版本的Oracle,那么可以有一个ORACLE_BASE,但是有两个ORACLE_HOME。
全局数据库名用于区分分布式数据库不同机器上的实例; SID用于区分同一台机器上的不同实例。
即,一为外在区分;一是为了内部区别。
以我的为例:
注:以下是安装oracle10g时设置的内容。
#vi home/sc-oracle/.bash_profile 用oracle用户编辑,添加以下内容
# .bash_配置文件
# 获取别名和函数
如果[ -f ~/.bashrc ];然后。 /.bashrc
菲
# 用户特定的环境和启动程序
#对于sc-Oracle
导出ORACLE_BASE=/oracle;
导出ORACLE_HOME=/oracle/product/db_1;
导出ORACLE_SID=ORCL;
导出路径=$PATH:$HOME/bin:$ORACLE_HOME/bin;
导出LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/lib64/;
如果[ $USER="sc-oracle" ];然后
如果[ $SHELL="/bin/ksh" ];然后
ulimit -p 16384
ulimit -n 65536
别的
ulimit -u 163
84 -n 65536 fi fi #PATH=$PATH:$HOME/bin #export PATH 使环境变量生效 $ source .bash_profile 但是我安装时是用root用户添加的,且export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/lib64/;与我设置的export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib有点不一样,不知道有没有影响,但是我安装成功了 到此配置结束:下面正式开始oracle安装吧: 第一步:将oracle11g安装压缩包上传至/opt/oracle_11g/目录下 第二步:解压缩 #unzip linux_11gR2_database_1of2.zip #unzip linux_11gR2_database_2of2.zip 说明:上面两个压缩包要放在同一个目录下解压缩 如果有人尝试:将这两个压缩包放到不同目录下解压缩,解压后的文件都是database文件,有人如果疑问:在同一个目录下解压缩database不会被覆盖吗?其实则不然:这个两个压缩包解压出来是同一个文件,只是把一个大的文件分成了两个部分 第三步:编辑oracle数据库安装应答文件 1 在/opt/oracle_11g/database/response目录下有三个应答文件 2# vi db_install.rsp修改以下内容: 供参考: RESPONSEFILE_VERSION=2.2.1.0.0 UNIX_GROUP_NAME="oinstall" ORACLE_HOME_NAME="OraDb10g_home1" ORACLE_HOME="/oracle/product/db_1" SHOW_INSTALL_PROGRESS_PAGE= true SHOW_END_OF_INSTALL_MSGS= true COMPONENT_LANGUAGES={"zh_CN"} s_nameForDBAGrp= "dba" s_nameForOPERGrp="dba" INSTALL_TYPE="EE" n_configurationOption=3 RESTART_SYSTEM=false RESTART_REMOTE_SYSTEM=false 以我的为例: oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 ORACLE_HOSTNAME=chances127 UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/opt/oracle_11g/oraInventory SELECTED_LANGUAGES=en,zh_CN,zh_TW ORACLE_HOME=/opt/product/110201/db_1 ORACLE_BASE=/opt/oracle_11g oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=true oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oinstall oracle.install.db.CLUSTER_NODES= oracle.install.db.config.starterdb.characterSet=AL32UTF8 oracle.install.db.config.starterdb.memoryOption=true oracle.install.db.config.starterdb.memoryLimit=512 oracle.install.db.config.starterdb.installExampleSchemas=false oracle.install.db.config.starterdb.enableSecuritySettings=true oracle.install.db.config.starterdb.password.ALL=oracle oracle.install.db.config.starterdb.password.SYS= oracle.install.db.config.starterdb.password.SYSTEM= oracle.install.db.config.starterdb.password.SYSMAN= oracle.install.db.config.starterdb.password.DBSNMP= oracle.install.db.config.starterdb.control=DB_CONTROL oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false oracle.install.db.config.starterdb.dbcontrol.emailAddress= oracle.install.db.config.starterdb.dbcontrol.SMTPServer= oracle.install.db.config.starterdb.automatedBackup.enable=false oracle.install.db.config.starterdb.automatedBackup.osuid= oracle.install.db.config.starterdb.storageType= oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= oracle.install.db.config.asm.diskGroup= oracle.install.db.config.asm.ASMSNMPPassword= MYORACLESUPPORT_USERNAME= MYORACLESUPPORT_PASSWORD= SECURITY_UPDATES_VIA_MYORACLESUPPORT= PROXY_PORT= PROXY_PWD= 上面的参数不是都要修改的,按照我上面供参考的参数进行修改就ok了,其他参数没有的值的可以不用管 第四步:以上提到的所有操作都是在root用户下进行操作的: 下面开始要正式安装oracle了,所以先要切换至oracle用户: # su - oracle 进入到/opt/oracle_11g/database下执行静默安装: #cd /opt/oracle_11g/database 第一步:静默安装 # ./runInstaller -silent -responseFile /opt/oracle_11g/database/response/db_install.rsp 注意文件位置视自己刚刚修改的文件位置而定 这时如果报错类似这样的错: 解决办法:如果没有指定目录,则默认日志写入到/tmp下 第一,先检查/tmp所在分区空间大小是否大于60兆 第二:检查product/110201/db_1 目录用户和用户组是否是oracle和oinstall 第三:检查/tmp有无写入权限 上述的报错:我是重新指定oracle安装日志的写入目录,但是还是提示不能写入或空间不够,最后原因:是因为:我之前把product/110201/db_1删除,到基目录外重新创建此目录,没有修改此目录的用户和用户组,最后将此目录修改成oracle用户,变可解决此问题 不过,找到问题原因了,我就将指定的目录给注释掉了 再重新执行: # ./runInstaller -silent -responseFile /opt/oracle_11g/database/response/db_install.rsp 发现没有上述报错,但如果又出现其他报错如: 根据报错原因:到日志目录下,找到原因: 第一:内核参数监测不过 第二:依赖包没有装全 参数的问题: 其实内核参数我都是设置好了的,不知道为什么再次检查内核参数的时候,发现丢失了,之后又再重新设置了一遍 依赖包的问题: libstdc++-3.4.6 (i386) libgcc-3.4.6 (i386) libaio-devel-0.3.105 (i386) compat-libstdc++-33-3.2.3 (i386) glibc-2.3.4-2.41 (i686) unixODBC-devel-2.2.11 pdksh-5.2.14 发现少了上述的依赖包:而且这些依赖还是32位的,其实我的系统是64位的,oracle11g也是64位的,这些依赖包我也是都装了的,只是oracle11g不认 原来是因为:oracle11g安装,不仅要依赖64位的 还要依赖32位的,而centos使用yum安装这些依赖的包的时候,是不去区分你安装的是32位的还是64位的,centos是64位的,yum安装自然 默认装的是64位的,所以这是oracle自己的一个认证漏洞: 解决办法:CentOS 7系统上部署Oracle 11g(11.2.0)数据库教程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、CentOS 7系统上部署Oracle 11g(11.2.0)数据库教程的信息别忘了在本站进行查找哦。
【CentOS 7系统上部署Oracle 11g(11.2.0)数据库教程】相关文章:
用户评论
终于可以试一下自己搭建Oracle数据库了
有18位网友表示赞同!
CentOS系统还是比较常用的吧,稳定而且操作简单
有20位网友表示赞同!
听说Oracle 11g还是挺好用的,值得学习一下
有7位网友表示赞同!
准备学习安装Oracle数据库,这个教程看起来不错
有14位网友表示赞同!
想要自己搭建一个测试环境,刚好可以试试看
有5位网友表示赞同!
最近在看关于数据库的资料,正好碰到这个帖子
有14位网友表示赞同!
不知道安装步骤会不会太复杂,还是建议一步步来
有13位网友表示赞同!
Oracle 11g 的教程网上找不太到,感谢分享
有7位网友表示赞同!
对于初学者来说,这种详细的教程非常实用
有14位网友表示赞同!
之前用过Oracle数据库,现在想了解一下安装过程
有5位网友表示赞同!
学习新的技能总是很让人兴奋,期待成功
有6位网友表示赞同!
感觉这个版本应该比较经典了,值得探索一下
有17位网友表示赞同!
准备以后做数据分析的工作,希望学习到这方面的知识
有10位网友表示赞同!
感谢作者分享这个有用的教程,希望能顺利完成安装
有16位网友表示赞同!
最近在读Oracle数据库相关的书籍,这个内容刚好派上用场
有17位网友表示赞同!
希望这个教程能帮助我快速入门Oracle数据库
有10位网友表示赞同!
以前只用过一些简单的数据库,想尝试一下更强大的系统
有15位网友表示赞同!
对数据库的学习一直很有兴趣,希望能深入了解其中原理
有17位网友表示赞同!
想要自己搭建一个应用程序的数据库环境,正好可以用这个教程
有13位网友表示赞同!
学习新的技术永远不会嫌晚
有13位网友表示赞同!