Oracle中如何区别用户和模式

Oracle用户是Oracle数据库中的重要概念,下面就为您介绍Oracle用户和模式的区别,希望对您学习Oracle用户方面能够有所帮助。推荐学习教程尚硅谷oracle视频教程


(一)什么Oracle叫用户(user)
A user is a name defined in the database that can connect to and access objects.
Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。

(二)什么叫模式(schema)
A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。
(把数据库对象用模式分开成不同的逻辑结构)。

(三)用户(user)与模式(schema)的区别:
Schemas and users help database administrators manage database security.
用户是用来连接数据库对象。而模式用是用创建管理对象的。模式跟用户在oracle 是一对一的关系。
( 不过db2却不同,db2 一个用户可以对应多个模式,db2 用户是系统,他首先必须获得系统用户才能成为数据库用户,也就是数据库用户就是系统用户,只有模式才是数据库类似用户。有兴趣可以去研究。这里就不跑题了,这也是db2特有的)。

从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多
类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views,
sequences, stored procedures, synonyms, indexes, clusters, and database
links。一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看
到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决
(Oracle中虽然有create
schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省
shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一
对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于
哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过
select * from emp; 其实,这sql语句的完整写法为select * from
scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象
的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创
建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

更多数据库教程知识可登陆e良师益友网学习。

时间: 2024-10-08 23:59:41

Oracle中如何区别用户和模式的相关文章

oracle中查看当前用户的表结构、主键、索引

1.查询表的所有列及其属性 select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表 2.查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user

用oracle中的系统用户无法登陆问题解决方案

在使用oracle中的sql plus功能时, 会出现系统用户无法登陆 因为SYS是数据库之外的超级管理员,在输入密码时,输入 密码 as sysdba 就可以;

oracle中实现某个用户truncate 其它用户下的表

oracle文档中对truncate权限的要求是需要某表在当前登录的用户下,或者当前登录的用户有drop any table的权限. 但是如果不满足第一个条件的情况下,要让某用户满足第二个条件就导致权限过大了. 参考网上的讨论,可以使用存储过程来时间. 例如有两个用户 u1,u2,u1下有表 test1a 现在想要实现u2能 truncate u1下的表 test1a. 可以使用用户u1创建存储过程, create procedure u1.stgtruncate(table_name in v

oracle中怎样查询用户权限

      数据字典视图的种类分别为:USER,ALL 和 DBA. USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息 ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上 其他用户创建的对象但该用户有权访问的信息 DBA_*:有关整个数据库中对象的信息 (这里的*可以为TABLES,INDEXES,OBJECTS,USERS等.) 1.查看所有用户 select * from dba_user; select * from all_users; select

oracle 中查询当前用户可以看到的表名、表对应的所有字段 原

转自:https://my.oschina.net/u/3783799/blog/2870207 1.oracle 查询当前用户下的表名,表注释 select t.table_name, f.comments  from user_tables t inner join user_tab_comments f    on t.table_name = f.table_name 2.oracle 查询某表的所有字段,字段注释,字段类型 SELECT a.TABLE_NAME, a.COLUMN_N

linux下Oracle中创建Scott用户

#实验环境:   #Linux 5.4 #Oracle 11g r2   #创建Scott的操作过程: su – oracle vi  $ORACLE_HOME/rdbms/admin/utlsampl.sql #把 DROP USER SCOTT CASCADE这一行注释了,在前面加上 -- #然后在DROP USER BLAKE CASCADE;下面加上CREATE USER SCOTT; #保存退出   #然后 #还是在oracle下   sqlplus / as sysdba @/u01

oracle中创建一个用户,只能查看指定的视图,如何授权

1.create user A identified by Apassword,创建用户,用户名是A,密码是Apassword2.grant connect to A --授予connect权限3.grant select on test to A --给指定用户的表或者视图授予select(只读)权限,其中test是表名 注意:1.如果是以普通用户(jtg1)身份登录,并创建的用户,查询时要 select * from jtg1.test才能查询出来 2.以管理员身份登录的创建的用户,应该前面

Oracle中强行断开用户连接的方法

版权声明:本文为博主原创文章,未经博主允许不得转载. 首先查找目标用户的当前进程,注意是serial#而不是serial,网上有的介绍漏掉了#: select sid,serial# from v$session where username='ERP'; 使用此语句会返回一个进程列表,每行有两个数字,然后用数字替代下面的sid和serial alter system kill session 'sid,serial'; 例如 alter system kill session '222,123

Oracle中添加新用户并赋予权限

--创建一个新用户NewUser 并设置密码为1 create user NewUser identified by 1; --为该用户赋予权限 grant connect , Resource to NewUser;