SYSOPERSYSDBA只是系统中两个特殊的系统权限,不要将其人为地想象得那么神秘。我们一起来探索一下他们之间的联系区别

1.登录数据库特权
SYSDBA和SYSOPER是比较特殊的两个权限,即便数据库的实例并没有启动,以这两种特权依然能够登录系统,
1)关闭系统
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2)分别以SYSDBA和SYSOPER特权登录系统
ora10g@secdb /home/oracle$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 20 21:39:06 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.

NotConnected@>


ora10g@secdb /home/oracle$ sqlplus / as sysoper

SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 20 21:39:34 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.

NotConnected@>

可见,即使数据库实例并没有被启动使用这两种特权依然可以登录,这就是力量无穷的管理权限。我就是God,我可以做一切。

如果是普通用户登录,此时系统将不允许其登录,报错信息如下:
ora10g@secdb /home/oracle$ sqlplus sec/sec

SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 20 21:41:46 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory


Enter user-name:

2.SYSOPER和SYSDBA特权背后的Schema
1)SYSOPER特权背后的Schema是PUBLIC
sys@ora10g> conn / as sysoper
Connected.
public@ora10g> show user;
USER is "PUBLIC"

2)SYSDBA特权背后的Schema是SYS
public@ora10g> conn / as sysdba
Connected.
sys@ora10g> show user;
USER is "SYS"

3.SYSOPER和SYSDBA特权具有的权限比较
1)SYSOPER特权具有的权限
数据库实例的startup、mount以及数据库的open;
数据库实例的shutdown、dismount以及数据库的close;
数据库的备份、日志归档和恢复;
创建SPFILE;

2)SYSDBA特权具有的权限
SYSDBA特权拥有SYSOPER所具有的所有权限,同时它包含了所有系统权限。因此,SYSDBA具有真正意义上的God权限。
SYSDBA特权具有创建和删除数据库的权力。

4.使用特权登录的注意事项
1)因为SYSOPER和SYSDBA都属于特权用户,处于安全目的不要将这些特权授予给其他普通用户;
2)同样出于安全考虑,以“最小权限”为原则,在完成普通操作时不要使用特权用户操作。