- 浏览: 56785 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
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 1010一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1344在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 888优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1570Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 1008创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 735移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1168--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 13311.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 845通过以下方法可以把Autotrace的权限授予Everyone ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2100今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2631在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2271说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11911.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2330概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1528--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 926分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1762在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3143对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 999深入分析Oracle数据库日志文件 作者:程永新 发文时间: ... -
oracle 介绍
2008-09-20 21:04 1159第二章 架构 ORACLE架构由3部分组成: 文件, 内存结 ...
相关推荐
Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、索引、同义词等等。 首先,从官方文档中...
在Laravel框架中,`SchemaBuilder`是一个强大的工具,它允许开发者轻松地操作数据库表的结构,包括创建、修改和删除表。`SchemaBuilder`是Laravel Eloquent ORM(对象关系映射)的一部分,提供了简洁的PHP API来处理...
在Laravel框架中,`laravel-schema`是一个关键组件,主要负责数据库的迁移和构建。这个组件是Laravel ORM(对象关系映射)Eloquent的一部分,使得开发者能够以一种更加优雅和简洁的方式来处理数据库操作。下面我们将...
在Laravel框架中,`Schema Builder`是用于创建和管理数据库表结构的强大工具。它提供了一种简洁的、面向对象的方式来构建和修改数据库模式。在本篇内容中,我们将深入探讨`Schema Build`的使用方法,以及如何将其...
Java Bean转换为Json Schema是一种常见的数据转换操作,特别是在开发基于RESTful API的Web服务时,因为JSON Schema提供了数据验证和文档化的功能。Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO...
- **描述现有数据格式**:JSON Schema允许开发者明确指定JSON文档中数据的格式和结构。 - **人类和机器可读的文档**:JSON Schema文档既可以直接阅读理解,也便于程序解析。 - **完整的结构验证**:JSON Schema支持...
在mysql中创建一个Schema和创建一个... 在sqlserver2000中,由于架构的原因,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,不过在sqlserver2005中这种架构被打破了,use
这是因为Schema的创建直接影响到数据库结构的安全性和完整性,因此系统限制了只有具有足够权限的用户才能执行此类操作。 #### SQL代码示例 显式创建Schema的基本语法如下所示: ```sql CREATE SCHEMA <name> ...
var userSchema = Schema({ name: String, age: Number, email: String.match(/^.+@.+\..+$/) }); // 验证数据 var user = {name: 'Alice', age: 25, email: 'alice@example.com'}; try { userSchema.validate...
`laravel-schema`允许开发者轻松地创建、修改和管理数据库表结构。Laravel是一个优雅且强大的PHP web应用框架,它为开发者提供了丰富的工具来简化Web应用的开发过程。 1. **Database Connections** Laravel支持...
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_...
在Oracle数据库中,Schema是一个非常重要的概念,它代表了数据库对象的集合,这些对象包括但不限于表格、视图、序列、存储过程、同义词、索引、簇和数据库链接等。Schema是逻辑结构,直接与数据库的数据相关,帮助...
图形保护器 此gem为提供了字段级授权。 内容 用法 定义一个GraphQL模式: ... where ( user_id : user_id ) end end # Define a schema class Schema < GraphQL :: Schema use GraphQL :: Execution :: Int
通过查询`information_schema`,用户可以方便地获取到关于数据库对象的各种属性和状态信息,这对于开发人员和DBA来说非常有用。 #### 二、information_schema的作用 1. **权限管理**:`information_schema`提供了...
例如,如果我们有一个User类,我们可以创建一个UserSchema如下: ```python from marshmallow import Schema, fields class User: def __init__(self, name, email): self.name = name self.email = email ...
在IT行业中,自定义Schema的使用是一个非常关键的技能,特别是在大数据处理、消息队列(MQ)和数据集成等领域。本文将围绕“自定义schema使用”这一主题,结合标签“源码”和“工具”,深入探讨如何在实际项目中进行...
在 SQL Server2000 中,由于架构的原因,User 和 Schema 总有一层隐含的关系,让我们很少意识到其实 User 和 Schema 是两种完全不同的概念。不过在 SQL Server2005 中这种架构被打破了,User 和 Schema 也被分开了。...
在这个例子中,我们定义了一个UserSchema,然后尝试用一个包含字符串年龄的字典去验证它,这将导致一个`ValueError`,因为年龄应该是一个整数。 **总结** `marrow.schema-1.0.0.tar.gz` 包含的`marrow.schema` 库...
例如,假设有一个 API 需要接收包含 `city`(字符串)、`number`(数字)和 `user`(对象,包含 `name` 和 `age` 两个字段)的数据。JSON Schema 可以定义这样的数据模型,清晰地规定每个字段的类型和结构。 4. **...