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

devtools/2025/2/4 17:55:15/

目录

前言

🤟 找工作,来万码优才:👉 #小程序://万码优才/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/devtools/156063.html

相关文章

Qt Creator 中使用 vcpkg

Qt Creator 中使用 vcpkg Qt Creator 是一个跨平台的轻量级 IDE,做 Qt 程序开发的同学们肯定对这个 IDE 都比较属于。这个 IDE 虽然没有 Visual Stdio 功能那么强,但是由于和 Qt 集成的比较深,用来开发 Qt 程序还是很顺手的。 早期&#xf…

实现网站内容快速被搜索引擎收录的方法

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/6.html 实现网站内容快速被搜索引擎收录,是网站运营和推广的重要目标之一。以下是一些有效的方法,可以帮助网站内容更快地被搜索引擎发现和收录: 一、确…

Java 网络原理 ③-NAT || DHCP

这里是Themberfue 上篇文章我们简单介绍了 IP 协议 的首部字段的含义,这节课我们将继续深入 IP 协议~~~ DHCP 上节课我们提到,IPv4 使用点分十进制的方式管理地址,但是 IPv4 最多分配43亿个地址,早在2019年,IPv4 的地…

Flink报错Caused by: java.io.FileNotFoundException: /home/wc.txt

当在提交一个flink任务报如下的错误时: Caused by: java.io.FileNotFoundException: /home/wc.txt (没有那个文件或目录)at java.io.FileInputStream.open0(Native Method)at java.io.FileInputStream.open(FileInputStream.java:195)at java.io.FileInputStream.&…

基于微信小程序的新闻资讯系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Java篇之继承

目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…

MySQL(3)

约束 概述 约束演示 外键约束 概念:约束是作用在表中字段上的规则,用于限制存储在表中的数据 目的:保证数据库中数据的正确,有效性和完整性 not null 非空约束 unique 唯一约束 primary key 主键约束 主键是一行数据的唯一…

使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书

使用 Docker Nginx Certbot 实现自动化管理 SSL 证书 在互联网安全环境日益重要的今天,为站点或应用部署 HTTPS 已经成为一种常态。然而,手动申请并续期证书既繁琐又容易出错。本文将以 Nginx Certbot 为示例,基于 Docker 容器来搭建一个…