LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 数据库 >

oracle数据库物理结构(6)

时间:2012-07-01 05:41来源:未知 编辑:admin 点击:
六.password file(口令文件):对通过网络进行管理的用户进行认证 1. 本地连接 默认情况下,无论实例是否已启动,数据库服务器本地用户登录数据库需通


六.password file(口令文件):对通过网络进行管理的用户进行认证
 
1. 本地连接
 
默认情况下,无论实例是否已启动,数据库服务器本地用户登录数据库需通过操作系统验证,即发起登录的操作系统用户是否属于oinstall组,是则允许登录,否则禁止,而与登录时使用的数据库用户及口令无关(错误的数据库用户及错误口令或空口令均允许登录)。注意,操作系统验证仅对本地连接且已as sysdba身份登录才生效,若非as sysdba身份,则进行数据库验证。
[root@station31 ~]# cat /etc/passwd | grep oracle
oracle:x:500:501::/home/oracle:/bin/bash
[root@station31 ~]# cat /etc/group | grep 501
oinstall:x:501:
sed -i 's/oinstall:x:501/oinstall:x:505/' /etc/group       更改oracle用户所属组ID
#su - oracle
$sqlplus /  as sysdba;                             无口令登录失败
perl -p -e 's/oinstall:x:505/oinstall:x:501/' /etc/group     撤消上述更改
 
测试结果:
·操作系统验证本地实例启动:以as sysdba登录无口令或错误口令可登录,以普通用户登录需正确口令;
实例关闭:只能以as sysdba登录可无口令或错误口令可登录,数据库没启动,数据库验证失效,普通用户无法登录。
·禁用操作系统验证本地实例启动:以as sysdba登录需正确口令。
实例关闭:只能以as sysdba并以正确口令登录。
 
禁用操作系统验证:
vi $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
添加上行,指定禁用操作系统验证,提高本地登录安全性。
 
禁用OS验证后,本地登录将根据数据库口令文件参数的设置(默认生效)改用口令文件验证,默认口令文件为$ORACLE_HOME/dbs/orapw$ORACLE_SID默认其中已包含sys用户。
SQL> show parameter remote_login_passwordfile;
口令文件验证规则为:对于以sysdba身份登录的用户,使用口令文件进行验证,验证口令文件中是否包含该用户且口令文件中口令是否正确;对于以非sysdba身份登录的用户,则仍使用数据库验证,验证数据库中是否包含该用户且数据库中口令是否正确。
 
2. 网络连接
 
默认情况下,无论实例是否启动,远程客户端用户登录数据库都需进行口令文件或数据库的验证,使用口令文件及验证规则与本地验证相同。
例:$ vi $ORACLE_HOME/network/admin/listener.ora
  ...................
      (PROGRAM = extproc)
    )
     (SID_DESC =
      (GLOBAL_DBNAME = ora10)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (SID_NAME = ora10)
     )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.26.31)(PORT = 1521))
    )
  )
 
vim  $ORACLE_HOME/network/admin/tnsnames.ora
ORA10 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.26.31)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ora10)
    )
  )
LISTENER_ORA10 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.26.31)(PORT = 1521))
.....................
 
在listener.ora和tnsnames.ora配置文件中添加或修改实例和数据库名段。
 
·口令文件启用
SQL> show parameter remote_login_passwordfile;     查看口令文件参数。
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE
none:禁用口令文件验证,不允许通过网络进行DB管理,即使口令文件存在。
exchlusize:启用口令文件验证,允许一个数据库使用口令文件进行验证(默认)
shared:共享口令文件验证,允许多个数据库使用口令文件进行验证
 
·口令文件生成
$ cd $ORACLE_HOME/dbs
$ orapwd file=orapwora10 password=redhat123 entries=20 force=y
orapwd参数含义(“=”两边无空格):
file: 定义口令文件名称(路径为$ORACLE_HOME/dbs/)(必需)
password:SYS用户的口令(必需)
entries:允许在口令文件中添加到用户最大数量(可选)
force:是否覆盖原有口令文件(可选)
 
·查看修改口令文件
SQL> select * from v$pwfile_users;   查看口令文件中所有用户
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
SQL> create user user01 identified by rh123; 添加用户
SQL>  grant sysdba to user01;      赋sysdba权限后自动加入口令文件
SQL> select * from v$pwfile_users;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
USER01                         TRUE  FALSE
SQL> revoke sysdba from user01;  从口令文件中删除用户
·删除口令文件(禁用口令文件验证)
SQL> alter system set remote_login_passwordfile=none scope=spfile;
SQL> shutdown immediate;
rm $ORACLE_HOME/dbs/orapwora10
 
由上步测试可知,在禁用口令文件验证后,网络连接时将只有一种方式可以连入数据库,即在数据库启动情况下,仅允许普通用户以正确口令连入数据库,提高了网络连接的安全性,但同时大大降低了网络验证的可管理性,因其中关键性的“数据库关闭状态下以sysdba
身份连入数据库”功能不能使用,从而使远程启动数据库功能不能实现,不利于从网络原创管理数据库,因此应该使用默认的启用口令文件验证模式。
 
特别注意:
若禁用了本地操作系统验证后,又禁用口令文件验证,则在数据库关闭后,将无法使用任何方法连入数据库再次重启实例,故不应将本地操作系统验证和口令文件验证同时禁用。

转载请保留固定链接: https://linuxeye.com/database/663.html

------分隔线----------------------------
标签:物理结构oracles
栏目列表
推荐内容