Srvctl命令详解(10g)「建议收藏」

Srvctl命令详解(10g)「建议收藏」Srvctl命令 Srvctl命令式RAC维护中最常用的命令也是最复杂的命令。这个工具用来维护一下几种资源:Database,Instance,ASM,Service,Listener和NodeApplication,nodeApplication又包括GSD,ONS,VIP。 Srvctl命令的用法: [root@felix2bin]#./srvctl-help…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Srvctl命令

 

Srvctl命令式RAC维护中最常用的命令也是最复杂的命令。这个工具用来维护一下几种资源:Database,Instance,ASM,Service,Listener和Node Application,node Application又包括GSD,ONS,VIP。

 

Srvctl命令的用法:

 

[root@felix2 bin]# ./srvctl -help

Usage: srvctl <command> <object>[<options>]

    command:enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config

    objects:database|instance|service|nodeapps|asm|listener

For detailed help on each command and object andits options use:

    srvctl<command> <object> -h

[root@felix2 bin]#

 

 

[root@felix1 bin]# ./srvctl -h

Usage: srvctl [-V]

Usage: srvctl add database -d <name> -o<oracle_home> [-m <domain_name>] [-p <spfile>] [-A<name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}][-s <start_options>] [-n <db_name>] [-y {AUTOMATIC | MANUAL}]

Usage: srvctl add instance -d <name> -i<inst_name> -n <node_name>

Usage: srvctl add service -d <name> -s<service_name> -r “<preferred_list>” [-a “<available_list>”][-P <TAF_policy>]

Usage: srvctl add service -d <name> -s<service_name> -u {-r “<new_pref_inst>” | -a”<new_avail_inst>”}

Usage: srvctl add nodeapps -n <node_name> -o<oracle_home> -A <name|ip>/netmask[/if1[|if2|…]]

Usage: srvctl add asm -n <node_name> -i<asm_inst_name> -o <oracle_home> [-p <spfile>]

Usage: srvctl config database

Usage: srvctl config database -d <name> [-a][-t]

Usage: srvctl config service -d <name> [-s<service_name>] [-a] [-S <level>]

Usage: srvctl config nodeapps -n <node_name>[-a] [-g] [-s] [-l]

Usage: srvctl config asm -n <node_name>

Usage: srvctl config listener -n <node_name>

Usage: srvctl disable database -d <name>

Usage: srvctl disable instance -d <name> -i”<inst_name_list>”

Usage: srvctl disable service -d <name> -s”<service_name_list>” [-i <inst_name>]

Usage: srvctl disable asm -n <node_name> [-i<inst_name>]

Usage: srvctl enable database -d <name>

Usage: srvctl enable instance -d <name> -i”<inst_name_list>”

Usage: srvctl enable service -d <name> -s”<service_name_list>” [-i <inst_name>]

Usage: srvctl enable asm -n <node_name> [-i<inst_name>]

Usage: srvctl getenv database -d <name> [-t”<name_list>”]

Usage: srvctl getenv instance -d <name> -i<inst_name> [-t “<name_list>”]

Usage: srvctl getenv service -d <name> -s<service_name> [-t “<name_list>”]

Usage: srvctl getenv nodeapps -n <node_name>[-t “<name_list>”]

Usage: srvctl modify database -d <name> [-n<db_name] [-o <ohome>] [-m <domain>] [-p <spfile>]  [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>] [-y {AUTOMATIC | MANUAL}]

Usage: srvctl modify instance -d <name> -i<inst_name> -n <node_name>

Usage: srvctl modify instance -d <name> -i<inst_name> {-s <asm_inst_name> | -r}

Usage: srvctl modify service -d <name> -s<service_name> -i <old_inst_name> -t <new_inst_name> [-f]

Usage: srvctl modify service -d <name> -s<service_name> -i <avail_inst_name> -r [-f]

Usage: srvctl modify service -d <name> -s<service_name> -n -i <prefered_inst> [-a <available_list>][-f]

Usage: srvctl modify asm -n <node_name> -i<asm_inst_name> [-o <oracle_home>] [-p <spfile>]

Usage: srvctl modify nodeapps -n <node_name>[-o <oracle_home>] [-A <new_vip_address>]

Usage: srvctl relocate service -d <name> -s<service_name> -i <old_inst_name> -t <new_inst_name> [-f]

Usage: srvctl remove database -d <name> [-f]

Usage: srvctl remove instance -d <name> -i<inst_name> [-f]

Usage: srvctl remove service -d <name> -s<service_name> [-i <inst_name>] [-f]

Usage: srvctl remove nodeapps -n”<node_name_list>” [-f]

Usage: srvctl remove asm -n <node_name> [-i<asm_inst_name>] [-f]

Usage: srvctl setenv database -d <name> {-t<name>=<val>[,<name>=<val>,…] | -T<name>=<val>}

Usage: srvctl setenv instance -d <name> [-i<inst_name>] {-t”<name>=<val>[,<name>=<val>,…]” | -T”<name>=<val>”}

Usage: srvctl setenv service -d <name> [-s<service_name>] {-t”<name>=<val>[,<name>=<val>,…]” | -T”<name>=<val>”}

Usage: srvctl setenv nodeapps -n <node_name>{-t “<name>=<val>[,<name>=<val>,…]” | -T”<name>=<val>”}

Usage: srvctl start database -d <name> [-o<start_options>]

Usage: srvctl start instance -d <name> -i”<inst_name_list>” [-o <start_options>]

Usage: srvctl start service -d <name> [-s”<service_name_list>” [-i <inst_name>]] [-o<start_options>]

Usage: srvctl start nodeapps -n <node_name>

Usage: srvctl start asm -n <node_name> [-i<asm_inst_name>] [-o <start_options>]

Usage: srvctl start listener -n <node_name>[-l <lsnr_name_list>]

Usage: srvctl status database -d <name> [-f][-v] [-S <level>]

Usage: srvctl status instance -d <name> -i”<inst_name_list>” [-f] [-v] [-S <level>]

Usage: srvctl status service -d <name> [-s”<service_name_list>”] [-f] [-v] [-S <level>]

Usage: srvctl status nodeapps -n <node_name>

Usage: srvctl status asm -n <node_name>

Usage: srvctl stop database -d <name> [-o<stop_options>]

Usage: srvctl stop instance -d <name> -i”<inst_name_list>” [-o <stop_options>]

Usage: srvctl stop service -d <name> [-s”<service_name_list>” [-i <inst_name>]] [-f]

Usage: srvctl stop nodeapps -n <node_name>[-r]

Usage: srvctl stop asm -n <node_name> [-i<asm_inst_name>] [-o <stop_options>]

Usage: srvctl stop listener -n <node_name>[-l <lsnr_name_list>]

Usage: srvctl unsetenv database -d <name> -t”<name_list>”

Usage: srvctl unsetenv instance -d <name>[-i <inst_name>] -t “<name_list>”

Usage: srvctl unsetenv service -d <name> [-s<service_name>] -t “<name_list>”

Usage: srvctl unsetenv nodeapps -n<node_name> -t “<name_list>”

 

 

使用config查看配置

1.查看数据库配置。

[root@felix2 bin]# ./srvctl config database

felix

[root@felix2 bin]#

 

 

[root@felix2 bin]# ./srvctl config database -dfelix

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

[root@felix2 bin]#

 

 

[root@felix2 bin]# ./srvctl config database -dfelix -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[root@felix2 bin]#

2.查看node Application的配置

 

[root@felix2 bin]# ./srvctl config nodeapps -nfelix

PRKC-1056 : Failed to get the hostname for nodefelix

PRKH-1001 : HASContext Internal Error

  [OCRError(Native: getHostName:[21])]

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1

felix1 felix1 /u01/oracle/10.2.0/db_1

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1 -h

Usage: srvctl config nodeapps -n <node_name>[-a] [-g] [-s] [-l]

    -n<node>           Node name

    -a                  Display VIP configuration

    -g                  Display GSD configuration

    -s                  Display ONS daemonconfiguration

    -l                  Display listenerconfiguration

    -h                  Print usage

[root@felix2 bin]#

 

 

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1 -a

VIP exists.:/felix1-vip/192.168.10.111/255.255.255.0/eth0

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1 -g

GSD exists.

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1 -s

ONS daemon exists.

[root@felix2 bin]# ./srvctl config nodeapps -nfelix1 -l

Listener exists.

 

3.产看监听状态

[root@felix2 bin]# ./srvctl config listener -nfelix1

felix1 LISTENER_FELIX1

 

4.查看ASM

 

[root@felix2 bin]# ./srvctl config asm -n felix2

+ASM2 /u01/oracle/10.2.0/db_1

[root@felix2 bin]#

 

5.查看service

 

[root@felix2 bin]# ./srvctl config service -h

Usage: srvctl config service -d <name> [-s<service_name>] [-a] [-S <level>]

    -d<name>           Unique name forthe database

    -s<service>        Service name

    -a                  Additional attributes

    -S <level>          Additional information for EM Console

    -h                  Print usage

[root@felix2 bin]#

 

 

 

使用add添加对象:

一般情况下,应用层的资源都是在图形化界面的帮助下注册到OCR中,比如VIP、ONS是在安装最后阶段创建的,而数据库、ASM是在执行DBCA的过程中自动注册到OCR中,LISTENER是通过NETCA工具。有写时候需要手工把资源注册到OCR中,这事就用到了add命令。

[root@felix1 bin]# ./srvctl -h

Usage: srvctl [-V]

Usage: srvctl add database -d <name> -o<oracle_home> [-m <domain_name>] [-p <spfile>] [-A<name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}][-s <start_options>] [-n <db_name>] [-y {AUTOMATIC | MANUAL}]

Usage: srvctl add instance -d <name> -i<inst_name> -n <node_name>

Usage: srvctl add service -d <name> -s<service_name> -r “<preferred_list>” [-a”<available_list>”] [-P <TAF_policy>]

Usage: srvctl add service -d <name> -s<service_name> -u {-r “<new_pref_inst>” | -a”<new_avail_inst>”}

Usage: srvctl add nodeapps -n <node_name> -o<oracle_home> -A <name|ip>/netmask[/if1[|if2|…]]

Usage: srvctl add asm -n <node_name> -i<asm_inst_name> -o <oracle_home> [-p <spfile>]

Usage: srvctl config database

Usage: srvctl config database -d <name> [-a][-t]

Usage: srvctl config service -d <name> [-s<service_name>] [-a] [-S <level>]

Usage: srvctl config nodeapps -n <node_name>[-a] [-g] [-s] [-l]

Usage: srvctl config asm -n <node_name>

Usage: srvctl config listener -n <node_name>

Usage: srvctl disable database -d <name>

Usage: srvctl disable instance -d <name> -i”<inst_name_list>”

Usage: srvctl disable service -d <name> -s”<service_name_list>” [-i <inst_name>]

Usage: srvctl disable asm -n <node_name> [-i<inst_name>]

Usage: srvctl enable database -d <name>

Usage: srvctl enable instance -d <name> -i”<inst_name_list>”

Usage: srvctl enable service -d <name> -s”<service_name_list>” [-i <inst_name>]

Usage: srvctl enable asm -n <node_name> [-i<inst_name>]

Usage: srvctl getenv database -d <name> [-t”<name_list>”]

Usage: srvctl getenv instance -d <name> -i<inst_name> [-t “<name_list>”]

Usage: srvctl getenv service -d <name> -s<service_name> [-t “<name_list>”]

Usage: srvctl getenv nodeapps -n <node_name>[-t “<name_list>”]

Usage: srvctl modify database -d <name> [-n<db_name] [-o <ohome>] [-m <domain>] [-p <spfile>]  [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>] [-y {AUTOMATIC | MANUAL}]

Usage: srvctl modify instance -d <name> -i<inst_name> -n <node_name>

Usage: srvctl modify instance -d <name> -i<inst_name> {-s <asm_inst_name> | -r}

Usage: srvctl modify service -d <name> -s<service_name> -i <old_inst_name> -t <new_inst_name> [-f]

Usage: srvctl modify service -d <name> -s<service_name> -i <avail_inst_name> -r [-f]

Usage: srvctl modify service -d <name> -s<service_name> -n -i <prefered_inst> [-a <available_list>][-f]

Usage: srvctl modify asm -n <node_name> -i<asm_inst_name> [-o <oracle_home>] [-p <spfile>]

Usage: srvctl modify nodeapps -n <node_name>[-o <oracle_home>] [-A <new_vip_address>]

Usage: srvctl relocate service -d <name> -s<service_name> -i <old_inst_name> -t <new_inst_name> [-f]

Usage: srvctl remove database -d <name> [-f]

Usage: srvctl remove instance -d <name> -i<inst_name> [-f]

Usage: srvctl remove service -d <name> -s<service_name> [-i <inst_name>] [-f]

Usage: srvctl remove nodeapps -n”<node_name_list>” [-f]

Usage: srvctl remove asm -n <node_name> [-i<asm_inst_name>] [-f]

Usage: srvctl setenv database -d <name> {-t<name>=<val>[,<name>=<val>,…] | -T<name>=<val>}

Usage: srvctl setenv instance -d <name> [-i<inst_name>] {-t”<name>=<val>[,<name>=<val>,…]” | -T”<name>=<val>”}

Usage: srvctl setenv service -d <name> [-s<service_name>] {-t “<name>=<val>[,<name>=<val>,…]”| -T “<name>=<val>”}

Usage: srvctl setenv nodeapps -n <node_name>{-t “<name>=<val>[,<name>=<val>,…]” | -T”<name>=<val>”}

Usage: srvctl start database -d <name> [-o<start_options>]

Usage: srvctl start instance -d <name> -i”<inst_name_list>” [-o <start_options>]

Usage: srvctl start service -d <name> [-s”<service_name_list>” [-i <inst_name>]] [-o<start_options>]

Usage: srvctl start nodeapps -n <node_name>

Usage: srvctl start asm -n <node_name> [-i<asm_inst_name>] [-o <start_options>]

Usage: srvctl start listener -n <node_name>[-l <lsnr_name_list>]

Usage: srvctl status database -d <name> [-f][-v] [-S <level>]

Usage: srvctl status instance -d <name> -i”<inst_name_list>” [-f] [-v] [-S <level>]

Usage: srvctl status service -d <name> [-s”<service_name_list>”] [-f] [-v] [-S <level>]

Usage: srvctl status nodeapps -n <node_name>

Usage: srvctl status asm -n <node_name>

Usage: srvctl stop database -d <name> [-o<stop_options>]

Usage: srvctl stop instance -d <name> -i”<inst_name_list>” [-o <stop_options>]

Usage: srvctl stop service -d <name> [-s”<service_name_list>” [-i <inst_name>]] [-f]

Usage: srvctl stop nodeapps -n <node_name>[-r]

Usage: srvctl stop asm -n <node_name> [-i<asm_inst_name>] [-o <stop_options>]

Usage: srvctl stop listener -n <node_name>[-l <lsnr_name_list>]

Usage: srvctl unsetenv database -d <name> -t”<name_list>”

Usage: srvctl unsetenv instance -d <name>[-i <inst_name>] -t “<name_list>”

Usage: srvctl unsetenv service -d <name> [-s<service_name>] -t “<name_list>”

Usage: srvctl unsetenv nodeapps -n<node_name> -t “<name_list>”

添加数据库

[oracle@felix1 conf]$ srvctl config database

Felix

[oracle@felix1 conf]$ srvctl add database -d felix001-o $ORACLE_HOME

[oracle@felix1 conf]$ srvctl config database

felix

felix001

[oracle@felix1 conf]$ srvctl remove database -dfelix001

Remove the database felix001? (y/[n]) y

[oracle@felix1 conf]$ srvctl config database

felix

[oracle@felix1 conf]$

 

添加实例

 

[oracle@felix1 conf]$ srvctl add instance -dfelix001 -h

Usage: srvctl add instance -d <name> -i<inst_name> -n <node_name>

    -d<name>           Unique name forthe database

    -i<inst>           Instance name

    -n<node>           Node name

    -h                  Print usage

[oracle@felix1 conf]$ srvctl add instance -dfelix001 -n felix1 -i inst_a1

[oracle@felix1 conf]$ srvctl remove instance -dfelix001 -h

Usage: srvctl remove instance -d <name> -i<inst_name> [-f]

    -d<name>           Unique name forthe database

    -i<inst>           Instance name

    -f                  Force remove

    -h                  Print usage

[oracle@felix1 conf]$ srvctl remove instance -dfelix001 -i inst_a1

Remove instance inst_a1 from the databasefelix001? (y/[n]) y

 

使用enable、disable启动和禁用对象

缺省情况下数据库、实例、服务、ASM都是随着CRS的启动而启动的,有时由于维护的需要可以先关闭这个特性。

(1)  配置数据库随CRS的启动而启动

 [oracle@felix1 conf]$ srvctl config  database -d felix  -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[oracle@felix1 conf]$

 

 

[oracle@felix1 conf]$ srvctl disable  database -d felix

[oracle@felix1 conf]$ srvctl config  database -d felix  -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: MANUAL

ENABLE FLAG: DB DISABLED, INST DISABLED ON felix1 felix2

[oracle@felix1 conf]$

 

[oracle@felix1 conf]$ srvctl enable  database -d felix

[oracle@felix1 conf]$ srvctl config  database -d felix  -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[oracle@felix1 conf]$

 

 

(2)  关闭某个实例的自动启动

[oracle@felix1 conf]$ srvctl config  database -d felix  -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[oracle@felix1 conf]$ srvctl disable instance -d felix -i felix1

[oracle@felix1 conf]$ srvctl config  database -d felix  -a

felix1 felix1 /u01/oracle/10.2.0/db_1

felix2 felix2 /u01/oracle/10.2.0/db_1

DB_UNIQUE_NAME: felix

DB_NAME: null

ORACLE_HOME: /u01/oracle/10.2.0/db_1

SPFILE: +DATA/felix/spfilefelix.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED, INST DISABLED ON felix1

 

[oracle@felix1 conf]$ srvctl enable  instance -d felix -i felix1

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197228.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Numeric Keypad

    Numeric Keypad题目描述Thenumberickeypadonyourmobilephonelookslikebelow:123456789 0 supposeyouareholdingyourmobilephonewithsinglehand.Yourthumbpointsatdigit1.Eachtimeyoucan1)press

  • idea2021永久激活码【2021.7最新】

    (idea2021永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html65MJGLILER-eyJsaWNlbnNlSWQi…

  • Windows和Linux下查看Apache、MySQL、PHP版本

    Windows和Linux下查看Apache、MySQL、PHP版本

  • Shiro框架基本知识及应用「建议收藏」

    Shiro框架基本知识及应用「建议收藏」1.Shiro基本知识1.目前市面主流的安全框架:shiro:轻量级的,使用很方便,灵活,是apache提供的,在任何框架的SpringSecurity:是Spring家族的一部分,很多项目中会使用spring全家桶,相对与shiro来说,springSecurity更重量级,必须要求spring环境;相对shiro而言,功能更强大2.什么是Shiro?Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功

  • 频谱分析仪知识_频谱分析仪

    频谱分析仪知识_频谱分析仪17年电赛的元器件清单下来了,基本仪器有频率特性测试仪,且13年国赛出现过,15年国赛也出现过频谱分析仪,知乎上有人猜测今年依然会出频域测量的题,这几天我就找了不少资料。了解了频谱分析仪和频率特性测试仪的原理。—————————————————————————————————————————————————————频谱分析仪     频谱分析仪主要用来分析信号中各频率成分。主要有多滤

  • 阿里系 imgcook(图片厨师) 一键将设计稿(PSD等类型文件)生成指定类型(Vue React Flutter js 微信小程序 支付宝小程序等)代码(JS+CSS)「建议收藏」

    阿里系 imgcook(图片厨师) 一键将设计稿(PSD等类型文件)生成指定类型(Vue React Flutter js 微信小程序 支付宝小程序等)代码(JS+CSS)「建议收藏」推荐一款工具,阿里系imgcook(图片厨师)一键将设计稿(PSD等类型文件)生成指定类型(VueReactFlutterjs微信小程序支付宝小程序等)代码(JS+CSS)官网:https://imgcook.taobao.org/页面:https://imgcook.taobao.org/editor#/?id=59545…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号