IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle数据库各用户间表访问 -> 正文阅读

[大数据]Oracle数据库各用户间表访问

Oracle数据库有一个用户的概念,我把不同的用户理解为不同的库。

简单来说,我把交易库称为TRADE用户,我把客户管理的库成为ACCOUNT用户。

正常情况下,每个用户访问自己对应的表,但是当需要跨用户访问时,我们就有三个选择。

一.交易库赋予客户库查询交易表权限,我们称之为授权,关键字为grant。

现在我们模拟从A用户,把ableName的操作权限赋予B用户,以下授权语句应该在A库执行。

1. SELECT * FROM? dba_users; --查询数据库中的所有用户

2.GRANT SELECT ON tableName to B;--授权查询(将表tableName的查询权授给B)

GRANT?INSERT ON tableName to B;--授权插入(将表tableName的插入权授给B)

GRANT?UPDATE ON tableName to B;--授权更新(将表tableName的更新权授给B)

GRANT UPDATE ON tableName to Bwith grant option; --授权更新权限转移给用户,被用户可以继续授权给其他用户;

GRANT EXECUTE? ON ProceDureName?to B;--授权存储过程

3.Revoke select on tableName from B; --收回查询表的权限;

Revoke all on tableName from B;--收回表tableName 的所有权限;

4.SELECT? * from dba_tab_privs where grantee=upper('DC_CH');--查询一个用户被赋予的对象权限

SELECT * from dba_sys_privs where grantee=upper('DC_CH');--查询一个用户拥有的系统权限

SELECT*? from session_privs ;--当前会话有效的系统权限

这样,我们直接就可以从B用户操作A用户的tableName这张表了,对应的语句为

SELECT * from A.tableName;

UPDATE?A.tableName set...等等

二.把操作粒度变大一点,使B用户像操作自己的表一样操作A用户中的表,引入同义词这个概念

同义词的好处

1、不占内存空间,节省大量的数据库空间

2、简化了数据库对象的访问

3、提高了数据库对象访问的安全性

4、扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接

1.在A用户中建立私有同义词

CREATE SYNONYM TB FOR tableName;

这样SELECT * FROM TB=?SELECT * FROM?tableName.??

假设我们已经把这张表的不同权限授予了B用户,那么我们可以从B中以SELECT * FROM A.TB的形式访问到tableName。

2.在A用户中建立共有同义词

CREATE PUBLIC SYNONYM TB FOR tableName;

这样这个库下的所有用户都能直接以SELECT * FROM TB的方式访问tableName。

--?删除公有同义词:
drop?public?synonym?TB ;

--?删除私有同义词:
drop?synonym?TB ;

三.粒度更大一点,B用户可以操作A用户下面全部的表,引入DB Link。

1.通过界面化工具建立数据库连接。

2.通过SQL语句建立数据库连接

? create database link DS
? connect to DS_CH identified by ds
? using '192.168.1.244/orch';

从B用户访问A用户的表的方式为 SELECT * FROM TB@A.

这样三种库用户访问的方式就介绍完了,至于如何取舍,还是根据实际情况来决定。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:38:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:08:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码