初始化参数REMOTE_OS_AUTHENT用来控制是否允许远端操作系统验证。
默认情况下,
数据库只运行本地服务器上的操作系统验证:
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
------------------------------------------------------------------------------------
TESTRAC
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database10gEnterpriseEdition Release10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production www.2cto.com
CORE 10.2.0.4.0 Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> SHOW PARAMETER OS_AUTH
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
remote_os_authent boolean FALSE
SQL> CREATE USER OPS$ORACLE IDENTIFIED EXTERNALLY;
用户已创建。
SQL> GRANT CONNECT TO OPS$ORACLE;
授权成功。
SQL> HOST
$ sqlplus /
SQL*Plus: Release10.2.0.4.0 - Production
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
连接到:
Oracle Database10gEnterprise Edition Release10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options www.2cto.com
SQL> SHOW USER
USER为"OPS$ORACLE"
建立了OPS$ORACLE用户后,本地可以使用操作系统验证方式登陆,但是远端服务器无法使用同样的方法登陆:
[oracle@bjtest ~]$ sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Production
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> SET SQLP 'SQL112> '
SQL112>CONN/@172.25.198.223/TESTRAC
ERROR:
ORA-01017: invalid username/password; logon denied
如果修改REMOTE_OS_AUTHENT参数:
SQL> EXIT
从Oracle Database10gEnterprise Edition Release10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options断开 www.2cto.com
$ exit
SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT = TRUE SCOPE = SPFILE;
系统已更改。
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL> STARTUP
ORACLE例程已经启动。
Total System Global Area 1258291200 bytes
Fixed Size 2040280 bytes
Variable Size 318774824 bytes
Database Buffers 922746880 bytes
Redo Buffers 14729216 bytes
数据库装载完毕。
数据库已经打开。
利用远端服务器再次尝试操作系统验证登陆:
SQL112> CONN /@172.25.198.223/TESTRAC
已连接。 www.2cto.com
SQL112> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
--------------------------------------------------------------------------------
TESTRAC
SQL112> HOST id
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
需要说明的是,这个参数开启后,存在很大的安全隐患,远端服务器只要根据数据库中存在的外部用户来创建用户,就可以登陆到数据库中,因此除非必要,否则不建议开启这个参数。