新闻详情

新闻详情

首页 / 资讯中心 / 详情

AIX上Oracle 11gR2 RAC静默安装实战与避坑指南

发布时间:2026/9/26 1:38:58来源:尧图网络
AIX上Oracle 11gR2 RAC静默安装实战与避坑指南
1. 为什么要在 AIX 上做静默安装这件事在 AIX 小型机上部署 Oracle 11gR2 RAC很多人第一反应是开图形界面跑 OUI。但真正在生产环境干过几轮的人都知道图形化安装有几个绕不开的麻烦一是 AIX 的 X11 转发经常因为字符集、DISPLAY 变量、xauth 权限问题卡住尤其是跳板机层层嵌套的时候二是生产机房通常不允许你随便装 VNC 或者开图形端口三是图形安装每一步都要人盯着点节点多了容易点错而且没法版本化管理。静默安装的核心价值就在这儿——把整个安装过程变成一套可复现、可审计、可脚本化的流程response file 往版本库里一放下次扩容或者重建节点直接改几个参数就能跑。这篇内容面向的是已经在 AIX 上摸过 Oracle 单机、现在要上 RAC 的 DBA或者需要把安装流程标准化的运维同学。我会把 11gR2 RAC 在 AIX 上的静默安装拆成几个关键环节前置环境准备、Grid Infrastructure 静默安装、数据库软件静默安装、建库与验证以及那些文档里不会写但实际会卡你半天的坑。关键词 AIX、静默安装、11gR2、RAC 会贯穿全文但重点不是概念而是每一步为什么这么做、参数怎么算、出问题怎么查。先说一个反直觉的结论静默安装的难点从来不在 response file 本身而在 response file 之外的东西——内核参数、用户 ulimit、共享存储权限、SSH 互信、OCR 磁盘的 PVID 状态。这些前置条件只要有一个不对静默安装会在某个阶段直接报错退出而且日志藏得很深。所以下面我会把大量篇幅放在前置准备和排错上而不是简单贴一个 response file 模板。2. AIX 侧的前置环境到底要准备到什么程度2.1 操作系统版本与补丁基线11gR2 RAC 对 AIX 的版本是有硬性要求的。官方认证的基线是 AIX 6.1 TL06 及以上或者 AIX 7.1 TL00 及以上。我实际踩过的坑是AIX 7.1 早期 TL 版本在跑 root.sh 的时候会出现 OCR 写入超时后来打了 TL 补丁才稳定。所以我的建议是不管装哪个版本先把oslevel -s的输出确认清楚然后对照 Oracle 的认证矩阵核对。oslevel -s # 输出示例7100-04-02-1614如果 TL 和 SP 都比较老优先打补丁再装。补丁这一步在 AIX 上不像 Linux 那么随意需要installp或者smitty操作而且部分补丁需要重启。生产环境里我一般会要求系统组把补丁基线统一到认证列表里的某个稳定版本避免每个节点补丁不一致导致集群行为异常。另外要确认bos.adt、bos.perf这些文件集是否齐全Grid Infrastructure 的 rootpre.sh 会检查一部分依赖。缺文件集的话rootpre.sh 会直接报错而且报错信息不一定直白。2.2 内核参数与 ulimit 的调整逻辑AIX 和 Linux 最大的区别在于AIX 的内核参数不是改/etc/sysctl.conf而是用vmo、no、ioo、schedo这些命令而且分临时生效和永久生效-p持久化到 ODM。11gR2 RAC 对几个关键参数有明确要求我列一个实际会检查的对照表参数类别命令建议值说明内存vmo -p -o maxperm%20防止文件缓存挤占 SGA内存vmo -p -o maxclient%20同上内存vmo -p -o minperm%3配合 maxperm 使用网络no -p -o sb_max1048576大包传输需要网络no -p -o tcp_sendspace65536节点间心跳网络no -p -o tcp_recvspace65536节点间心跳网络no -p -o rfc13231启用窗口缩放异步IOioo -p -o aio_maxreqs65536ASM 需要异步IOioo -p -o aio_server_inactivity300避免 AIO server 提前退出这些值不是拍脑袋来的。比如maxperm%设成 20是因为 AIX 默认会把大量内存用于文件缓存而 Oracle 的 SGA 是shm段如果文件缓存不限制SGA 可能被换出或者分配失败。aio_maxreqs设大是因为 ASM 在高并发下会发起大量异步 IO 请求默认值不够会导致 IO 排队。ulimit 这块Oracle 用户需要设置ulimit -n 65536 # 文件描述符 ulimit -u 16384 # 进程数 ulimit -f unlimited # 文件大小 ulimit -d unlimited # 数据段 ulimit -s 65536 # 栈大小 ulimit -m unlimited # 内存这些要写进/etc/security/limits针对 oracle 和 grid 用户分别配置。注意 AIX 的 limits 文件格式和 Linux 不一样是default:和root:分段的改错了会导致用户登录失败。2.3 用户、组与目录规划RAC 环境需要两个用户grid和oracle。组的话我习惯这样规划oinstall主组两个用户都加asmadminASM 管理grid 用户加asmdbaASM 数据库访问grid 和 oracle 都加asmoperASM 操作grid 用户加dba数据库管理oracle 用户加目录规划上Grid Infrastructure 的 ORACLE_HOME 和数据库的 ORACLE_HOME 必须分开而且不能嵌套。我一般用# Grid /u01/app/11.2.0/grid # Database /u01/app/oracle/product/11.2.0/dbhome_1 # 库存目录 /u01/app/oraInventory这里有个细节oraInventory的属主必须是 grid 用户组是 oinstall权限 775。如果这个目录权限不对静默安装会在最后阶段报INS-32025之类的错误而且日志里不一定直接指向权限问题。2.4 SSH 互信静默安装的隐形门槛RAC 节点之间需要 SSH 互信而且要求双向、免密。很多人用ssh-keygen加ssh-copy-id就完事了但在 AIX 上ssh-copy-id不一定有需要手动追加公钥到authorized_keys。更关键的是Oracle 的安装程序会检查互信是否“严格”配置。所谓严格是指~/.ssh目录权限 700authorized_keys权限 600而且不能有 group 或 other 的写权限。我遇到过因为authorized_keys权限是 644 导致集群验证阶段直接失败的情况报错信息是PRVF-5449查起来很费劲。验证互信的时候不要只测ssh hostname date要测安装程序实际会用的方式ssh node1 ssh node2 date ssh node2 ssh node1 date这种嵌套 SSH 才是集群真正会用的。如果这里卡住后面 root.sh 一定会出问题。2.5 共享存储与 ASM 磁盘的 PVID 处理这是 AIX 上装 RAC 最容易被忽略的一步。AIX 默认会给每块磁盘分配 PVID而 Oracle ASM 要求磁盘不能有 PVID否则会报ORA-15018或者ORA-15031。处理方式是先用chdev清除 PVID# 查看磁盘 PVID lspv | grep hdisk # 清除 PVID chdev -l hdisk5 -a pvclear注意这个操作要在两个节点上都做而且要在配置 ASM 之前完成。如果磁盘已经被 AIX 的 LVM 占用了还需要先reducevg再清除。另外共享磁盘的权限要设成 grid 用户可读写。AIX 上一般用chown grid:asmadmin /dev/rhdisk5这种方式但要注意/dev/rhdisk是字符设备权限设置和普通文件不一样。我习惯用ls -l /dev/rhdisk*确认一遍。3. Grid Infrastructure 静默安装的完整链路3.1 response file 的生成与关键字段静默安装的第一步是准备 response file。11gR2 的 Grid Infrastructure 安装包里自带模板位置在response/grid_install.rsp。但模板里大部分字段是空的需要根据实际环境填。我一般不会直接改模板而是用record模式先生成一个基础文件再手工调整。不过 record 模式需要图形界面所以更常见的做法是直接复制模板然后逐项修改。关键字段我列一下oracle.install.responseFileVersion/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0 INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/grid ORACLE_HOME/u01/app/11.2.0/grid oracle.install.optionCRS_CONFIG ORACLE_HOSTNAMEnode1 oracle.install.asm.OSDBAasmdba oracle.install.asm.OSOPERasmoper oracle.install.asm.OSASMasmadmin oracle.install.crs.config.scanTypeLOCAL_SCAN oracle.install.crs.config.gpnp.scanNamescan-cluster oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.clusterNamerac-cluster oracle.install.crs.config.gpnp.configureGNSfalse oracle.install.crs.config.autoConfigureClusterNodeVIPfalse oracle.install.crs.config.clusterNodesnode1:node1-vip,node2:node2-vip oracle.install.crs.config.networkInterfaceListen0:192.168.1.0:1,en1:10.0.0.0:5 oracle.install.asm.configureGIMRDataDGfalse oracle.install.crs.config.useIPMIfalse oracle.install.asm.storageOptionASM oracle.install.asm.diskGroup.nameOCR oracle.install.asm.diskGroup.redundancyNORMAL oracle.install.asm.diskGroup.AUSize1 oracle.install.asm.diskGroup.disks/dev/rhdisk5,/dev/rhdisk6,/dev/rhdisk7 oracle.install.asm.diskGroup.diskDiscoveryString/dev/rhdisk*这里有几个字段特别容易填错。networkInterfaceList的格式是网卡名:子网:接口类型接口类型 1 是公共网络5 是私有网络。如果填反了集群起来之后心跳会走公共网卡性能直接崩。clusterNodes的格式是主机名:VIP名VIP 必须是还没被占用的 IP。diskGroup.disks里写的是字符设备路径不是hdisk名。这一点和 Linux 不一样Linux 一般写/dev/oracleasm/disks/xxxAIX 直接写/dev/rhdiskX。3.2 静默安装的执行与日志定位执行安装的命令是/u01/app/11.2.0/grid/runInstaller -silent -responseFile /tmp/grid_install.rsp -ignorePrereq -waitforcompletion-ignorePrereq这个参数要慎用。它会跳过所有前置检查包括那些真正会导致安装失败的项目。我一般第一次跑不加这个参数让安装程序把 prereq 检查跑完根据报错逐项修复。只有在确认某个 prereq 是误报比如 OS 版本比认证列表高一点点的时候才加-ignorePrereq。安装日志在/u01/app/oraInventory/logs/下面文件名类似installActions2024-01-01_10-00-00AM.log。如果安装失败先看这个日志的最后 100 行通常能定位到具体阶段。但有些错误是 root.sh 阶段的日志在/u01/app/11.2.0/grid/cfgtoollogs/下面。我实际遇到过一个情况静默安装跑到 80% 左右卡住日志里只显示Running root.sh但 root.sh 其实已经失败了。这时候要去/u01/app/11.2.0/grid/install/root_node1_*.log里看 root.sh 的输出。那次的原因是 OCR 磁盘权限不对root.sh 在创建 OCR 的时候报PROT-1。3.3 root.sh 在两个节点上的执行顺序Grid Infrastructure 安装到某个阶段会提示你在两个节点上分别执行 root.sh。静默模式下安装程序会等你执行完再继续。顺序是先在 node1 执行成功后再在 node2 执行。# node1 /u01/app/11.2.0/grid/root.sh # node2 /u01/app/11.2.0/grid/root.shroot.sh 在 AIX 上跑的时间比 Linux 长因为要配置 ASM 和 OCR。我见过跑了 20 分钟还没结束的情况这时候不要急着 CtrlC先看日志确认它是不是在等某个资源。如果确实卡死再排查。root.sh 执行完之后安装程序会继续跑配置助手configTool最后提示安装成功。这时候可以用crsctl stat res -t检查集群资源状态。4. 数据库软件静默安装与建库4.1 数据库 response file 的差异点数据库软件的静默安装和 Grid 类似但 response file 的字段不一样。模板在response/db_install.rsp。关键字段oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMEnode1 UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen,zh_CN ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.isCustomInstallfalse oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPoinstall oracle.install.db.config.starterdb.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl1 oracle.install.db.config.starterdb.characterSetAL32UTF8 oracle.install.db.config.starterdb.memoryOptiontrue oracle.install.db.config.starterdb.memoryLimit8192 oracle.install.db.config.starterdb.installExampleSchemasfalse oracle.install.db.config.starterdb.enableSecuritySettingstrue oracle.install.db.config.starterdb.password.ALLOracle123 oracle.install.db.config.starterdb.control.DBCONTROL_EMAILnull oracle.install.db.config.starterdb.dbcontrol.EMAILnull oracle.install.db.config.starterdb.automatedBackup.enablefalse oracle.install.db.config.starterdb.storageTypeASM oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/u01/app/oracle/oradata oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation/u01/app/oracle/fast_recovery_area oracle.install.db.config.asm.diskGroupDATA oracle.install.db.config.asm.ASMSNMPPasswordOracle123注意oracle.install.option要选INSTALL_DB_SWONLY因为 RAC 环境下数据库实例是用 DBCA 单独建的不在软件安装阶段建库。starterdb那一堆字段虽然填了但实际不会生效因为不建库。不过有些字段是必填的不填会报错。4.2 软件安装后的补丁与 OPatch11gR2 的数据库软件装完之后通常要打最新的 PSU。这一步在 RAC 环境下要用opatch auto或者opatch apply加-local参数分节点打。我一般用opatch auto它会自动处理 Grid 和 Database 的补丁但要求 OPatch 版本足够新。# 检查 OPatch 版本 $ORACLE_HOME/OPatch/opatch version # 打补丁 $ORACLE_HOME/OPatch/opatch auto /tmp/patch_directory -oh $ORACLE_HOME打补丁之前一定要确认集群资源是停止的或者用opatch auto的滚动模式。我踩过的坑是在节点1打补丁的时候没停节点2的实例结果补丁打完之后集群资源状态异常最后只能重启整个集群。4.3 DBCA 静默建库的参数细节建库用 DBCA 的静默模式命令是dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl1 \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -createAsContainerDatabase false \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 4096 \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName FRA \ -redoLogFileSize 200 \ -emConfiguration NONE \ -nodeinfo node1,node2 \ -sampleSchema false \ -J-DCLUSTER_NODESnode1,node2这里-nodeinfo和-J-DCLUSTER_NODES都要指定否则 DBCA 可能只在一个节点上建实例。-totalMemory是每个实例的内存不是总内存。-automaticMemoryManagement false是因为 RAC 环境下 AMM 不支持必须用 ASMM 或者手动管理。建库过程中如果报ORA-15018多半是 ASM 磁盘组空间不够或者权限问题。如果报ORA-29701是集群资源没起来先检查crsctl stat res -t。5. 那些文档里不写但一定会遇到的坑5.1 OCR 磁盘的 PVID 反复出现前面说了要清除 PVID但实际运维中我发现一个问题AIX 在某些情况下会自动给新发现的磁盘重新分配 PVID尤其是在存储端做了 LUN 映射变更之后。所以我的做法是在配置 ASM 之前再确认一遍 PVID 状态而且把chdev -l hdiskX -a pvclear写进自动化脚本里每次扩容都跑一遍。另外如果磁盘已经被 ASM 使用过重新清除 PVID 之前要先dd掉磁盘头部否则 ASM 可能识别到旧的元数据。dd if/dev/zero of/dev/rhdisk5 bs1024 count1024这个操作会破坏磁盘上的所有数据执行前务必确认磁盘是空闲的。5.2 集群验证阶段的 PRVF 报错静默安装之前我强烈建议先跑一遍集群验证工具cluvfy。它会检查所有前置条件包括 SSH 互信、用户权限、内核参数、存储权限等。/u01/app/11.2.0/grid/runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose常见的 PRVF 报错和处理方式报错代码含义处理方式PRVF-5449SSH 互信不严格检查 .ssh 目录和 authorized_keys 权限PRVF-5436用户组配置不对确认 grid 用户在 asmadmin 组PRVF-4037内核参数不满足用 vmo/no/ioo 调整PRVF-5184磁盘权限不对chown grid:asmadmin /dev/rhdiskXPRVF-9652时间同步问题检查 NTP 或 CTSS时间同步在 RAC 里特别重要。AIX 上一般用 CTSS 或者 NTP两个节点的时间差不能超过几分钟否则集群会报CRS-1604。我习惯用lssrc -s xntpd确认 NTP 服务状态然后用ntpq -p看同步情况。5.3 静默安装中途失败的清理静默安装失败之后不能直接重跑因为 oraInventory 里可能已经有残留。正确的清理步骤是停掉所有集群资源crsctl stop crs -f删除 ORACLE_HOME 和 ORACLE_BASE 目录清理 oraInventory删除/u01/app/oraInventory下的内容但保留目录本身清理/etc/oraInst.loc和/etc/oratab清理 ASM 磁盘dd掉磁盘头部重新跑 rootpre.sh如果不清干净重跑安装的时候会报INS-32025或者INS-32026提示 inventory 已经存在。5.4 AIX 上的 AIO 与 ASM 兼容性AIX 的异步 IO 和 ASM 配合的时候有个坑如果aio_maxreqs设得太小ASM 在高负载下会报ORA-27090。我一般设成 65536但如果系统内存比较小设太大也会有问题。经验值是每 1GB 内存对应 1024 个 aio_maxreqs但不超过 65536。另外AIX 7.1 之后引入了ioo -o aio_server_inactivity这个参数控制 AIO server 的空闲退出时间。默认值比较短ASM 在低峰期可能会让 AIO server 退出然后高峰期再启动导致短暂的 IO 延迟。我一般设成 300 秒。6. 安装后的验证与日常维护要点6.1 集群资源状态的检查清单安装完成之后不要只看crsctl stat res -t显示 ONLINE 就完事了。我一般会按这个清单逐项确认# 集群整体状态 crsctl stat res -t # OCR 状态 ocrcheck # 投票磁盘状态 crsctl query css votedisk # ASM 磁盘组状态 srvctl status asm asmcmd lsdg # 数据库实例状态 srvctl status database -d orcl # VIP 状态 srvctl status vip -n node1ocrcheck的输出要确认Status of Oracle Cluster Registry is as follows下面是Total space和Used space如果 Used space 接近 Total space说明 OCR 快满了需要扩容。6.2 日志的日常巡检位置RAC 的日志分散在多个位置我列一下最常看的集群日志$GRID_HOME/log/hostname/CSS 日志$GRID_HOME/log/hostname/cssd/ASM 日志$GRID_HOME/log/hostname/asm/数据库 alert 日志$ORACLE_BASE/diag/rdbms/dbname/sid/trace/alert_sid.log集群 alert 日志$GRID_HOME/log/hostname/alerthostname.log日常巡检的时候我习惯用tail -100看 alert 日志的最后部分然后用grep -i error过滤错误。但要注意有些错误是正常的比如ORA-00000这种正常退出码。6.3 节点扩容时的静默安装复用如果后面要加节点静默安装的 response file 可以复用只需要改ORACLE_HOSTNAME、clusterNodes和networkInterfaceList。但新节点的前置准备用户、目录、SSH 互信、内核参数必须和现有节点完全一致否则集群验证会失败。我一般会把前置准备写成一个脚本新节点直接跑脚本然后跑cluvfy验证最后用 response file 静默安装。这样扩容一个节点的时间可以控制在 2 小时以内。6.4 一个关于 response file 版本管理的小技巧response file 里的密码是明文的直接放版本库不安全。我的做法是把密码字段抽出来用环境变量替换然后在执行安装前用sed生成临时 response file。这样版本库里只有模板没有真实密码。sed s/__SYS_PASSWORD__/${SYS_PASSWORD}/g grid_install.rsp.template /tmp/grid_install.rsp安装完成后立即删除临时文件。这个习惯在多人协作的环境里特别重要避免密码泄露。7. 我个人在实际操作中的几点体会静默安装这件事第一次做的时候会觉得步骤繁琐但做过两三遍之后就会发现真正花时间的不是安装本身而是前置环境的确认和失败后的清理。我的建议是把前置检查做成一个 checklist每项都确认过再开始安装这样能避免 80% 的失败。另外AIX 上的很多操作和 Linux 差异很大比如 PVID 处理、AIO 参数、SSH 互信配置不能直接套用 Linux 的经验。我见过有人在 AIX 上用 Linux 的sysctl命令调内核参数结果当然是不生效。所以遇到问题的时候先确认 AIX 的原生工具和命令再动手。最后分享一个小技巧静默安装的日志文件很大用grep -n ERROR\|FATAL\|INS-过滤比从头看效率高得多。如果日志里出现INS-开头的错误码直接拿错误码去搜通常能找到具体的解决方案。root.sh 阶段的错误则要看cfgtoollogs下面的日志那里面的信息比主日志详细。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI替你盯监控:OneUptime MCP 服务器实战 2026/9/26 2:19:13

AI替你盯监控:OneUptime MCP 服务器实战

AI替你盯监控:OneUptime MCP 服务器实战 【免费下载链接】oneuptime Complete open-source monitoring and observability platform. 项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime 凌晨三点,告警轰炸而来,值班人还没睁…

阅读更多 →
Word制表符原理与精准排版实战指南 2026/9/26 2:19:12

Word制表符原理与精准排版实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
C# WebApi实例:从前后端分离到联调发布的完整实战指南 2026/9/26 2:19:06

C# WebApi实例:从前后端分离到联调发布的完整实战指南

简介:这套C# WebAPI实战资源,面向刚入行IT的新人以及尚未系统掌握Web API的朋友。项目以真实职场开发为蓝本,演示最精髓的WebAPI特性路由与前后端调用分离技术,让读者直接看到接口如何设计、前端如何异步调用后端,以及…

阅读更多 →
精密电源设计:稳准净三要素与实战避坑指南 2026/9/26 2:19:06

精密电源设计:稳准净三要素与实战避坑指南

1. 什么是“精密电源设计”?它到底解决什么问题?“精密电源设计”这五个字,乍看像实验室里贴在设备外壳上的标签,冷峻、专业、带着点拒人千里的距离感。但如果你拆开一台高精度示波器、一块医疗级心电图采集板、或者一套工业级PLC…

阅读更多 →
ArkClaw零安装容器管理:浏览器云养虾,轻量运维新选择 2026/9/26 2:19:06

ArkClaw零安装容器管理:浏览器云养虾,轻量运维新选择

最近朋友问我周末在忙什么,我说在“云养虾”,他愣了两秒。其实我说的虾,是那几台躲在机房里跑着各种小服务的 Linux 服务器,以及上面一个个 Docker 容器——我用 ArkClaw 在浏览器里就能看到它们的状态,远程拉镜像、启…

阅读更多 →
Dash to Panel 完全指南:让 Ubuntu 拥有 Windows 风格任务栏 2026/9/26 2:18:59

Dash to Panel 完全指南:让 Ubuntu 拥有 Windows 风格任务栏

1. 为什么偏偏是 Dash to Panel:从一个移植癖的视角看桌面改造先说个背景。我身边大半朋友是从 Windows 转过来的 Ubuntu 用户,理由五花八门,有的是开发环境需要,有的是受够了 Win 自动更新的脾气,有的纯粹想折腾。但几…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉