解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作

embedded/2025/2/1 20:17:37/

目录

前言

🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF

1. ALL_SYNONYMS 视图

在 Oracle 数据库中,同义词(Synonym)是对数据库对象(如表、视图、存储过程等)创建的别名

使用同义词可以简化 SQL 语句,使用户无需使用完整的对象路径
例如,如果 USER_A 拥有表 TABLE_A,但 USER_B 也需要访问它,创建一个同义词 TABLE_A 允许 USER_B 直接查询,而无需写 USER_A.TABLE_A

ALL_SYNONYMS 视图存储了当前用户可以访问的所有同义词的信息,包括公有(PUBLIC)同义词和用户私有(PRIVATE)同义词
其典型用途是:

  1. 查找某个对象是否有对应的同义词
  2. 确定同义词实际指向的对象
  3. 排查数据库对象访问权限问题

ALL_SYNONYMS 视图的主要列如下:

列名数据类型说明
OWNERVARCHAR2同义词的拥有者(创建该同义词的用户)
SYNONYM_NAMEVARCHAR2同义词的名称
TABLE_OWNERVARCHAR2实际对象的拥有者(目标对象所在用户)
TABLE_NAMEVARCHAR2实际数据库对象的名称
DB_LINKVARCHAR2如果是远程数据库对象,则指向数据库链接
SELECT * FROM all_synonyms WHERE synonym_name = '表名';

作用:查找是否存在名为 表名 的同义词,并查看它指向的具体对象

基本截图如下:

在这里插入图片描述

2. ALL_VIEWS 视图

视图是基于 SQL 查询逻辑创建的虚拟表,它不存储数据,而是提供对基础表的动态访问
ALL_VIEWS 视图存储了当前用户可以访问的所有视图的信息

视图的作用包括:

  1. 供数据访问的抽象层,简化复杂 SQL 查询
  2. 制访问权限,只暴露部分数据
  3. 现数据整合,将多个表的信息整合到一个视图

ALL_VIEWS 视图的主要列如下:

列名数据类型说明
OWNERVARCHAR2视图的拥有者(创建该视图的用户)
VIEW_NAMEVARCHAR2视图的名称
TEXT_LENGTHNUMBER视图定义 SQL 语句的长度
TEXTCLOB视图的 SQL 定义(通常存储在 CLOB 中)
SELECT * FROM all_views WHERE view_name = '视图名';

作用:查找是否存在名为 视图名 的视图,并查看其定义

示例结果:

OWNERVIEW_NAMETEXT_LENGTHTEXT
HRC_CY_AREA120SELECT EMP_ID, EMP_NAME FROM EMPLOYEES

C_CY_AREA 是 HR 用户下的一个视图
它的 SQL 逻辑是 SELECT EMP_ID, EMP_NAME FROM EMPLOYEES,即只返回 EMPLOYEES 表的 EMP_ID 和 EMP_NAME 列

3. 扩展

  1. ALL_SYNONYMS 用于查找数据库中的同义词,并查看它们指向的具体对象
  2. ALL_VIEWS 用于查找数据库中的视图,并查看其 SQL 逻辑
  3. 同义词主要用于简化访问,而视图用于数据抽象和权限控制
  4. 通过 DBMS_METADATA.GET_DDL 可以获取视图的完整 SQL 逻辑
  5. 维护数据库时,合理使用同义词和视图可以提高 SQL 可读性和安全性

如果想修改 C_CY_AREA 同义词指向的对象,需要先删除,再重新创建:(C_CY_AREA 表名)

DROP SYNONYM C_CY_AREA;
CREATE SYNONYM C_CY_AREA FOR NEW_SCHEMA.NEW_TABLE;

如何检查视图的 SQL 逻辑?
如果视图的 SQL 语句较长,使用 DBMS_METADATA.GET_DDL 可以更清晰地查看:

SELECT DBMS_METADATA.GET_DDL('VIEW', 'C_CY_AREA', 'HR') FROM DUAL;

如何查看某个用户创建的所有视图

SELECT view_name FROM all_views WHERE owner = 'HR';

如何查看数据库中的所有公有同义词?

SELECT * FROM all_synonyms WHERE owner = 'PUBLIC';

http://www.ppmy.cn/embedded/158720.html

相关文章

Vue.js 比较 Composition API 和 Options API

Vue.js 比较 Composition API 和 Options API 今天我们来聊聊 Vue.js 中的两种编写组件的方式:Options API 和 Composition API。如果你对这两者的区别感到困惑,或者不知道在什么情况下选择哪种方式,那么这篇文章将为你解答。 Options API …

基于Python的人工智能患者风险评估预测模型构建与应用研究(上)

一、引言 1.1 研究目标与内容 本研究旨在运用 Python 语言,整合多种人工智能技术,构建高精度、高可靠性且具有良好可解释性的患者风险评估预测模型,为医疗领域的临床决策提供强有力的支持。具体研究内容涵盖以下几个方面: 人工智能技术在风险评估中的应用研究:深入剖析机…

深度学习指标可视化案例

TensorBoard 代码案例:from torch.utils.tensorboard import SummaryWriter import torch import torchvision from torchvision import datasets, transforms# 设置TensorBoard日志路径 writer SummaryWriter(runs/mnist)# 加载数据集 transform transforms.Comp…

Elasticsearch:如何搜索含有复合词的语言

作者:来自 Elastic Peter Straer 复合词在文本分析和标记过程中给搜索引擎带来挑战,因为它们会掩盖词语成分之间的有意义的联系。连字分解器标记过滤器等工具可以通过解构复合词来帮助解决这些问题。 德语以其长复合词而闻名:Rindfleischetik…

AI 的安全性与合规性:实践中的最佳安全策略

随着人工智能(AI)技术的不断进步,越来越多的企业将其应用于实际业务场景。然而,AI 系统的使用也伴随着安全性和合规性方面的挑战。特别是当 AI 模型处理敏感数据时,如何确保数据的安全、隐私保护、以及防止滥用成为企业…

Zookeeper入门部署(单点与集群)

本篇文章基于docker方式部署zookeeper集群,请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长&#xf…

Day52:range()函数

在 Python 中,range() 是一个内置函数,用于生成一系列数字,通常用于循环结构中。它非常适合用于生成指定范围内的整数序列,并且支持步长控制,常用于 for 循环中。 今天我们将学习如何使用 range() 函数,并…

Elastic Cloud Serverless 获得主要合规认证

作者:来自 Elastic Oliver Mao 我们很高兴地宣布,Elastic Cloud Serverless 已获得多项重要的合规性认证。这一里程碑加强了我们对安全性、隐私性和法规遵从性的承诺。Elastic Cloud Serverless 现已通过以下行业领先框架的审核或认证:SOC 2 …