Oracle系列之三内置用户及相关概念

    Oracle安装过程中系统提示我们需要修改2个用户的密码,sys,system他们的默认密码是:sys/change_on_install,system/manager;那么这两个用户的权限是什么呢?
    SYS和SYSTEM 是每个ORACLE 数据库系统缺省安装的两个帐户。SYS 是所有内部数据库表、结构、过程包、等拥有者,此外它还拥有 V$ 和数据字典视图,并创建所有封装的数据库角色(DBA,CONNECT,RESOURCE等)。 Sys是一个唯一能访问特定内部数据字典的用户。System 也是在安装ORACLE 时创建的用户,用于 DBA 任务的管理。
    这里有2个概念我们需要明白:
    1.V$指的是什么:以V$开头的表我们称为系统性能表,记录oracle运行过程中的信息,是保存在内存中的,我们可以查看。
    2.数据字典视图:数据字典就是数据字典,与视图有什么关系?数据字典我们知道是系统维护的,我们不能进行操作,理论上不能查看,但是不能查看又对用户不公平,因此系统提供了视图的形式供我们查看,这样我们就可以使用标准的select语句进行数据的查看了,就相当于SQLServer中的系统表。那么在Oracle中存在3类数据字典视图分别是以“alL_”,“dba_”,“user_”开头进行命名,这三类视图有什么区别呢?是不是权限的问题呀?提起权限我们就有点头大,可以这么说:

user_开头的视图表示这个视图中只存储当前用户的信息,如:
SQL> conn scott/tiger
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as scott
 
SQL> select table_name from user_all_tables;
 
TABLE_NAME
------------------------------
BONUS
DEPT
EMP
SALGRADE
 
表示该用户拥有4张表。

前缀为DBA_的数据字典视图,包含了数据库拥有的所有对象和权限的信息。

前缀为ALL_的数据字典视图,包含了用户当前可以访问的全部对象和权限的信息,该对象也许是其他用户授权的。比如说:

SQL> conn sys/kdk as sysdba
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as SYS
 
SQL> CREATE USER tellix identified by stephen;--创建用户命令

SQL> grant connect to tellixu;--授权

SQL> grant resources to tellix;-- 授权

 
SQL> conn tellix/stephen;
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as tellix
 
SQL> create table test
  2  (
  3  a number(4),
  4  b varchar2(20)
  5  );
 
Table created

SQL> grant all on test to scott;

SQL> conn scott/tiger;
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as scott

SQL> select OWNER,TABLE_NAME from all_all_tables where owner='TELLIX';
 
OWNER                          TABLE_NAME
------------------------------ ------------------------------
TELLIX                         TEST
 
这里我们把tellix用户的表授权给scott用户,则在scott用户下查询all_all_tables就可以查询出来信息。
   
     说到用户我们不免提到一个词:schema,很多地方说schema就是方案,有些资料中说是模式,呵呵,我认为我们没有必要非要使用汉语来解释,我们就说schema这个词,其实schema就是一个概念,我个人感觉应该这么说:一个用户以及这个用户下所有数据库的对象(如:用户的表,用户的存储过程,用户的函数,视图,同义词,序列等等)的一个统称,很多人问我:如何创建一个schema,schema是数据库对象吗?我认为不是呀,他其实是一个概念而已嘛,那么如何创建呢?我们其实创建一个用户的时候,一个Schema就存在了!我们平时说的schema名称就是用户名而已!

     说到这里有必要再罗嗦几句:很多人学习oracle之前可能已经了解了SQLServer了,在SQLServer企业管理器中我们非常容易就可以创建一个数据库,或者使用create database命令就非常方便创建一个数据库,但是在Oracle中创建一个数据库不是一个简单的事情,在同一台服务器上尽管可以创建多个数据库,但是一般情况下只创建一个数据库。这个数据库地位非常高,那么如何区分不同“区域”的数据呢?使用用户,在同一个数据库中,不同用户之间不能相互访问数据(除非授权),这个概念sqlserver中也存在,只是在sqlserver中我们做项目第一件事是创建一个数据库;但是在oracle中我们做项目第一件事是创建一个用户,然后在赋予这个用户所需要的角色权限即可,顺便说一下,一个用户创建成功后至少需要connect,resource两个角色才能进行正常的CRUD操作。
    学习Oracle一定要在观念上与sqlserver区分开来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值