oracle自带的数据字典,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区分开来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值