前言:
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_HOME/demo/schema/human_resources/目录下。 2、在该目录下执行:sqlplus / as sysdba; 3、执行SQL>@hr_main.sql创建HR数据库。 1、使用管理者system身份登录,登陆成功后输入 alter user hr identified by...
文件:ot_create_user.sql - 用于创建OT用户和授予权限。文件:ot_schema.sql - 用于创建数据库对象,如表,约束等文件:ot_data.sql - 用于将数据加载到表中。文件:ot_drop.sql - 用于删除示例数据库中的所有对象...
在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如...
用于创建和更改SQL数据库表的扩展。 该插件为PHP Fat-Free Framework提供了一个SQL表模式构建器。 这对于安装脚本,动态应用程序或CMS环境可能很有用。 当前支持并完全测试了MySQL,SQLite,PostgreSQL和SQL ...
数据库大作业/家庭保健信息系统/Home-Healthcare Information System/This assignment is to perform the logic design of an information system. It involves the construction of a DFD, an ER diagram, mapping ...
本软件是一款 Oracle 客户端工具 - 专用于 Oracle 数据库操作: 多线程、多连接、智能/彩色SQL编辑器、中英文双语界面并能切换、支持 PL/SQL、批量SQL运行、高效的块操作、方便的表格操作,不需要安装 Oracle ...
目前对于Oracle、达梦数据库,仍然需要修改Nacos2.2的主分支代码,因为要兼容默认的命名空间ID为空的查询情况,社区官网未处理。 最近有时间,将进行Nacos主分支源码上关于Nacos的Oracle的兼容性适配,目前可以用...
第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24 §1.2.2 数据字典概念 25 §1.3 ...
Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...
数据库导出路径为oracle数据库备份/导入设置路径:E:\app\Hejiah\admin\orcl\dpdump exp username/password@sid file=d:\exp.dmp full=y imp wenhb/1@orcl file=D:\app\Hejiah\admin\orcl\dpdump\wenhb.dmp full=y ...
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 拉里•埃里森 就业前景 从就业与择业的...
看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。 我们先来看一下他们的定义: A schema is a collection of database objects (used by a user.). Schema objects are the ...
数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...
Oracle SQL Handler,是专为 Oracle 数据库开发人员及操作人员精心打造的一款 Oracle 客户端工具 : 超智能的SQL编辑器;超方便的表格操作(可以通过修改表格的单元格数据去更新数据库表 );多种格式的数据导出包括...
TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同) ROWS=Y INDEXES=Y GRANTS=Y CONSTRAINTS=Y BUFFER=409600 file==/backup/ctgpc_20030623.dmp log==/backup/...
1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。例如:假设我们做exp时导出的为test的对象,现在我们想把对象导入用户: imp userid=test1/test1 file=expdat.dmp fromuser=test1 to...
Oracle SQL Handler,是专为 Oracle 数据库开发人员及操作人员精心打造的一款 Oracle 客户端工具: 超智能的SQL编辑器;超方便的表格操作(可以通过修改表格的单元格数据去更新数据 库表);多种格式的数据导出包括...
+++++++++++++++++++[doroodo_defult.properties]中几个需要改的部分+++++++++++++++++++ hibernate.default_schema=doroodo ---->mysql中指到数据库名,sqlserver中指到数据库所有者,如dbo jdbc.url=jdbc:mysql://...
Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...