`
fudehai001
  • 浏览: 498728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入理解user和schema --oracle 数据库

阅读更多
前言:
user是控制权限的,而schema则是一个容器,非所有者如果需要访问这个容器下的对象就需要在对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过alter session set current_schema=schema_name来改变当前session的schema从而在访问对象时省去schema(owner);最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。

深入理解user和schema的区别:

user即Oracle中的用户,和所有系统的中用户概念类似,用户所持有的是系统的权限及资源;

而schema所涵盖的是各种对象,它包含了表、函数、包等等对象的“所在地”,并不包括对他们的权限控制。

好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。

你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。

这个时候,你可以看到别人房子里的家具(desc)。

如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。

至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,或者你是整个大厦(DB)的老大(DBA)。alter session set schema可以用来代替synonyms。

如果你想调用其他schema的对象(有权限的前提下),但并没有建synonym,同时又不想把其他schema名字放入代码中,就可以首先使用alter session set schema=<其他schema名字>。

--实例
SQL> connect /as sysdba
已连接。

SQL> revoke dba from xys,test;
revoke dba from xys,test
*
第 1 行出现错误:
ORA-01951: ROLE 'DBA' 未授予 'XYS'


SQL> revoke dba from test;

撤销成功。

SQL> connect xys/manager
已连接。
SQL> select table_name from user_tables;

未选定行

SQL> create table t(id int) ;

表已创建。

SQL> insert into t values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> connect test/test
已连接。
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
T
TT
SYS_TEMP_FBT

SQL> desc t
名称 是否为空? 类型
--------------- -------- -------------

ID NUMBER(38)

SQL> select * from t;

未选定行

SQL> show user
USER 为 "TEST"
SQL> select * from xys.t;
select * from xys.t
*
第 1 行出现错误:
ORA-00942: 表或视图不存在

SQL> alter session set current_schema=xys;

会话已更改。

SQL> show user
USER 为 "TEST"
SQL> select * from xys.t;
select * from xys.t
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> select * from t;
select * from t
*
第 1 行出现错误:
ORA-00942: 表或视图不存在

SQL> alter session set current_schema=TEST;

会话已更改。

SQL> select * from t;

未选定行

SQL> connect xys/manager
已连接。
SQL> grant select on t to test;

授权成功。

SQL> connect test/test
已连接。
SQL> select * from xys.t;

ID
----------
1

SQL> alter session set current_schema=xys;

会话已更改。

SQL> select * from t;

ID
----------
1
分享到:
评论

相关推荐

    oracle数据库体系结构之一【user和schema】

    Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、索引、同义词等等。 首先,从官方文档中...

    oracle中schema指的是什么意思

    在Oracle数据库中,Schema是一个非常重要的概念,它代表了数据库对象的集合,这些对象包括但不限于表格、视图、...理解Schema的概念对于管理和维护大型Oracle数据库至关重要,因为它有助于确保数据的安全性和隔离性。

    Oracle数据库巡检报告

    ### Oracle数据库巡检报告知识点...以上内容涵盖了Oracle数据库巡检报告中的主要检查项,通过对这些关键指标的定期监控与维护,可以有效预防和解决数据库运行过程中可能出现的各种问题,保障业务系统的稳定性和可靠性。

    oracle示例数据库OT_oracle数据库

    通过研究和实践这些脚本,你可以深入理解Oracle数据库的核心概念,例如SQL语言(包括DDL(数据定义语言)和DML(数据操纵语言))、数据库设计原则、安全性管理和性能优化。同时,还可以了解到如何备份和恢复数据,...

    SpringBoot整合Oracle数据库使用双数据源

    本文将详细讲解如何利用SpringBoot整合Oracle数据库实现双数据源的配置和使用,帮助开发者构建可扩展、高可用的应用系统。 首先,我们需要理解"双数据源"的概念。双数据源意味着应用程序可以同时访问两个不同的...

    解析Oracle数据库中的对象集合schema

    Oracle数据库中的对象集合Schema是数据库管理系统中的核心概念之一,它在数据库设计和管理中起着至关重要的作用。Schema可以理解为一个命名空间...深入理解和掌握这些概念,对于有效地使用和管理Oracle数据库至关重要。

    SSH连接Oracle数据库.txt

    ### SSH框架连接Oracle数据库的关键配置知识点 在基于Java 2 Platform, Enterprise Edition (J2EE) 的Web开发中,SSH(Struts + Spring + Hibernate)框架是常用的开发组合之一。SSH框架结合了Struts用于MVC(Model...

    oracle 数据库学习笔记(全)

    * Oracle 数据库的核心组件包括 Database、Instance、Schema 等。 二、数据类型 * Oracle 数据库支持多种数据类型,包括数字类型(Number)、字符类型(Char、Varchar2)、日期类型(Date)、二进制类型(Blob)等...

    Oracle数据库_实例_用户_表空间之间的关系.doc

    Oracle数据库是一种高度复杂的数据库管理系统,主要用于企业级数据管理和处理。与其他数据库系统不同,Oracle数据库中的“数据库”这一概念实际上指的是所有数据文件、控制文件、联机重做日志文件以及参数文件等物理...

    vcenter6.0采用oracle11g独立数据库

    为了实现这一点,我们需要在现有的一台服务器上安装Oracle数据库,并创建一个专门用于vCenter的数据表空间和用户。此外,vCenter Server本身也将部署在另一台独立的服务器上。 #### 二、准备工作 - **vCenter 6.0...

    oracle示例数据库OT,oracle示例数据库 hr,SQL

    本压缩包包含了一些Oracle示例数据库的相关脚本,主要用于学习和理解Oracle数据库的使用。 1. `ot_create_user.sql`: 这个文件很可能是创建一个名为"ot"用户的SQL脚本。在Oracle中,用户是数据库的访问者,每个用户...

    oracle hr schema

    Oracle HR Schema是一个经典的示例数据库,它主要用于演示和学习Oracle数据库在人力资源管理...通过搭建和使用这个schema,我们可以深入学习Oracle数据库的管理、查询以及性能调优等多个方面,提升我们的数据库技能。

    oracle10g-oracle11g的数据库迁移

    例如,使用以下命令可以将 smc 和 useradmin 两个 schema 的数据导出到 dump 文件中: expdp smc_yanshi/123qwe@orcl217 schemas=smc_yanshi dumpfile=smc.dmp DIRECTORY=data logfile=smc.log expdp useradmin_...

    Oracle 11g自带人事管理示例数据库(安装使用有详细说明)

    $ORACLE_HOME/demo/schema/human_resources/目录下。 2、在该目录下执行:sqlplus / as sysdba; 3、执行SQL&gt;@hr_main.sql创建HR数据库。 1、使用管理者system身份登录,登陆成功后输入 alter user hr identified by...

    Oracle数据库审计功能的安全审计获取技术.doc

    本文将深入探讨Oracle数据库的审计机制,以及如何有效地获取和分析这些审计信息。 一、Oracle数据库审计基础 Oracle数据库的审计功能主要通过两种方式实现:系统审计(System Auditing)和Fine-Grained Auditing...

    oracle数据库备份还原BAT脚本

    Oracle数据库是企业级广泛使用的数据库管理系统,为了确保数据的安全性和可恢复性,定期备份是非常重要的。在Windows环境中,我们可以利用批处理(BAT)文件来自动化这个过程,这大大提高了工作效率。"Oracle数据库...

    数据库oracle命令汇总、连接

    ### 数据库Oracle命令汇总与连接方法 #### 一、Oracle命令汇总 在Oracle数据库管理过程中,经常需要用到各种命令来执行日常任务,例如查询、更新、...这些知识点对于Oracle数据库的日常管理和维护具有重要的意义。

    mysql ,oracle 数据库命名规范

    5. **使用schema和owner**:Oracle数据库中,对象属于特定的schema或owner,所以完整的对象引用可能是`schema.object_name`。 6. **避免使用数字开头**:在Oracle中,以数字开头的名称是不允许的。 7. **同样提倡...

    Oracle数据库日常维护手册.pdf

    ### Oracle数据库日常维护手册知识点概览 #### 一、检查数据库基本状况 ##### 1.1 检查Oracle实例状态 - **SQL命令**: 使用`SELECT instance_name, host_name, startup_time, status, database_status FROM v$...

    3306π成都站-深入数据库同步技术研究-许增伟@点融网1

    Oracle的用户表列信息可以通过`user_tab_columns`查询,而MySQL则依赖于`information_schema.columns`来获取。在数据迁移过程中,确保字段类型的正确映射至关重要,因为不匹配的类型可能导致数据丢失或错误。 其次...

Global site tag (gtag.js) - Google Analytics