4.8 特权用户与口令文件
在创建数据库时,自动创建了一个特殊的用户SYS,这个用户就是我们平常所说的数据库管理员,它具有两种特殊系统权限SYSDBA和SYSOPER,对整个数据库具有所有权限。对数据库的管理基本上是以这个用户的身份来完成的。
SYS用户在登录实例时,需要指定SYSDBA或者SYSOPER权限。例如,通过SQL*Plus以以下方式登录:
sqlplus sys/1234 as sysdba
或者:
sqlplus sys/1234 as sysoper
其中“1 2 3 4”是SYS用户的口令。在登录之前需要在系统中设置一个环境变量ORACLE_SID。在Windows中,只有当一个系统中运行多个实例时,才需要设置这个变量。在UNIX/Linux中设置环境变量的命令是(其中orcl是实例的名称):
ORACLE_SID=orcl
export ORACLE_SID
在Windows中设置环境变量的命令是:
set ORACLE_SID=orcl
在UNIX/Linux中安装Oracle软件之前,需要在系统中创建一个oracle用户,这个用户属于dba用户组(在Windows中这个用户一般是系统管理员administrator,属于ora_dba用户组),以后对数据库的所有管理任务,都是以oracle用户登录到系统中来完成的。只要以oracle用户登录到系统中,就能够以下面的方式登录到数据库实例中,而不用提供SYS用户的口令:
sqlplus/as ssydba
这时候实际上是把系统中的oracle用户映射为数据库中的SYS用户。在Oracle中把这种验证方式称为操作系统验证。实际上,在操作系统中任何用户只要属于dba用户组,就能以上面的方式登录到数据库实例中。同样,任何系统用户只要数据oper用户组(或者dba用户组),就能够以下面的方式登录数据库实例:
sqlplus/as sysoper
如果SYS用户以远程方式登录实例,如通过EM,就需要提供口令。SYS用户的口令一方面同普通用户一样,存储在数据库中,另一方面,SYS用户的口令存储在一个操作系统文件中,这个文件就是口令文件。在UNIX/Linux中,口令文件存放在Oracle安装目录的dbs子目录下,文件命名规则是:orapw<sid>.ora,其中<sid>指的是实例名称。在Windows中,口令文件存储在database子目录下,文件的命名规则是:PWD<sid>.ora。
SYS用户的远程登录,是通过口令文件进行验证的。如果口令文件丢失,或者口令输入错误,验证就会失败。在这种情况下,可能需要重新创建口令文件,指定新的口令。Oracle提供了一个命令,名称是orapwd,通过这个命令对口令文件进行管理。这个命令是由oracle用户在操作系统中执行的。例如:
$orapwd file=$ORACLE_HOME/dbs/orapworcl.ora password="1234"force=y
这个命令的各个参数的含义如下:
file:用来指定口令文件的路径和名称,如果不指定路径,将在当前目录下产生。
password:用来指定SYS用户的新口令。
force:如果口令文件已经存在,则覆盖。