- 浏览: 54582 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
说穿了其实user是控制权限的,而schema是个容器,非所有者要访问这个容器下的对象就需要在
对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过
alter session set current_schema=schema_name
来改变当前session的schema从而在访问对象时省去schema(owner);
最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。
--下面的话是puber OoNiceDream 发上来的一段非常经典形象的比喻。
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
SQL>
对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过
alter session set current_schema=schema_name
来改变当前session的schema从而在访问对象时省去schema(owner);
最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。
--下面的话是puber OoNiceDream 发上来的一段非常经典形象的比喻。
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
SQL>
发表评论
-
oracle 命令
2009-02-05 20:30 933一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1317在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 827优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1527Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 969创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 689移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1089--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 12881.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 807通过以下方法可以把Autotrace的权限授予Everyone ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2031今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2553在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2235说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11531.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2271概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1463--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 830分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1703在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3106对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 951深入分析Oracle数据库日志文件 作者:程永新 发文时间: ... -
oracle 介绍
2008-09-20 21:04 1093第二章 架构 ORACLE架构由3部分组成: 文件, 内存结 ...
相关推荐
在mysql中创建一个Schema和创建一个... 在sqlserver2000中,由于架构的原因,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,不过在sqlserver2005中这种架构被打破了,use
希望能够帮助到你。
JSON-Schema、GraphQL 和 Protobuf 是从 YAML 定义生成的,例如 id : User service : calls : - set : updatePassword resp : User input : UpdatePasswordParams params : UpdatePasswordRequest ...
Scim :: Kit Scim :: Kit是一个旨在简化SCIM Schema的生成和使用的库。 安装将此行添加到您的应用程序的Gemfile中: gem 'scim-kit' 然后执行: $ bundle或将其自己安装为: $ gem install scim-kit用法def user_...
图形保护器 此gem为提供了字段级授权。 内容 用法 定义一个GraphQL模式: ... where ( user_id : user_id ) end end # Define a schema class Schema < GraphQL :: Schema use GraphQL :: Execution :: Int
流利的json模式流利的API,可为Node.js...json-schema --save 或者yarn add fluent-json-schema用法const S = require ( 'fluent-json-schema' )const ROLES = { ADMIN : 'ADMIN' , USER : 'USER' ,}const schema = S
和声2 无人维护 模式对象 旨在对 Javascript 对象强制执行架构。 允许您通过一组属性指定值的类型、转换和验证。 包括对子模式的支持。 npm install schema-object bower install schema-object 包括 TypeScript ...
class UserSchema ( schema . Object ): version = schema . Version ( version = '1.0' ) username = schema . StringField ( required = True ) password = schema . StringField ( required = True , ta
数据库架构 在.json中创建的数据库模式
欢迎请求请求和问题。 npm install backbone-schema 用法 可以在浏览器或服务器中使用。 只需在您的项目中包含主干架构并在您的模型中定义schema属性。 有关更多信息,请参阅。 例子 有关更多示例,请参阅 。 ...
Pydantic-Django ...UserSchema . schema () 上面的模式调用将返回如下内容: { "title" : "UserSchema" , "description" : "A user of the application." , "type" : "object" , "properties
假设您有一个具有名称和拥有用户的模型项目: var ProjectSchema = mongoose . Schema ( { name : { type : String , required : true } , user : { type : mongoose . Schema . ObjectId , ref : 'user' ,...
:smiling_face_with_smiling_eyes:列示例让我们从一个基本示例开始:一个User模型将成为Pydantic模型的真实来源: # models.pyfrom sqlalchemy import Column , Integer , Stringfrom sqlalchemy . ext . ...
setEncryptionvar userSchema = new mongoose . Schema ( { username : String , password : { type : String , select : false }} )userSchema . plugin ( encryption , 'password' ) 作为独立模块 // Y
laravel-openapi-值对象 该库扩展了 。 主要思想是不手动创建方案: ... MediaType :: json ()-> schema ( UserSchema :: ref ()) ); } } 该库获取任何PHP类,并且架构是从类属性自动生成的。 您应该使用PHP
为您的 Sinatra 应用程序定义架构以验证请求和响应。 将其转储为 JSON 模式以帮助生成客户端等等! 用法 注册Sinatra::Schema来定义资源,例如: class MyApi < Sinatra :: Base register Sinatra :: Schema ...
npm install --save firestore-schema-validatorAPI文件用法模式与模型-简单示例// UserModel.jsconst { Model , schema , field } = require ( 'firestore-schema-validator' )const userSchema = schema ( { ...
dubbo_schema从dubbo-user-book爬下来的数据,我将数据存到了mysql数据当中,我转存了数据库结构和数据,只要将改文件导入数据库即可,之后自己可以写代码将数据导入到excel中
根据这些需求,可以抽象出以下实体和关系: 用户(User):包含用户ID、用户名、密码、邮箱、手机号等属性。 商品(Product):包含商品ID、商品名称、商品描述、价格、库存等属性。 订单(Order):包含订单ID、用户ID、...
SQL模式生成器 用于创建和更改SQL数据库表的扩展。 ... 这对于安装脚本,动态应用程序或CMS环境可能很有用。 当前支持并完全测试了MySQL,SQLite,PostgreSQL和SQL Server的驱动程序。... $ DBname , $ user , $ pass );