system sys,sysoper sysdba 的区别

--=====================================

-- system sys,sysoper sysdba 的区别

--=====================================

Oracle 中sys,system帐户以及登陆时的normal,sysoper,sysdba是经常容易混淆的几个概念,下面详细讲述了

这几个的区别。

一、sys,system帐户

当Oracle 数据库安装完毕后,系统会自动创建两个帐户如下:

sys :缺省密码为CHANGE_ON_INSTALL ,且被授予DBA角色

system :缺省密码为MANAGER,且被授予DBA角色

下面具体描述sys与system帐户

sys :这个帐户相当于SQL server中的sa帐户,或者说Xp系统中的administrator,或Linux系统中的root帐户 ,是个超级帐户,拥有的

权限最大,可以完成数据库的所有管理任务。Oracle中全部的基表,视图等都是以sys架构存储在数据字典中,类似于SQL server中

的master数据库,存储了所有最原始最基本最关键的系统结构,数据等。因此所有以sys架构的对象不允许用户或数据库管理员修改

,也不建议创建sys架构的对象。

system :该帐户除了不能完成备份恢复,以及升级之外的数据库所有管理任务,通常用来创建一些用于查看管理信息的表或视图,以及

一些被不同Oracle数据库选项和工具使用的内部表或内部视图。同样也不建议使用system架构来创建一些与管理无关的表或视图。

--如下使用system连接rman时提示权限不够,而sys帐户则可以正常连接

RMAN> connect target system/redhat@orcl --使用system帐户连接失败

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

ORA-01031: insufficient privileges

RMAN> connect target sys/redhat@orcl --使用sys帐户连接成功

connected to target database: ORCL (DBID=1261365217)

注:sys与system两个帐户都属于dba角色,但是两者拥有不同的权限,sys拥有更多的权限。

system@ORCL> grant sysoper to usr1; --对于特殊权限system不能够授予用户

grant sysoper to usr1

*

ERROR at line 1:

ORA-01031: insufficient privileges

system@ORCL> conn / as sysdba

Connected.

sys@ORCL> grant sysoper to usr1; --sys用户则可以完成上面的授权操作

Grant succeeded.

二、Sysoper Sysdba

sysoper权限能够执行下列操作

startup

shutdown

create spfile

alter database [mount | open | close | dismount]

alter [database | tablespace] [begin | end] backup

alter database recover

restricted session

sysdba权限

除了能执行上述所有命令之外,还能创建数据库,删除数据库,数据库日志归档,执行不完全恢复,

以及创建其它的sysoper和sysdba用户

SQL> select * from system_privilege_map where name like '%SYS%';

PRIVILEGE NAME PROPERTY

---------- ---------------------------------------- ----------

-3 ALTER SYSTEM 0

-4 AUDIT SYSTEM 0

-83 SYSDBA 0

-84 SYSOPER 0

下面的链接是两者不同的权限说明

http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/dba.htm#sthref137

The manner in which you are authorized to use these privileges depends upon the method of

authentication that you use.When you connect with SYSDBA or SYSOPER privileges, you connect with

a default schema, not with the schema that is generally associated with your username. For

SYSDBA this schema is SYS; for SYSOPER the schema is PUBLIC.

--两者的schema不同

SQL> show user

USER is "SYS"

SQL> conn / as sysoper

Connected.

SQL> show user

USER is "PUBLIC"

在使用OEM登陆时,还有一种登陆时角色的选择则是normal,这个是对所有普通用户而言,登陆后其schema是自身

--查看密码文件视图,可以得到哪些用户为sysdba,哪些用户为sysoper

SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP

------------------------------ ----- -----

SYS TRUE TRUE

SCOTT TRUE FALSE

USR1 FALSE TRUE

--下面演示了使用不同的角色来登陆

SQL> conn scott/tiger@orcl as sysdba

Connected.

SQL> show user; --尽管登陆的帐户是scott,但执行show user显示的是sys

USER is "SYS"

SQL> conn scott/tiger@orcl as sysoper /*scott的sysop列为false*/

ERROR:

ORA-01031: insufficient privileges

Warning: You are no longer connected to ORACLE.

SQL> conn usr1/usr1@orcl as sysdba

ERROR:

ORA-01031: insufficient privileges

SQL> conn usr1/usr1 as sysoper

Connected.

SQL> show user; --登陆的帐户是usr1,执行show user显示的是public

USER is "PUBLIC"

sys@ORCL> select * from dba_roles where role like 'SYS%'; --不存在这两个角色

no rows selected

--下面演示sysdba与sysoper都可以用来启动数据库

idle> conn scott/tiger as sysdba

Connected to an idle instance.

idle> startup

idle> conn usr1/usr1 as sysoper

Connected to an idle instance.

idle> startup

总结:

sysoper与sysdba不是角色,DBA角色也不包含这两种权限。

这是两种用于完成数据库管理任务的特殊权限,如数据库创建,实例启动、关闭等

这两个权限独立于数据库之外,位于数据库密码文件之中,属于密码认证范畴

通常在启动数据库时使用的场合较多,当然也可以以这两种方式连接数据库

连接数据库时使用sysdba则show user查看时为sys,使用sysoper则show user查看时为public

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上使用MySQL 5.6配置Galera集群

集群通过不同服务器分发更改来为数据库添加高可用性。如果其中一个实例失败,则其他已可以的实例还能继续服务。

27000
来自专栏xingoo, 一个梦想做发明家的程序员

JavaMelody监控SQL

前言 前面讲过了Javamelody的基本配置,这里简单的介绍下,如何使用Javamelody来监控JDBC以及SQL。   在网上搜索很多资料,仅有开源...

35480
来自专栏乐百川的学习频道

django 快速入门

Django是Python语言编写的一个全栈式Web框架,可以帮助我们快速编写一个具有数据库功能、增删查改、后台管理等功能的网站。假如你只需要一些很简单的功能,...

28960
来自专栏Java大联盟

Java面试手册:JDBC

12910
来自专栏烂笔头

SSDB安装配置记录

目录[-] SSDB的性能很突出,与Redis基本相当了,Redis是内存型,容量问题是弱项,并且内存成本太高,SSDB针对这个弱点,使用硬盘存储,使用G...

46880
来自专栏PHP在线

PHP输入流php://input介绍

在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php:...

49750
来自专栏左瞅瞅,右瞅瞅

Linux LVM简明教程

逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可...

41910
来自专栏Java编程技术

MySQL 中基于 XA 实现的分布式事务

Xa主要规定了RM与TM之间的交互,下面来看下XA规范中定义的RM 和 TM交互的接口:

13930
来自专栏云计算教程系列

如何在Ubuntu 16.04上的三节点集群上部署CockroachDB

CockroachDB是一个开源的分布式SQL数据库,提供一致性、可伸缩性和生存性。

20020
来自专栏公众号_薛勤的博客

eclipse不能运行Struts2项目

刚接触Struts2项目,本想写个HelloWorld上手,谁知道光eclipse配置tomcat就鼓捣一晚上,查阅各种资料。

9610

扫码关注云+社区

领取腾讯云代金券