转载

11g Grid Control安装过程的一些“坑”

Oracle提供的图形化管理工具目前主要有三个版本: 
EMDC:Enterprise Manager Database Control 
EMGC:Enterprise Manager Grid Control 
EMCC:Enterprise Manager Cloud Control 
DC需要为每个实例创建一套,而GC则可以统一管理多实例,CC则运用了很火的“云”概念来做统一管理数据库,可谓是增强版的GC。

Oracle官网上已经删除了几乎所有11g GC下载链接,主推12c和13c的CC,用心良苦。。。

最近,由于不同项目的开发测试库越来越杂,所以想对其进行统一的管理,虽然流行的是CC,但还是想任性的装一把GC。

对于普通的安装过程就不过多介绍,主要聊聊我在部署GC过程中碰见的N多坑,可能有些问题在各位看来已经不是问题了,但至少作为小白的我,所能碰到的问题想必会有其他人也会碰见,至少是总结一下自己的部署过程,还是有许多值得思考的地方。

坑1:安装介质 
(1) 操作系统是Red Hat 6.4,64位。 
(2) 资料库:我用的是11.2.0.4版本: 
p13390677_112040_Linux-x86-64_1of7.zip 
p13390677_112040_Linux-x86-64_2of7.zip 
(3) weblogic:从官方网站上没有找到推荐的10.3.2版本,只有10.3.6版本的下载链接(http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html),为了不因版本问题产生差异,还是找了10.3.2版本: 
wls1032_linux32.bin。 
(4) GC:这就更费劲了,官网已经不提供下载链接,找了其他渠道下载了11.1.0.1.0版本的镜像: 
GridControl_11.1.0.1.0_Linux_x86-64_1of3.zip 
GridControl_11.1.0.1.0_Linux_x86-64_2of3.zip 
GridControl_11.1.0.1.0_Linux_x86-64_3of3.zip

坑2:weblogic安装 
./wls1032_linux32.bin,提示无法开启图形界面,但命令行方式依然可用: 
Unable to instantiate GUI, defaulting to console mode. 
有两点注意: 
(1) Middleware Home路径会有一个默认值,若要使用另一个路径,则此处需要输入一个新路径,例如/u01/app/oracle/Middleware,接下来就选择这个路径,非默认路径:

"Middleware Home" = [Enter new value or use default  "/slot/ems13782/appmgr/Oracle/Middleware"]  Enter new Middleware Home OR [Exit][Previous][Next]> /u01/app/oracle/Middleware 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

(2) 此处3选择是否接收安全更新,可以选择否,参考如下四步操作,设置Receive Security Update为No:

Provide your email address for security updates and to initiate configuration manager. 1|Email:[] 2|Support Password:[] 3|Receive Security Update:[Yes] Enter index number to select OR [Exit][Previous][Next]> 3 Provide your email address for security updates and to initiate configuration manager. "Receive Security Update:" = [Enter new value or use default "Yes"] Enter [Yes][No]? NO  Provide your email address for security updates and to initiate configuration manager. "Receive Security Update:" = [Enter new value or use default "Yes"]     ** Do you wish to bypass initiation of the configuration manager and **  remain uninformed of critical security issues in your configuration? Enter [Yes][No]? Yes  Provide your email address for security updates and to initiate configuration manager. 1|Email:[] 2|Support Password:[] 3|Receive Security Update:[No] Enter index number to select OR [Exit][Previous][Next]> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

而且有可能在64位环境下执行32位的安装程序,会报错:

./wls1032_linux32.bin -bash: ./wls1032_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 
  • 1
  • 2
  • 1
  • 2

经查证(http://www.2cto.com/os/201207/142437.html),其需要32位的glibc,

yum install glibc.i686 
  • 1
  • 1

若需要使用scp传送介质,报错:

[oracle11g@dcsopenNode1 oracle11204]$ scp p13390677_112040_Linux-x86-64_1of7.zip root@172.30.38.66:/opt/software/. root@172.30.38.66's password:  bash: scp: command not found lost connection 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

无论从远端下载,还是从远端上传,都会报这个错误,原因是没有安装scp命令,需要:

yum install openssh-clients 
  • 1
  • 1

即可使用scp。

坑3:资料库参数 
按照建议,或者安装GC会有错误提示,需要设置以下参数的最低值:

alter system set session_cached_cursors=201 scope=spfile; alter system set job_queue_processes=11 scope=spfile; alter system set open_cursors=301; alter system set log_buffer=10485760 scope=spfile; alter system set processes=501 scope=spfile; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

11g Grid Control安装过程的一些“坑”

坑4:GC安装未识别中间件 
此处即使手工输入或选择,均提示错误: 
11g Grid Control安装过程的一些“坑”
此时可以排查下/etc/hosts文件是否增加了主机名的映射关系:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 x.x.x.x emrep11 
  • 1
  • 2
  • 1
  • 2

若第一行localhost.localdomain改为emrep11,则也会报错。 
在做的过程中,曾怀疑是weblogic安装的有问题,重装,先卸载weblogic,脚本如下:

/u01/app/oracle/Middleware/wlserver_10.3/uninstall ./uninstall.sh 
  • 1
  • 2
  • 1
  • 2

坑5:资料库的可访问方式 
如果选择资料库提示如下报错,则可能是库信息有误、监听未启动或者库未启动, 
11g Grid Control安装过程的一些“坑”
我这碰见的问题是,由于资料库是手工创建,忘了创建密码文件,因此此处报错,orapwd生成密码文件后正常。其使用sysdba权限登录需要口令文件,未创建之前,使用如下EZCONNECT方式访问(sysdba权限 )报的同样是ORA-01017错误:

sqlplus sys/oracle@emrep11:1521/EMREP as sysdba 
  • 1
  • 1

坑6:密码 
安装过程中,密码的要求是至少8位,字母开始,至少包含一位数字: 
11g Grid Control安装过程的一些“坑”

坑7:安装过程报错1-删除SYSMAN重装 
第一次安装,Repository Configuration失败。 
11g Grid Control安装过程的一些“坑”
重装提示SYSMAN已存在,需要删除,此时可以使用如下命令删除,或者根据secooler的建议,直接drop user … cascade删除:

/u01/app/oracle/11.2.0.4/dbhome_1/sysman/admin/emdrep/bin/RepManager emrep11 1521 EMREP -action drop 
  • 1
  • 1

坑8:安装过程报错-删除SYSMAN_MDS 
提示MDS Schema Configuration安装错误: 
11g Grid Control安装过程的一些“坑”
重新安装会提示SYSMAN_MDS已存在: 
11g Grid Control安装过程的一些“坑”
要求删除sysman_mds的信息,如果仅使用drop user sysman_mds删除,则会提示报错,指出信息不匹配,此时可以使用脚本:

SQL> @/u01/app/oracle/11.2.0.4/dbhome_1/sysman/admin/emdrep/sql/core/latest/admin/admin_recompile_invalid.sql Enter value for 1: SYSMAN_MDS old 16: WHERE owner ='&EM_REPOS_USER' new 16: WHERE owner ='SYSMAN_MDS' old 65: AND ds.table_owner  = '&EM_REPOS_USER' new 65: AND ds.table_owner  = 'SYSMAN_MDS' PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

完成删除。 
若再有问题,可能还是SYSMAN/SYSMAN_MDS删除不完全的原因,(参考: 
http://blog.csdn.net/qingqingxuelang/article/details/7546888)

select count(*) FROM SCHEMA_VERSION_REGISTRY  t WHERE t.mrc_name = 'SYSMAN'; 返回1 delete from SCHEMA_VERSION_REGISTRY  t WHERE t.mrc_name = 'SYSMAN'; 1 row deleted. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

再继续安装。

坑9:安装过程报错-SYSTEM表空间容量不足 
查看日志:

/u01/app/oracle/Middleware/oms11g/cfgtoollogs/cfgfw/CfmLogger_2016-06-23_01-18-02-PM.log ORA-00604: error occurred at recursive SQL level 1 ORA-01654: unable to extend index SYS.I_SOURCE1 by 128 in tablespace SYSTEM 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

发现提示的是SYSTEM表空间不足,所以安装之前预留出充足的表空间容量很重要。

坑10:安装过程报错-主机名 
安装至OMS Configuration报错: 
11g Grid Control安装过程的一些“坑”
查看日志:

/u01/app/oracle/Middleware/oms11g/cfgtoollogs/omsca/omsca_20160623150240.log Caused by: com.bea.plateng.domain.script.ScriptException: com.bea.plateng.domain.ValidateExceptio n: Property "Listen address" of Server "EMGC_ADMINSERVER" is invalid. 970 The entered value is not a valid hostname. Please use only alphanumeric characters and dot (.) an        d dash (-). 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

发现提示的是hostname主机名要求不能使用.和-,开始我设置的主机名是emrep-11,不符合要求。 
一言不合即重装,先卸载之前安装的组件,可以执行以下脚本调用:

/u01/app/oracle/11.2.0.4/dbhome_1/oui/bin/runInstaller 
  • 1
  • 1

11g Grid Control安装过程的一些“坑”
关于主机名的变更,需要两步: 
(1) hostname可以修改session的主机名,临时生效。 
(2) /etc/sysconfig/network中的HOSTNAME,永久生效。 
同时,需要注意/etc/hosts等文件中已经定义的主机名需要替换。

坑11:open files限制值 
启动oms时,提示了错误:

[oracle@emrep11 bin]$ ./emctl start oms Oracle Enterprise Manager 11g Release 1 Grid Control   Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved. Starting WebTier... WebTier Successfully Started Starting Oracle Management Server... Oracle Management Server Already Started Oracle Management Server is Up WARNING: Limit of open file descriptors is found to be 1024. The OMS has been started but it may run out of descriptors under heavy usage. For proper functioning of OMS, please set "ulimit -n" to be at least 4096. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

错误很明显,open files参数值需要至少4096,此处实际只有1024,因此需要改动, 
(1) ulimit -n 4096,临时生效。 
(2) /etc/security/limits.conf修改

oracle11g soft nofile 4096 oracle11g       hard    nofile 65536 
  • 1
  • 2
  • 1
  • 2

重新登录生效。

坑12:GC控制台界面乱码 
GC的显示是根据浏览器语言决定的,我是用chrome,加入了英语语言: 
11g Grid Control安装过程的一些“坑”
显示仍有乱码: 
11g Grid Control安装过程的一些“坑”
原因就是需要调整顺序,默认英语: 
11g Grid Control安装过程的一些“坑”

坑13:端口无法访问 
GC的访问设置了很多端口,如果开启了防火墙,则需要增加这些端口例外,要么关闭防火墙,否则就会得到例如”failed: No route to host.”这样的错误。 
加入例外:

vi /etc/sysconfig/iptables 增加 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4903 -j ACCEPT 重启iptables,永久生效: service iptabels restart 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

坑14:agent安装过程报错-SEVERE:The Oracle Home name is not valid. Oracle Home names must be 128 characters or less and contain only alphanumeric characters and underscores. 
参考官方文档,执行:

./$<ORACLE_HOME>/oui/bin/runInstaller -clone -forceClone ORACLE_HOME=/u01/app/oracle/agent11g ORACLE_HOME_NAME=/u01/app/oracle/11.2.0.4/dbhome_1 -noconfig -silent OMS_HOST=emrep11 OMS_PORT=4903 
  • 1
  • 1

其实这ORACLE_HOME_NAME不是要求路径,而是要求一个名称标识,改为:

./runInstaller -clone -forceClone ORACLE_HOME=/u01/app/oracle/agent11g ORACLE_HOME_NAME="APP" -noconfig -silent OMS_HOST=emrep11 OMS_PORT=4903 
  • 1
  • 1

坑15:agent安装过程报错-agentca报错 
执行agentca -f报错:

[oracle@deptestvm001 bin]$ ./agentca -f  Stopping the agent using /u01/app/oracle/agent11g/bin/emctl  stop agent  Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0 Copyright (c) 1996, 2010 Oracle Corporation.  All rights reserved. Running agentca using /u01/app/oracle/agent11g/oui/bin/runConfig.sh ORACLE_HOME=/u01/app/oracle/agent11g ACTION=Configure MODE=Perform RESPONSE_FILE=/u01/app/oracle/agent11g/response_file RERUN=TRUE INV_PTR_LOC=/u01/app/oracle/agent11g/oraInst.loc COMPONENT_XML={oracle.sysman.top.agent.10_2_0_1_0.xml} Perform - mode is starting for action: Configure java.io.FileNotFoundException: /u01/app/oracle/Middleware/.gcinstall_temp/staticports.ini (No such file or directory)         at java.io.FileInputStream.open(Native Method)         at java.io.FileInputStream.<init>(FileInputStream.java:106)         at java.io.FileReader.<init>(FileReader.java:55)         at oracle.sysman.emcp.util.FileUtil.loadPortsFromPropertyFile(FileUtil.java:1313)         at oracle.sysman.emcp.agent.AgentPlugIn.fetchParameters(AgentPlugIn.java:615)         at oracle.sysman.emcp.agent.AgentPlugIn.<init>(AgentPlugIn.java:202)         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)         at oracle.sysman.emCfg.support.CfmUtil.getTheObject(CfmUtil.java:171)         at oracle.sysman.emCfg.core.PerformMicroStep.getInstanceOfPlugIn(PerformMicroStep.java:404)         at oracle.sysman.emCfg.core.PerformMicroStep.runJavaClass(PerformMicroStep.java:500)         at oracle.sysman.emCfg.core.PerformMicroStep.executeMicroStep(PerformMicroStep.java:120)         at oracle.sysman.emCfg.core.ActionPerformer.performMicroStep(ActionPerformer.java:917)         at oracle.sysman.emCfg.core.ActionPerformer$Performer.run(ActionPerformer.java:1038) java.lang.NullPointerException at oracle.sysman.emcp.util.FileUtil.loadPortsFromPropertyFile(FileUtil.java:1320)         at oracle.sysman.emcp.agent.AgentPlugIn.fetchParameters(AgentPlugIn.java:615)         at oracle.sysman.emcp.agent.AgentPlugIn.<init>(AgentPlugIn.java:202)         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)         at oracle.sysman.emCfg.support.CfmUtil.getTheObject(CfmUtil.java:171)         at oracle.sysman.emCfg.core.PerformMicroStep.getInstanceOfPlugIn(PerformMicroStep.java:404)         at oracle.sysman.emCfg.core.PerformMicroStep.runJavaClass(PerformMicroStep.java:500)         at oracle.sysman.emCfg.core.PerformMicroStep.executeMicroStep(PerformMicroStep.java:120)         at oracle.sysman.emCfg.core.ActionPerformer.performMicroStep(ActionPerformer.java:917)         at oracle.sysman.emCfg.core.ActionPerformer$Performer.run(ActionPerformer.java:1038) 
  • 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
  • 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

说缺少这个文件: 
/u01/app/oracle/Middleware/.gcinstall_temp/staticports.ini 
于是从OMS服务器复制了一份,内容就是所有相关的端口定义:

Enterprise Manager Upload Http Port=4889 Enterprise Manager Upload Http SSL Port=4903 Enterprise Manager Central Console Http SSL Port=7802 Node Manager Http SSL Port=7403 Managed Server Http Port=7202 Enterprise Manager Central Console Http Port=7788 Oracle Management Agent Port=3872 Admin Server Http SSL Port=7102 Managed Server Http SSL Port=7301 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

坑16:GC无法新增远程数据库 
如图所示,新增Database资源时,提示vm001.cs1cloud.internal找不着: 
11g Grid Control安装过程的一些“坑”
实际这台安装了agent的机器名是vm001,没有域名。 
开始我是在agent根目录下查找所有包含vm001.cs1cloud.internal的文件:

find . -name '*.*' | xargs grep 'vm001.cs1cloud.internal' -n 
  • 1
  • 1

实际不能这么做。换了一种方法,在/etc/hosts中增加:

x.x.x.x vm001.cs1clouod.internal 
  • 1
  • 1

11g Grid Control安装过程的一些“坑”
让OMS可以识别这个域名即可。当然这种方式是一种workaround,若哪位有更准确的方法,可以提出来,共同学习。

坑17:opmnctl指令错误

http://www.gokhanatil.com/2011/06/enterprise-manager-grid-control-11g-and-opmnctl.html

In Grid Control 10g, we use opmnctl utility to stop, start and get status of Oracle Application Server 10g and OMS (Oracle Management Service). In new Grid Control (11g), OMS is deployed on weblogic server so we need to use emctl instead of opmnctl to start OMS.

10g使用opmnctl查看OMS状态,11g中OMS部署在weblogic服务器上,所以使用emctl来管理OMS。 
使用opmnctl,需要设置ORACLE_INSTANCE环境变量。 
开始设置:

export ORACLE_INSTANCE=/u01/app/oracle/gc_inst ./opmnctl status opmnctl: Invalid ORACLE_INSTANCE (/u01/app/oracle/gc_inst/config/OPMN/opmn/opmn.xml is missing). 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

应该使用

export ORACLE_INSTANCE=/u01/app/oracle/gc_inst/WebTierIH1 
  • 1
  • 1

就可以使用opmnctl了:

[oracle@emrep66 bin]$ ./opmnctl status Processes in Instance: instance1 ---------------------------------+--------------------+---------+--------- ias-component                    | process-type       |     pid | status   ---------------------------------+--------------------+---------+--------- ohs1                             | OHS                |    9912 | Alive  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

坑18:删除agent 
要彻底删除agent,从资料库中可以执行以下语句删除agent信息:

exec mgmt_admin.cleanup_agent('vm001.cs1cloud.internal:4903'); 
  • 1
  • 1

其中参数信息来自于:

vi /u01/app/oracle/agent11g/sysman/config/emd.properties EMD_URL=http://vm001.cs1cloud.internal:%EM_SERVLET_PORT%/emd/main/ 
  • 1
  • 2
  • 1
  • 2

重新安装agent,可以先删除旧agent的记录信息:

vi /u01/app/oracle/oraInventory/ContentsXML/inventory.xml 删除 <HOME NAME="BTRACER" LOC="/u01/app/oracle/agent11g" TYPE="O" IDX="2"/> 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

未解决问题: 
问题1:Firefox无法访问GC控制台 
11g Grid Control安装过程的一些“坑”
OMS本机和远程都是这个报错。使用chrome可以,怀疑可能和证书有关,本想从chrome中找出证书再导入Firefox,但未找着对应的证书。

问题2:agentdownload方式安装agent报错

./agentDownload.linux_x64 -b /u01/app/oracle 
  • 1
  • 1

总提示:

/home/oracle/agent/linux_x64/agentDownload11.1.0.1.0Oui/oui_linux_x64.jar appears to be corrupt! Command failed: mv unzip /home/oracle/agent/linux_x64/agentDownload11.1.0.1.0Oui/Disk1/UnzipUtl 
  • 1
  • 2
  • 1
  • 2

尝试了agentDownload方式,还尝试了将OMS本机可用的agent打包到远程机器,执行其中的agentDownload,让然报这个错误。

总结: 
11g GC安装过程: 
(1) 安装资料库,本次使用的是11.2.0.4,创建EMREP资料库,修改需要的参数。 
(2) 安装weblogic,本次使用的是10.3.2,需要选择典型安装,关闭安全更新。 
(3) 安装Grid Control,注意SYSTEM表空间容量,500M可以,还要注意本机磁盘空间,占用会较多,建议预留20G,每一个组件的安装报错,对应的解决方法可能不同,若选择重新安装,需要先卸载。 
(4) agent安装,OMS本机安装无问题,远程download方式仍有问题,本次使用了clone方法,将OMS的agent复制至其他节点,命令操作:

cd $ORACLE_HOME/oui/bin ./runInstaller -clone -forceClone ORACLE_HOME=<Location_to_Agent's_OracleHome> ORACLE_HOME_NAME=<alphanumeric_without_special_characters> -noconfig -silent OMS_HOST=<oms_host> OMS_PORT=<oms_port> $<ORACLE_HOME>/bin/agentca -f 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

参考:

Advanced Installation and Configuration Guide - 16 Cloning Oracle Management Agent Using ZIP File

然后: 
./emctl secure agent 
./emctl start agent 
./emctl upload 
./emctl status agent 
确保返回结果中,如下两项有值,则表明本机信息已经由agent上传至OMS: 
Last successful upload 
Last successful heartbeat to OMS

11g的GC安装,还是有些艰难,坑不少,但趟过了之后,就应该积累了不少经验值,可依然留了上面三个问题,如果哪位有好的解法,还请告知,共同学习,谢谢。

正文到此结束
Loading...