普通用户无法启动或关闭
数据库,其原因在于普通用户依据数据字典进行身份验证,但是数据字典在数据库打开前无法被读取,从而出现普通用户注定无法启动(或创建)数据库的情况。一次我们必须使用某种外部身份验证方式来连接数据库:作为 Oracle
软件拥有组的一个成员,通过操作系统进行身份验证;通过给出存在于外部口令文件的某个用户名/口令组合进行身份验证。通过在用户进程中给出使用适当语法的 CONNECT 命令,就可以告知 Oracle 希望使用外部身份验证。如果正在使用 Database Control,那么实现这个目的比较容易:在 Connect As 组合框内选中 SYSOPER 或 SYSDBA。
Database Control 并没有给出使用操作系统身份验证的选项,这是因为 Database Control 总是如同远程进程一样通过某个侦听程序进行连接。如果侦听程序未运行或不能识别希望连接的数据库,那么就无法使用 Database Control。如果正在使用 SQL*Plus,那么 CONNECT 命令的语法会告知 Oracle 使用哪一种身份验证类型:默认的数据字典身份验证(Database Control 用语中的 Normal)、口令文件身份验证或操作系统身份验证。CONNECT 命令可能具有下列语法:
connect user/pass[@db]
connect user/pass[@db] as sysdba
connect user/pass[@db] as sysoper
connect / as sysdba
connect / as sysoper
第一个和示例是标准的数据字典身份验证。Oracle 会依据数据字典中的存储值来验证用户名/口令组合,此时数据库必须打开。任何用户只要使用这种语法连接数据库,那么就无法执行启动和关闭命令。接下来的两个示例指示 Oracle 进入外部口令文件验证用户名/口令组合。最后两个示例使用了操作系统身份验证,此时,Oracle 会进入主机操作系统,并且查看运行 SQL*Plus 的主机操作系统用户是否为拥有 Oracle 软件的操作系统组的一个成员,如果用户通过上述
测试,那么该用户就可以在不必给出用户名和口令的情况下作为 SYSDBA 或 SYSOPER 登录。使用后 4 种语法连接数据的用户不仅能够执行数据库的启动和关闭命令,而且还可以在任何状态下(即使数据库还未被创建的情况)连接数据库。
某些特殊的权限具有特殊的性能,这些权限只有在用户使用外部身份验证连接数据库时才有效。SYSOPER 能够执行如下所示的命令:
STARTUP
SHUTDOWN
ALTER DATABASE [MOUNT | OPEN | CLOSE | DISMOUNT]
ALTER [DATABASE | TABLESPACE] [BEGIN | END] BACKUP
RECOVER
SYSDBA 权限包括上述的所有命令,此外还能够创建数据库,执行不完全恢复以及创建其他 SYSOPER 和 SYSDBA 用户。
SYSDBA 与 SYSOPER 不是用户,而是能够被授予用户的权限。在默认情况下,只有用户 SYS 才具有这些权限。只有在需要完成普通用户无法执行的过程时,我们才应当使用上述的任一种权限来连接数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22786751/viewspace-618398/
,如需转载,请注明出处,否则将追究法律责任。