Oracle10gR2 中 Oracle Wallet 的初步使用和维护
1)?Wallet作用
从Oracle10gR2开始,?通过使用Oracle?Wallet达到任意用户不使用密码登录数据库(非操作系统认证方式),?这对在shell中要使用用户密码登录数据库进行操作的脚本来说是非常有用的,?可以不暴露用户密码.?比如在Oracle客户端通过mkstore命令设置Wallet认证信息,?然后通过"sqlplus?/@connect_string"方式就可以直接连接数据库.?
本例是让u_test用户无需使用密码登录系统,?mkstore用法如下:
$?$ORACLE_HOME/bin/mkstore
mkstore?[-wrl?wrl]?[-create]?[-createSSO]?[-delete]?[-deleteSSO]?[-list]?[-createEntry?alias?secret]?[-viewEntry?alias]?[-modifyEntry?alias?secret]?[-deleteEntry?alias]?[-help]
?
?
2)?创建Wallet,?存放于某目录下
$?$ORACLE_HOME/bin/mkstore?-wrl?$ORACLE_HOME/network/admin/wallet?-create
Enter?password:<输入钱包密码>
Enter?password?again:<确认钱包密码>
$?ll?$ORACLE_HOME/network/admin/wallet
total?16
-rw-------??1?oracle?oinstall?7940?Sep?24?13:46?cwallet.sso
-rw-------??1?oracle?oinstall?7912?Sep?24?13:46?ewallet.p12
?
3)?建立网络连接串,?注意每个网络连接串对应一个数据库用户
$?vi?$ORACLE_HOME/network/admin/tnsnames.ora
db_utest?=
??(DESCRIPTION?=
????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?DataGuard)(PORT?=?1521))
????(CONNECT_DATA?=
??????(SERVER?=?DEDICATED)
??????(SERVICE_NAME?=?MNTR.LK)
????)
??)
?
4)?加入用户认证信息到Wallet
其中db_utest是前面设置的网路连接串,?"iamENCY3_"是用户u_test的密码.
$?$ORACLE_HOME/bin/mkstore?-wrl?$ORACLE_HOME/network/admin/wallet?-createCredential?db_utest?u_test?"iamENCY3_"
Enter?wallet?password:<输入钱包密码>
Create?credential?oracle.security.client.connect_string1
?
5)?确认用户认证信息已经加入到Wallet
$?$ORACLE_HOME/bin/mkstore?-wrl?$ORACLE_HOME/network/admin/wallet?-listCredential
Enter?wallet?password:<输入钱包密码>?
List?credential?(index:?connect_string?username)
1:?db_utest?u_test
?
6)?加入Wallet位置信息到sqlnet.ora
$?vi?$ORACLE_HOME/network/admin/sqlnet.ora
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/u01/app/oracle/product/10.2.0/db_1/network/admin/wallet)))
SQLNET.WALLET_OVERRIDE=TRUE
?
7)?登录OWM(图形界面),?确认是否自动登录(默认是),?本步只是确认一下可忽略
$?$ORACLE_HOME/bin/owm?&
先open目录/u01/app/oracle/product/10.2.0/db_1/network/admin/wallet下的Wallet,?然后从菜单栏里查看"Auto?Login"是否已经选中.
?
8)?登录测试
$?sqlplus?/@db_utest
SQL*Plus:?Release?10.2.0.4.0?-?Production?on?Thu?Sep?24?14:05:17?2009
Copyright?(c)?1982,?2007,?Oracle.??All?Rights?Reserved.
Connected?to:
Oracle?Database?10g?Enterprise?Edition?Release?10.2.0.4.0?-?Production
With?the?Partitioning,?OLAP,?Data?Mining?and?Real?Application?Testing?options
SQL>?show?user;
USER?is?"U_TEST"
登录成功,?设置完毕!以后就可以在shell里直接使用"sqlplus?/@db_utest"登录数据库操作了,?无需设置密码.
?
9)?修改用户密码测试
SQL>?alter?user?u_test?identified?by?"iamENCY3_2";
SQL>?exit
$?sqlplus?/@db_utest
SQL*Plus:?Release?10.2.0.4.0?-?Production?on?Thu?Sep?24?14:07:05?2009
Copyright?(c)?1982,?2007,?Oracle.??All?Rights?Reserved.
ERROR:
ORA-01017:?invalid?username/password;?logon?denied
?
10)?如果修改了用户密码,?则需要重新修改认证信息
$?$ORACLE_HOME/bin/mkstore?-wrl?$ORACLE_HOME/network/admin/wallet/?-modifyCredential?db_utest?u_test?"iamENCY3_2"
Enter?wallet?password:<输入钱包密码>
Modify?credential?
Modify?1
?
11)?删除Wallet认证的方法
$?$ORACLE_HOME/bin/mkstore?-wrl?$ORACLE_HOME/network/admin/wallet/?-deleteCredential?db_utest
Enter?wallet?password:<输入钱包密码>
Delete?credential?
Delete?1