如何找出通过指定DB Link访问且被视图引用的数据库对象
找出视图中使用的DB Link关联对象列表
可以通过查询Oracle的数据字典视图获取目标列表,以下是两种实用方法:
方法1:通过依赖关系查询
利用ALL_DEPENDENCIES(有DBA权限改用DBA_DEPENDENCIES)关联视图信息,筛选依赖指定DB Link的远程对象:
SELECT DISTINCT d.referenced_owner AS remote_owner, d.referenced_name AS remote_object_name, d.referenced_type AS remote_object_type, v.view_name AS local_view_name FROM ALL_VIEWS v JOIN ALL_DEPENDENCIES d ON v.owner = d.owner AND v.view_name = d.name WHERE d.referenced_type = 'DATABASE LINK' AND d.referenced_name IN ('你的DB_LINK1名称', '你的DB_LINK2名称') AND d.type = 'VIEW';
方法2:通过视图定义文本匹配
直接解析视图的SQL定义,提取远程对象信息:
SELECT DISTINCT REGEXP_SUBSTR(v.text, '@(\w+)', 1, 1, NULL, 1) AS db_link_name, REGEXP_SUBSTR(v.text, '(\w+)\.(\w+)@', 1, 1, NULL, 1) AS remote_owner, REGEXP_SUBSTR(v.text, '(\w+)\.(\w+)@', 1, 1, NULL, 2) AS remote_object_name, v.view_name AS local_view_name FROM ALL_VIEWS v WHERE v.text LIKE '%@你的DB_LINK1名称%' OR v.text LIKE '%@你的DB_LINK2名称%';
注意事项
- 替换SQL中的DB Link名称为实际名称
remote_object_type会显示对象类型(TABLE、MATERIALIZED VIEW等)- 若仅需去重的远程对象列表,可去掉
local_view_name字段并保留DISTINCT
内容的提问来源于stack exchange,提问作者Rakesh valappil
相关产品推荐
相关产品推荐

