资讯动态

RedHat 6.8安装Oracle 12c完整实战:从环境配置到建库全记录

发布时间:2026/9/15 16:26:21 来源:尧图企业网站定制
干了这么多年Linux运维和Oracle DBA的活儿最怕听到的一句话就是“帮我在服务器上装套Oracle”。Oracle安装本身并不难难的是安装前那些绕不开的系统配置还有各种依赖、权限、内核参数的坑。尤其是RedHat 6.8这种老系统配Oracle 12c简直是经典组合——系统老但稳定数据库版本也成熟企业里存量相当大。我这次就把整个安装过程完整记录下来从环境准备、依赖包安装、内核参数调优、用户创建到Oracle软件安装、监听配置、建库全部走一遍。这篇文章不挑机器RedHat 6.x、CentOS 6.x理论上都适用只要你跟着步骤做好系统侧的准备Oracle安装基本就是一路Next的事。适合刚接触Oracle的运维新手也适合需要快速搭一套测试环境的老手直接抄作业。1. 环境准备装Oracle前先搞清楚这些硬指标1.1 系统版本与Oracle版本的匹配关系很多人上来就急着拷安装包、跑安装程序结果卡在OUIOracle Universal Installer的预检查阶段报一堆“操作系统版本不受支持”或者依赖缺失的错误。先说结论Oracle 12c Release 112.1.0.2在RedHat 6.8上跑是完全没问题的官方认证列表里也明确支持RHEL 6.x系列。我这次用的环境是RedHat 6.8内核版本2.6.32-642.el6.x86_64Oracle版本是12.1.0.2.0 for Linux x86-64。这个组合在实际生产环境里非常多尤其是金融、制造、政企这些偏保守的行业。如果你手里是CentOS 6.8或者6.9同样适用这篇文章的步骤因为CentOS和RHEL的包管理方式、内核参数配置路径完全一致。有一点需要注意Oracle 12c在安装时会自动检测操作系统发行版如果它识别到的系统不在支持列表里会给出一个警告而非错误可以忽略继续。但如果在预检查阶段报了“Package缺失”那一类就必须认真处理否则就算强行装完后面起库也容易出各种灵异问题。1.2 硬件配置评估内存、磁盘、SWAP怎么定安装Oracle之前先对自己手里的服务器资源做一个体检这一步能省掉后面很多莫名其妙的报错。内存方面Oracle官方给12c的最低要求是1GB物理内存但那是理论值实际跑起来你会发现1GB连OUI图形界面都跑得费劲。我的经验是测试环境至少2GB生产环境建议8GB起步。内存直接决定了内核参数kernel.shmmax和kernel.shmall怎么设置后面我会详细说。SWAP空间的推荐规则是物理内存1GB~2GBSWAP设为物理内存的1.5倍物理内存2GB~16GBSWAP设为与物理内存相等物理内存超过16GBSWAP设为16GB即可磁盘空间方面Oracle 12c企业版完整安装大概需要6GB左右但加上数据库文件、归档日志、安装过程中的临时文件建议预留至少20GB。特别要注意/tmp目录Oracle安装程序会在/tmp下创建大量临时文件如果/tmp空间不足会在解压安装包或运行root脚本时报“无法写入临时文件”的错。如果发现/tmp不够大可以通过export TMP/bigdir这种方式把它指到别的分区。另外64位系统和32位系统的区别也要提前确认。Oracle 12c在x86-64平台上的安装包是2个zip文件linuxx64_12201_database.zip分卷解压后是一个database目录大小在3GB左右。如果你的服务器是32位系统那得单独下载32位的安装包本文所有步骤基于64位系统。2. 安装前的系统配置磨刀不误砍柴工2.1 配置本地Yum源与安装依赖包RedHat 6.8的系统盘自带了绝大多数Oracle依赖的rpm包最省事的做法是把系统ISO挂载成本地yum源然后直接用yum安装依赖。这里分享一个我常用的配置方法避免你在内网环境里下载依赖包下载到怀疑人生。# 挂载系统ISO到/mnt mount -o loop /dev/cdrom /mnt # 创建repo文件 cat /etc/yum.repos.d/local.repo EOF [local] namelocal repository baseurlfile:///mnt/Packages enabled1 gpgcheck0 EOF # 清理缓存并检查可用包 yum clean all yum repolist如果服务器没有光驱和ISO文件也可以从网易镜像、阿里镜像下载rpm包手动安装但我强烈不推荐这种方式依赖关系会把你折腾疯。还是本地yum源最省心。依赖包是Oracle安装前最容易踩坑的地方。Oracle 12c在RedHat 6.x上需要的依赖包列表可以在安装介质里的database/stage/cvu/cv/rpm/cvuqdisk-1.0.10-1.rpm附近找到但OUI预检查时会更精确地告诉你缺什么。根据我的实操经验核心依赖包括binutilscompat-libcap1compat-libstdc-33gcc、gcc-cglibc、glibc-develkshlibaio、libaio-devellibgcc、libstdc、libstdc-devellibXext、libXtst、libX11、libXau、libXimake、sysstatunixODBC、unixODBC-devel其中需要特别注意有些包是32位和64位都要装的比如glibc.i686、libgcc.i686、libstdc.i686这些如果只装64位版本OUI预检查还是会报缺失。yum install -y binutils compat-libcap1 compat-libstdc-33 \ gcc gcc-c glibc glibc-devel glibc.i686 glibc-devel.i686 \ ksh libaio libaio-devel libaio.i686 libaio-devel.i686 \ libgcc libgcc.i686 libstdc libstdc.i686 \ libstdc-devel libstdc-devel.i686 \ libXext libXtst libX11 libXau libXi \ make sysstat unixODBC unixODBC-devel这里有一个小坑要提醒你RedHat 6.8自带的包版本可能和Oracle 12c要求的不完全一致比如compat-libstdc-33这个包有可能在Packages目录下的名称是compat-libstdc-33-3.2.3-69.el6.x86_64.rpmyum安装时一般能自动处理好但如果yum提示找不到包可以去ISO的Packages目录里挨个找找到后用rpm -ivh手动装。2.2 内核参数调整与资源限制设置Linux内核参数直接决定了Oracle数据库能使用多少共享内存、能打开多少文件、能建立多少信号量。这一节我给的参数都是从实际项目中验证过的你直接照抄就行。编辑/etc/sysctl.conf加入以下内容# Oracle 12c required kernel parameters fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 536870912 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 vm.dirty_ratio 15 vm.dirty_background_ratio 3然后执行sysctl -p让配置立即生效。这几个参数里最常用也最容易被忽略的是kernel.shmmax和kernel.shmall。shmmax表示单个共享内存段的最大大小官方要求不小于物理内存的一半我给的536870912是512MB的值如果你的机器内存大于1GB建议根据实际情况调整计算公式是内存字节数/2比如8GB内存可以设置为42949672964GB。shmall是共享内存页总数一般公式是物理内存字节数/page_size在x86-64 Linux上页大小通常是4096字节所以8GB内存的话shmall可以设成20971522GB×1024×1024/4096。kernel.sem那四个数字分别代表信号量数组最大值、系统内最大信号量数、每个信号量组的信号量数、系统内最大信号量组数直接用官方推荐值250 32000 100 128就没问题。接下来编辑/etc/security/limits.conf给oracle用户设置资源限制oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768注意nproc是进程数限制nofile是文件句柄数限制stack是栈大小限制。很多人在这一步会漏掉stack设置导致后续安装时报“Insufficient stack size”之类的问题。还有一个容易被忽略的是/etc/pam.d/login文件。如果系统里开了pam_limits模块需要在login文件里确认有这一行session required pam_limits.soRedHat 6.8默认是有的但有些精简过的系统可能被阉割了如果没有就手动加上。2.3 创建用户、组与目录结构Oracle不允许用root用户直接安装数据库软件所以需要创建专用的操作系统用户和组。官方推荐的用户组规划是oinstall组Oracle软件所有者基组通常作为主组dba组具备数据库管理员权限的组通常作为附加组groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle这里解释一下为什么要把dba作为附加组而不是主组。oinstall是安装软件时使用的INVENTORY目录/u01/app/oraInventory的所有者组而dba组用于管理数据库实例。如果以后要加其他运维人员只需要把他加进dba组就有管理权限了而不用动软件安装目录的归属。接下来创建Oracle的安装目录并赋予正确的属主权限mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1 mkdir -p /u01/app/oradata chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app关于目录规划我多说一句。ORACLE_BASE我习惯放在/u01/app/oracleORACLE_HOME放在/u01/app/oracle/product/12.1.0/dbhome_1数据目录用独立的/u01/app/oradata单独规划。如果有条件建议把数据目录放到独立的磁盘分区或存储上避免日志和数据争抢IO。2.4 配置oracle用户环境变量用oracle用户登录后编辑~/.bash_profile把下面这些内容加进去export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/12.1.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export TMP/tmp export TMPDIR/tmpORACLE_SID是数据库实例名你可以按自己需求改成其他名字比如test、prod都行但要注意一个实例名只能有一个数据库。NLS_LANG建议设置为AMERICAN_AMERICA.AL32UTF8避免数据库字符集和客户端不一致导致中文乱码。如果你要装中文字符集可以设置成SIMPLIFIED CHINESE_CHINA.AL32UTF8但我个人建议都用UTF8兼容性更好。设置好后执行source ~/.bash_profile使变量生效用echo $ORACLE_HOME确认一下路径没问题。3. Oracle 12c安装过程实录从解压到建库全套3.1 解压安装介质与安装前检查把Oracle 12c的安装包上传到服务器后先做一件事——校验文件完整性。Oracle官方的安装包都是zip格式分卷压缩的如果上传过程中文件损坏解压时会直接报错或者中途失败。校验MD5最稳妥但如果你懒得算MD5至少也得确保两个zip文件大小完全一致。# 切换目录并解压 cd /u01/software unzip linuxx64_12201_database.zip # 如果是两个分卷 unzip linuxx64_12201_database.zip unzip linuxx64_12201_database_2of2.zip解压完成后会生成一个database目录里面主要包含runInstaller、response目录、stage目录等。确认一下runInstaller有执行权限ls -l database/runInstaller然后在root用户下执行Oracle自带的环境检查脚本这一步可以提前暴露很多问题cd /u01/software/database ./runInstaller -executeSysPrereqs -responseFile /u01/software/database/response/db_install.rsp这个命令会静默执行安装前的系统预检查并输出一份检查结果。如果输出中有某个package is missing之类的报错就回到刚才yum安装那一步把缺的包补上。如果你准备用图形界面安装还需要确保X Window环境可用或者你通过VNC、Xmanager这类工具连到了服务器的图形界面。关于远程图形安装的坑我在后面常见问题里会专门讲。3.2 runInstaller安装Oracle数据库软件详解这是整个安装过程的核心环节。我以图形化安装为例因为对新手来说图形界面最直观出错概率也最低。静默安装的方案在下一节单独讲。以oracle用户身份在图形环境下执行cd /u01/software/database ./runInstaller启动后进入OUI界面关键步骤我来逐项解读配置安全更新Configure Security Updates这个页面直接取消勾选“I wish to receive security updates via My Oracle Support”这是Oracle强推的订阅通知本地安装完全不需要。安装选项Installation Option选择“Install database software only”。如果你选“Create and configure a database”OUI会连建库一起做完但那样出错了不好排查而且建库的灵活性比较差。我习惯先单独装软件再用DBCA建库两步分开做问题定位清楚很多。数据库安装类型Database Installation Type选“Single instance database installation”。RAC集群安装需要Grid Infrastructure不是本文讨论范围。语言选择Database Languages默认English就行如果业务需要中文把Simplified Chinese也勾上。这里补充一点这个语言选项影响的是客户端工具的语言显示不影响数据库实际存储的字符集。企业版还是标准版Database Edition按你的License选。企业版功能全但如果你只是测试标准版也够用。两者安装时间差别不大。安装位置Installation Location这里会自动读取oracle用户环境变量里的ORACLE_BASE和ORACLE_HOME。正常情况下OUI会自动识别如果显示的路径不对手动改成Oracle Base: /u01/app/oracleSoftware Location: /u01/app/oracle/product/12.1.0/dbhome_1操作系统组Operating System GroupsOracle Inventory Directory: /u01/app/oraInventory所属组选oinstallOS DBA Group: 选择dbaOS Operator Group: 选择dba这些组就是我们之前在系统里创建好的OUI会自动列出可选项确认无误就下一步。前置检查Prerequisite Checks这是所有新手最紧张的一步。OUI会自动检测内核参数、依赖包、内存、磁盘空间等。如果出现警告先看是“Warning”还是“Error”。Warning一般可以强制继续比如系统版本识别偏差这类Error必须解决比如缺少某个rpm包。检查完成后点击“Install”开始正式安装这一步大概需要15~20分钟。安装过程中会有一个进度条以及一个提示你“以root身份执行orainstRoot.sh脚本”的窗口。这时候别急着点OK先把root脚本执行完# 切换到root用户执行两个脚本 /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/12.1.0/dbhome_1/root.shorainstRoot.sh主要是在Inventory目录里写入权限配置root.sh会创建/etc/oratab文件并为bin目录下的某些可执行文件设置root权限。执行root.sh的时候它会问你本地bin目录路径直接回车默认值就行。脚本执行完回到OUI窗口点OK安装就完成了。3.3 静默安装方案没有图形环境怎么装很多时候服务器是放在机房里没有显示器或者远程图形工具没开通这时候就用静默安装。静默安装的核心是response file也就是把安装界面里的所有选项预先填写到配置文件里。Oracle安装介质自带了一个模板响应文件位于database/response/db_install.rsp。我们需要改几个关键参数cd /u01/software/database/response cp db_install.rsp db_install_my.rsp vi db_install_my.rsp需要修改的参数是oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPdba oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba oracle.install.db.CLUSTER_NODES oracle.install.db.config.starterdb.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl注意其中SECURITY_UPDATES_VIA_MYUORACLESUPPORT和DECLINE_SECURITY_UPDATES这两项如果不想收邮件必须设置DECLINE_SECURITY_UPDATEStrue否则安装会卡在检查更新这一环。修改完成后以oracle用户执行./runInstaller -silent -responseFile /u01/software/database/response/db_install_my.rsp控制台会弹出日志输出安装完成后同样需要以root身份执行orainstRoot.sh和root.sh。静默安装有一点要注意它不是完全不交互在root脚本执行那一步仍然需要你手动干预。除非你写一个expect脚本去自动执行root脚本否则整个安装过程不算100%无人值守。3.4 配置监听器与创建数据库软件装好之后接下来要做两件事配置监听器listener和创建数据库。配置监听器用Oracle自带的netca工具图形和静默两种方式我都用过推荐静默方式一个命令搞定# 以oracle用户执行 netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp如果不想编辑response文件也可以直接交互式运行netca在图形界面里一路默认配置。监听器默认端口是1521监听服务名是LISTENER。配置完成后用lsnrctl status查看监听状态如果看到“The command completed successfully”说明监听起来了。用DBCA创建数据库DBCA是Oracle的建库工具同样支持图形和静默两种方式。图形方式dbca在DBCA界面中选择“Create a database”数据库模板选“General Purpose or Transaction Processing”全局数据库名和SID都填orcl跟你环境变量里设置的保持一致。内存大小建议按物理内存的40%~60%来分比如8GB内存给SGAPGA合计4GB左右。这里特别讲一下12c的多租户架构。DBCA建库时会有一步询问“Create As Container Database”这是12c的新特性允许数据库作为容器数据库CDB里面可以包含多个可插拔数据库PDB。如果你只是简单用用建议直接勾选“Create as Container Database”并创建一个PDB这样既能跟上12c的新特性也不影响日常使用。如果后续要兼容老的11g操作习惯可以不勾选保持非容器数据库模式。静默方式建库可以写一个简单的响应文件dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl \ -sysPassword Oracle123 -systemPassword Oracle123 \ -emConfiguration NONE \ -memoryPercentage 40 \ -storageType FS \ -datafileDestination /u01/app/oradata \ -characterSet AL32UTF8 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName orclpdb执行后大概需要10~20分钟视磁盘IO而定。期间如果看到日志停在某一处很久别着急建库过程本来就有几个阶段。建库完成后用sqlplus / as sysdba验证一下能否正常登录sqlplus / as sysdba SQL select status from v$instance;如果输出OPEN说明数据库已经正常运行了。4. 常见问题与排查技巧实录这一节我把自己这些年装Oracle 12c踩过的坑和解决办法整理成速查表遇到问题直接对号入座。4.1 依赖包检测失败最让人抓狂的一类问题现象OUI预检查时弹出“Package: libstdc-devel-4.4.7-3.el6.x86_64 is missing”之类的Error。明明yum shows已经装了为什么还报缺少原因OUI要求的是精确版本号或者最低版本号你装的版本可能比它要求的低或者架构对不上。还有一种可能是系统里装了多个版本OUI检测到了旧版本。解决办法先确认系统里实际的包版本rpm -q libstdc-devel libaio-devel glibc-devel如果版本偏低用yum update更新到和ISO内一致或者从ISO Packages目录找到新版本手动装。如果版本够了还报错可能是OUI的bug可以尝试在预检查页面点“Ignore All”强行继续。我在RedHat 6.8上遇到过unixODBC版本比要求低的情况检查后确认不影响实际使用直接忽略并通过了。4.2 图形界面启动失败DISPLAY变量问题现象执行./runInstaller报“Cannot find a valid Java Runtime”或者“DISPLAY not set”。原因runInstaller是基于Java的图形程序需要X Window环境。你如果是在SSH终端里执行必须设置DISPLAY变量并确保本地有X Server。解决办法三种思路。一是用VNC远程桌面先启动VNC服务端vncserver :1 export DISPLAY:1二是用X11转发通过SSH的-X参数登录ssh -X oracle服务器IP三是Windows下用Xmanager、MobaXterm这类工具它们自带X Server连上后runInstaller图形界面会直接弹到你本机。4.3 内存或内核参数检查不通过现象预检查提示“kernel.shmmax is too small”或者“Insufficient memory”。解决办法shmmax的问题直接用sysctl -w临时修改或持久化到/etc/sysctl.conf。内存不足的提示先free -m确认实际内存如果内存确实少建议加内存或者缩小Oracle的SGA配置。有些时候是DBCA的memoryPercentage配得太大导致虚拟内存检查不通过可以调小比例后重试。请注意修改内核参数后需要重新登录oracle用户才能生效因为ulimit这些限制是在登录时读取的。很多人在limits.conf里加了配置但没重新登录就运行runInstaller结果还是报资源限制错误白折腾半天。4.4 安装过程中出现oraInst.loc无法读写现象安装进行到某个阶段报“OUI-10054: You do not have sufficient permission to write to the inventory directory”。原因oracle用户对/u01/app/oraInventory目录没有写权限或者Inventory目录的属主不对。解决办法检查一下Inventory目录的属主和权限ls -ld /u01/app/oraInventory正常情况下属主应该是oracle:oinstall。如果不对用root改chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventory4.5 oracle用户无法使用lsnrctl和sqlplus命令现象软件装完之后oracle用户执行lsnrctl报“command not found”。解决办法这是环境变量没配好确认.bash_profile里的PATH是否包含$ORACLE_HOME/bin并且已经source过。还有一个容易犯的错是用root用户切换到oracle用户时用了su -如果oracle用户的家目录下环境变量文件有问题切换进来一样是空环境。建议用su - oracle完整加载环境并先执行echo $ORACLE_HOME验证。4.6 常见问题速查表现象可能原因解决办法预检查报Package缺失依赖包没装全或版本不符yum安装缺失包必要时用rpm手动装精确版本runInstaller没有图形界面DISPLAY未设置配置VNC或X11转发shmmax/shmmni检查失败内核参数设置不对修改/etc/sysctl.conf并sysctl -p/tmp空间不足安装包解压占用过多临时空间清理/tmp或export TMP指向其他分区执行root.sh报权限错误脚本运行时当前用户不是root用root执行orainstRoot.sh和root.shdbca建库卡住不动内存分配过小或IO太慢增大SWAP降低memoryPercentage等待观察日志sqlplus登录报ORA-12541监听器未启动lsnrctl start启动监听sqlplus登录报ORA-01034数据库实例没有启动startup启动数据库实例4.7 安装完成后必做的几件事装好Oracle不代表万事大吉有几个配置建议你在正式使用前做完。一是把数据库设为开机自启动。编辑/etc/oratab文件把最后一行的N改成Yorcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y然后在/etc/rc.local里加入监听和数据库启动命令su - oracle -c /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start su - oracle -c /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart二是打开数据库的归档模式。生产环境非常重要不然数据文件损坏时想恢复都难sqlplus / as sysdba SQL shutdown immediate; SQL startup mount; SQL alter database archivelog; SQL alter database open;三是设置好数据库密码策略。测试环境经常用Oracle123这种弱密码生产环境千万别这么干至少给SYS和SYSTEM设置12位以上的强密码并定期更换。5. 卸载与重装万一装坏了怎么办Oracle装失败、想重装的情况太常见了这里把卸载的步骤一并写出来方便你清理干净重新来。先停止所有Oracle相关进程# 以oracle用户执行 lsnrctl stop sqlplus / as sysdba SQL shutdown immediate; SQL exit再用root身份删除配置文件和目录rm -rf /u01/app/oracle rm -rf /u01/app/oraInventory rm -rf /u01/app/oradata rm -f /etc/oratab rm -f /etc/oraInst.loc清理用户和环境变量可选如果不再用oracle用户userdel -r oracle groupdel dba groupdel oinstall清理内核参数把你在/etc/sysctl.conf里加的Oracle相关行删掉然后重启服务器让系统环境彻底干净。重装的时候严格按本文第2、3节的步骤走一遍就行。我个人在实操中的体会是Oracle安装失败90%的原因出在“系统准备不充分”而不是Oracle软件本身。只要你把依赖包、内核参数、用户目录、环境变量这四件事做扎实安装流程基本是畅通无阻的。如果中途真的遇到没见过的问题一定先去看日志常见的有/u01/app/oraInventory/logs/installActions*.log和$ORACLE_HOME/cfgtoollogs/dbca下的日志很多报错在日志里会有详细描述比网上搜答案高效得多。最后再分享一个小技巧整个安装过程建议用script命令录屏把操作过程完整记录下来script /tmp/oracle_install.log装完之后翻一翻这个日志能帮你复盘整个过程中的每一步尤其是那些当时没在意、后来出问题才想起来的环境变更。这个方法我在帮客户做数据库上线审计时经常用关键时刻能救人一命。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价