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/[email protected]   --使用system帐户连接失败

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

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

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

ORA-01031:
insufficient privileges

RMAN> connect
target sys/[email protected]      --使用sys帐户连接成功

connected to target
database: ORCL (DBID=1261365217)

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

[email protected]> grant
sysoper to usr1;  --对于特殊权限system不能够授予用户

grant sysoper to
usr1

*

ERROR at line 1:

ORA-01031:
insufficient privileges

[email protected]> conn
/ as sysdba

Connected.

[email protected]> 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/[email protected] as sysdba

Connected.

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

USER is "SYS"

SQL> conn
scott/[email protected] as sysoper  /*scott的sysop列为false*/

ERROR:

ORA-01031:
insufficient privileges

Warning: You are no
longer connected to ORACLE.

SQL> conn
usr1/[email protected] as sysdba

ERROR:

ORA-01031:
insufficient privileges

SQL> conn
usr1/usr1 as sysoper

Connected.

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

USER is "PUBLIC"

[email protected]> 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

system sys,sysoper sysdba 的区别,布布扣,bubuko.com

时间: 2025-01-05 04:35:04

system sys,sysoper sysdba 的区别的相关文章

oracle用户 sysdba 与system,sysoper的区别

一.sysdba 与system权限的区别 (1)sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改,sys用户拥有dba,sydba,sysoper角色或权限 是oracle权限的最高用户 system:用于存放一级的内部数据,如oracle的一些特性或者工具的管理信息, system用户拥有dba,sysdba角色或系统权限 (2)其次的区别,权限的不同 sys用户必须以as sysd

oracle中scott/tiger、sys、SYSDBA、system都是什么用

oracle中scott/tiger.sys.SYSDBA.system都是什么用 点我,点我~

Oracle开发:dba和sysdba的区别

oracle dba和sysdba的区别如下: 1.dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已.而且,dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在. 2.SYSDBA不是权限,当用户以SYSDBA身份登陆数据库时,登陆用户都会变成SYS. sysdba身份登陆可以打开,关闭数据库,

Perl system(cmd) 和 `cmd` 的区别探讨

在perl中系统调用有两种方式,一种是system(cmd),另一种是`system`以前一直没注意,这两种方式的区别,还以为是一样的,今天写脚本的时候,忽然想要获取命令的返回值,然后,用了my $result = system('ls');发现,命令的结果并没有返回给$result,而是直接,打印到屏幕上了,所以,这么搞是要完蛋的,而改成my $result = `ls`;则就能获取到命令的执行结果.所以,如果我们要调用系统命令,然后要处理,命令执行的结果,就需要使用`cmd`,而不是syst

System.load(String filename)和System.loadLibrary(String libname)的区别

前言 之前一篇文章在写Native方法的时候,第一个步骤里面有这么一段代码 static { System.load("D:" + File.separator + "Hello.dll"); } 其实JDK提供给用户了两个方法用于载入文件,一个是System.load(String filename)方法,另外一个是System.load(String libname)方法,本文主要写一下这两个方法之间的区别. 区别 1.加载的路径不同 System.load(S

os.system和os.popen的区别

#!/usr/bin/env python #coding:utf-8 import os,sys print os.system("dir")         #只执行命令,不保存结果 print os.popen("dir").read()     #执行结果存到内存 print sys.path               #输出标准库和第三方库路径

JAVA中System.out.println和System.out.print有什么区别

java里常用的控制台输出语句有System.out.println和System.out.print 一:两者之间的区别如下: 1. 参数有区别: System.out.println() 可以不写参数 System.out.print(参数) 参数不能为空.必须有 2.效果有区别 println :会在输出完信息后进行换行,产生一个新行 print: 不会产生新行 3.println更简洁, print更灵活 print可以后面跟"\n"来达到和println一样的效果 也可以跟&

Python中os与sys两模块的区别

转载文章 os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality. 这个模块提供了一种方便的使用操作系统函数的方法. sys: This module provides access to some variables used or maintained by the interpreter and to functions that i

笨方法学python之import sys与from sys import argv的区别

这是在网上看到的一个大神的解答: sys is a module that contains "system functionality". sys.argv is a list containing your script's command line arguments. One way to use it would be to write import sys and then sys.argv to access it. from module import names is