用户、权限和角色管理
禁用操作系统以后,只能使用口令文件登陆。 因为sysdba只有两种认证方式。
目前使用口令文件只允许Oracle用户。
显然可以使用口令文件进行认 证了,但是目前为止只能sys用 户使用口令文件。
修改了参数以后,权限不够了。
因为OS和口令文件全部禁止了,因此没有办法启动数据库了,只 能修改OS认证了。
因为sys的权限太大,使用sysdba登陆以后,审计文件会记录登录的时间信 息,system没有sys的权限大
最通常的用法是:日常管理中,不要使用sys和system登录数据库,而是建 立一个用户、并赋予DBA角色,使用该用户进行日常的管理工作
创建用户
口令是最常见的认证方式。
CREATE USER "SYSADMIN" PROFILE "DEFAULT" IDENTIFIED BY "*******" PASSWORD EXPIRE DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK GRANT "CONNECT" TO "SYSADMIN启动或者未能成功的解锁。 找到被删除的那个进程的PADDR
用户管理的一些选项
1、唯一的用户名、字母开头、不包括特殊字符、最长30个
2、要有一种认证方式,通常采用密码认证,也就是登录时提供用户名和密码
3、默认表空间
Oracle10g中定义了一个数据库级别的默认表空间,如果用户没有定 义默认表空间,那么就使用这个作为自己的默认表空间,10g以前,如果出现 这种情况,那么就是用system表空间,这显然不合理,因此建立一个数据库 级别的表空间还是很有意义的
要启用口令文件认证,需要设置口令文件和配置上面的remote参数 默认只有sys可以使用口令文件。
密码文件丢失的情况
可以重建口令文件。
sysadmin也进入了口令文件中。
用户sysadmin也可以在数据库没有启动的情况下,使用口令文件进行认证了。
用户sys的密码存在口令文件和数据字典中,修改了密码以后,会同时更新两个 地方的密码。
unix上位于$ORACLE_HOME/dbs windows上位于$ORACLE_HOME/database
SID为小写,那么口令文件中的orapwSID 中的SID也要小些,两者必须相同,而且 区分大小写。
在WINDOWS平台下面,口令文件是PWDSID,SID也要遵循大小写。
上面建立了一个口令文件,这个口令文件可以允许5个不同的oracle用户拥有 sysdba权限。
4、默认临时表空间
临时表空间最经典的使用就是排序的时候,PGA容纳不了排序所产 生的临时数据,9i开始可以指定数据库级别的默认临时表空间
5、配置文件
用来控制用户密码策略、以及资源使用的配置信息
6、用户组
7、锁定状态
数据库建立以后,会产生两个重要的用户:sys和system
sys是超级管理员,必须作为sysdba登陆,这是安全措施
操作系统认证
密码文件认证
操作系统认证 unix下面,如果用户属于DBA组,那么用户登录操作系统后就可以使 用sysdba进行登录 windows下面,如果用户属于ora_dba组,那么用户登录操作系统以 后,可以使用sysdba进行登录
如果用户属于oinstall组,不能进行操作系统认证。
如果用户属于DBA组,那么就可以使用操作系统认证,使用DBA角色登 录数据库。在这方面,我们使用最多的就是Oracle用户。
2、设置初始化参数
NONE:不能进行密码文件认证,Oracle未启动的情况下,远程用户没有办法通 过网络服务的方式以SYSDBA权限登录到Oracle数据库。 EXCLUSIVE:默认值,该密码只能被一个实例使用,我们可以向密码文件中添 加新的用户 SHARED:该密码文件可以被多个实例使用(用于RAC),但是密码文件里面 只能存放sys和system用户的密码
不需要使用用户名和密 码就可以直接登录。
这就是一个反例,如果在数据 库里面没有建立相应的用户名, 不能使用外部认证。
1、对于普通用户来说,账号存储在数据字典的表里面,数据库没有启动以前, 不能对用户进行认证。
2、对sys用户的认证方式有些特殊,因为sys用户需要在数据库还没有启动的情 况下进行登录,对sys用户的认证主要有两种方式
口令文件中可以存放多个用户,这些用户都可以使用sysdba在数据 库没有启动的情况下登录数据库。
建立了一个用户shd,给这个用户分配 了连个权限。
另起一个会话,使用shd登陆,建立一个用户。
这个用户不能够被删除,因为这个用户正在连接中。 如何强行中断呢?
等一会,PMON会启动起来,从而清理中断的session所占用的资源。
看一下外部认证(操作系统认证的例子)
一个操作系统用户的账号是ora,那么在数据库里面需要建立一个用户叫做 ops$ora,这个用户登陆操作系统以后,就可以直接登陆数据库了。因为操作 系统已经认证了这个用户。
CREATE USER "OPS$ORA" PROFILE "DEFAULT" IDENTIFIED EXTERNALLY DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK GRANT "CONNECT" TO "OPS$ORA"
上面的认证需要我们的用户登陆Oracle所在的数据库服务器上。
是否使用操作系统认证,还取决于一个设置
这个文件中有这么一条记录,或者没有这么一条记录。那么就表示可以使用 操作系统进行认证。
如果改成NONE,那么表示不能使用操作系统进行认证。
改回来以后,不需要重启什么 服务,就直接可以进行连接了。
远程登录Oracle,如何实现sys认证,就需要使用口令文件。 远程登录,必须提供sys的密码,这是安全要求。但是密码又不能存放在数 据字典表里面,只能存放在另外一个位置,那就是密码文件。 1、在服务器上建立一个密码文件