如何在emcli list命令中指定多个目标类型的搜索条件?
使用EMCLI查询Targets资源时合并搜索条件的方法
问题场景
尝试用emcli list命令查询Targets资源时,单独指定TARGET_TYPE='oracle_database'或TARGET_TYPE='oracle_pdb'都能返回预期结果,但添加两个-search参数会返回0行;使用-search="TARGET_TYPE like 'oracle_%'"又会获取超出数据库目标范围的资源,需要将两个搜索条件合并为一个精准匹配的查询。
单个目标类型查询的正确命令
- 查询Oracle数据库实例:
emcli list -resource="Targets" \ -bind="TargetType='oracle_database'" \ -columns="TARGET_NAME:20,TARGET_TYPE:20" \ -search="TARGET_TYPE='oracle_database'"
- 查询Oracle PDB:
emcli list -resource="Targets" \ -bind="TargetType='oracle_database'" \ -columns="TARGET_NAME:20,TARGET_TYPE:20" \ -search="TARGET_TYPE='oracle_pdb'"
错误的多参数用法
使用两个-search参数会导致逻辑冲突(等同于TARGET_TYPE='oracle_database' AND TARGET_TYPE='oracle_pdb',没有目标能同时满足),因此返回0行:
emcli list -resource="Targets" \ -bind="TargetType='oracle_database'" \ -columns="TARGET_NAME:20,TARGET_TYPE:20" \ -search="TARGET_TYPE='oracle_database'" \ -search="TARGET_TYPE='oracle_pdb'"
解决方案:使用IN操作符合并条件
EMCLI的-search参数支持SQL风格的IN操作符,可一次性指定多个目标类型,实现精准匹配:
emcli list -resource="Targets" \ -columns="TARGET_NAME:20,TARGET_TYPE:20" \ -search="TARGET_TYPE IN ('oracle_database', 'oracle_pdb')"
说明:原命令中的-bind参数在此场景下无需保留,因为搜索条件已明确指定目标类型;若业务场景需要绑定变量,也可调整为绑定包含多个值的变量,但直接使用IN更简洁高效。
内容的提问来源于stack exchange,提问作者user13708337
相关产品推荐
相关产品推荐

