如何通过SQL识别Oracle数据库是否部署在OCI环境中
Oracle数据库部署环境识别方案
AWS RDS 识别方法
- 通过检查系统包
RDSADMIN是否存在来判定,执行以下SQL:
SELECT COUNT(*) FROM ALL_OBJECTS WHERE OWNER = 'RDSADMIN' AND OBJECT_TYPE = 'PACKAGE';
- 若返回结果大于0,即可判定为AWS RDS环境,版本后缀追加
(AWS)
OCI 自治数据库识别方法
提供两种可靠的SQL识别方式:
方式1:结合DBMS_CLOUD包与数据库版本标识
OCI自治数据库默认预装DBMS_CLOUD包,且数据库版本字段会带有专属标识:
-- 检查DBMS_CLOUD包是否存在 SELECT COUNT(*) FROM ALL_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'DBMS_CLOUD' AND OBJECT_TYPE = 'PACKAGE'; -- 查询数据库版本标识 SELECT EDITION FROM V$DATABASE;
- 当
DBMS_CLOUD存在,且V$DATABASE.EDITION包含ADW(自治数据仓库)或ATP(自治事务处理)时,判定为OCI环境,版本后缀追加(OCI)
方式2:通过主机名特征判断
OCI自治数据库的主机名固定带有oraclecloud.com后缀,执行以下SQL:
SELECT HOST_NAME FROM V$INSTANCE;
- 若返回的主机名包含
oraclecloud.com,即可判定为OCI环境
整体判断流程
- 先校验AWS RDS:检查
RDSADMIN包是否存在 - 再校验OCI自治数据库:使用上述任一方式验证
- 均不满足则判定为客户自有服务器,版本信息无后缀
内容的提问来源于stack exchange,提问作者marciel.deg
相关产品推荐
相关产品推荐

