设为首页 收藏本站
查看: 555|回复: 0

[经验分享] Oracle系列之三内置用户及相关概念

[复制链接]

尚未签到

发表于 2016-8-7 06:01:18 | 显示全部楼层 |阅读模式
   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 whereowner='TELLIX';
 
OWNER                         TABLE_NAME
------------------------------ ------------------------------
TELLIX                        TEST
 
这里我们把tellix用户的表授权给scott用户,则在scott用户下查询all_all_tables就可以查询出来信息。
   
    说到用户我们不免提到一个词:schema,很多地方说schema就是方案,有些资料中说是模式,呵呵,我认为我们没有必要非要使用汉语来解释,我们就说schema这个词,其实schema就是一个概念,我个人感觉应该这么说:一个用户以及这个用户下所有数据库的对象(如:用户的表,用户的存储过程,用户的函数,视图,同义词,序列等等)的一个统称,很多人问我:如何创建一个schema,schema是数据库对象吗?我认为不是呀,他其实是一个概念而已嘛,那么如何创建呢?我们其实创建一个用户的时候,一个Schema就存在了!我们平时说的schema名称就是用户名而已!
  说到这里有必要再罗嗦几句:很多人学习oracle之前可能已经了解了SQLServer了,在SQLServer企业管理器中我们非常容易就可以创建一个数据库,或者使用createdatabase命令就非常方便创建一个数据库,但是在Oracle中创建一个数据库不是一个简单的事情,在同一台服务器上尽管可以创建多个数据库,但是一般情况下只创建一个数据库。这个数据库地位非常高,那么如何区分不同“区域”的数据呢?使用用户,在同一个数据库中,不同用户之间不能相互访问数据(除非授权),这个概念sqlserver中也存在,只是在sqlserver中我们做项目第一件事是创建一个数据库;但是在oracle中我们做项目第一件事是创建一个用户,然后在赋予这个用户所需要的角色权限即可,顺便说一下,一个用户创建成功后至少需要connect,resource两个角色才能进行正常的CRUD操作。
   学习Oracle一定要在观念上与sqlserver区分开来。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253902-1-1.html 上篇帖子: C#调用ORACLE存储过程返回结果集及函数 下篇帖子: 对于表被锁起的操作[Oracle]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表