oracle wallet使用与维护
2015年05月26日 17:58:55 SilenceRiver 阅读数:1614
oracle wallet使用与维护---oracle无密码登录
分类: Oracle Management2012-07-24 19:54 3111人阅读 评论(1) 收藏 举报
oraclestringoracle11g数据库listjdbc
author:skate
time:2012/07/24

oracle wallet使用与维护

从Oracle10gR2开始, 通过使用Oracle Wallet达到任意用户不使用密码登录数据库(非操作系统认证方式),这对于用脚本登录数据库进行操作来说是非常有用的;尤其对于企业安全要求很高,不希望用户名和密码明文存在配置文件中,而且对于密码的维护是极为方便的,比如我把wallet放在指定路径下,当修改密码时,只需统一覆盖wallet即可,对于有大量应用服务器尤为方便。

在客户端创建一个wallet

用法:
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore --help
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
未指定 Wallet 的位置。
mkstore [-wrl wrl] [-create] [-createSSO] [-createLSSO] [-createALO] [-delete] [
-deleteSSO] [-list] [-createEntry alias secret] [-viewEntry alias] [-modifyEntry
alias secret] [-deleteEntry alias] [-createCredential connect_string username p
assword] [-listCredential] [-modifyCredential connect_string username password]
[-deleteCredential connect_string] [-help] [-nologo]
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

1. 创建wallet
语法: mkstore -wrl <wallet_location> -create
eg:
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -create
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入口令:(输入wallet的密码,要设置的复杂些,否则失败)
再次输入口令:(输入wallet的密码)
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

查看创建wallet
e:\temp\wallet>dir
驱动器 E 中的卷是 data
卷的序列号是 DCEE-F1D9
e:\temp\wallet 的目录
2012/07/24 17:19 <DIR> .
2012/07/24 17:19 <DIR> ..
2012/07/24 17:19 3,589 cwallet.sso
2012/07/24 17:19 3,512 ewallet.p12
2 个文件 7,101 字节
2 个目录 212,962,336,768 可用字节
e:\temp\wallet>

2.创建客户端连接服务端的网络连接串,每个连接串对应一个数据库用户
skate_192.168.1.9 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = skate)
)
)

3.把登入数据库的用户认证信息添加到wallet中
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -createCredential skate_192.168.1.9 skate skatepwd
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
Create credential oracle.security.client.connect_string1

4.在客户端的sqlnet.ora文件里,编辑参数“WALLET_LOCATION ”
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=e:\temp\wallet)))
SQLNET.WALLET_OVERRIDE = TRUE

5.测试在客户端无需密码连接数据库测试

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>sqlplus /@skate_192.168.1.9
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 7月 24 17:59:21 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show user;
USER 为 "SKATE"
SQL>

6.如何管理wallet
6.1 查看wallet里的连接认证信息
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -listCredential
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
List credential (index: connect_string username)
1: skate_192.168.1.9 skate

6.2 添加一个新的认证信息到wallet里,在wallet是以连接串为唯一标识的
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -createCredential test_skate_s_192.168.1.9 skate skatepwd
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
Create credential oracle.security.client.connect_string2

查看已经添加用户认证信息
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -listCredential
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
List credential (index: connect_string username)
2: test_skate_s_192.168.1.9 skate
1: skate_192.168.1.9 skate

6.3 编辑wallet里的用户密码
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -modifyCredential test_skate_s_192.168.1.9 skate skatepwd1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
Modify credential
Modify 2
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

6.4 删除wallet的用户认证信息
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -listCredential
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
List credential (index: connect_string username)
2: test_skate_s_192.168.1.9 skate
1: skate_192.168.1.9 skate
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -deleteCredential test_prodb_s_192.168.1.9
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
Delete credential
Delete 2
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -listCredential
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
List credential (index: connect_string username)
1: skate_192.168.1.9 skate
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

7.查看wallet里的详细认证信息
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -list
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
Oracle 密钥存储条目:
oracle.security.client.connect_string1
oracle.security.client.password1
oracle.security.client.username1

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -viewEntry oracle.security.client.connect_string1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
oracle.security.client.connect_string1 = skate_192.168.1.9
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -viewEntry oracle.security.client.password1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
oracle.security.client.password1 = skatepwd
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -viewEntry oracle.security.client.username1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:
oracle.security.client.username1 = skate
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

8.更改wallet里用户认证信息的内容
8.1 更改密码
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -modifyEntry oracle.security.client.password1 skatepwd1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:

8.2 更改密码
E:\app\Administrator\product\11.2.0\dbhome_1\BIN>mkstore -wrl e:\temp\wallet -modifyEntry oracle.security.client.username1 skate1
Oracle Secret Store Tool: 版本 11.2.0.1.0 - Production
版权所有 (c) 2004, 2009, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令:

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

和6.3步骤里(-modifyCredential)的区别是,这里不仅仅改密码,连接串和密码都可以改

我们这里是本地创建wallet,从本地客户端可以登录,那从其他地方可以吗?
A.
在win7+oracle11g客户端上创建的wallet,无密码访问linux+oracle10g服务服务端没有问题,但是把wallet复制到linux+oracle10g的服务端,再无密码登录是报错“ORA-12534: TNS:operation not supported”,需要用如下命令编辑一下,就可以无密码登录了。虽然语句没有改任何内容。
[oracle@localhost ~]$ mkstore -wrl /tmp/wallet1 -createCredential skate_192.168.1.9 skate skatepwd1

B. 在linux+oracle10g服务端上创建的wallet,无密码访问linux+oracle10g服务服务端没有问题,把wallet复制到win7+oracle11g客户端,无密码登录也没问题。

猜测可能是版本问题。

在客户端使用wallet无密码登录的步骤:

1.创建wallet(tnsname.ora里面的连接串,sqlnet.ora文件内容都要复制到客户端)
2.把wallet复制到客户端指定路径(注意文件权限和属主)
3.修改客户端的tnsname.ora文件里连接服务器的连接串为创建时的连接串,在sqlnet.ora文件里添加如下内容:
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=e:\temp\wallet)))
SQLNET.WALLET_OVERRIDE = TRUE
4.在sqlplus无密码等里测试
sqlplus /@skate_192.168.1.9

在jdbc里连接数据库密码形式如下:
public static Connection getConnection() throws SQLException {
DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager
.getConnection("jdbc:oracle:oci:/@tnskate");
conn.setAutoCommit(false);
return conn;
}

参考: [ID 340559.1] [ID 741810.1]

oracle wallet使用与维护的更多相关文章

  1. 转://oracle Wallet在expdp/impdp中使用场景

    oracle Wallet的使用(即内部加密技术TDE(Transparent Data Encryption )) 1. TDE是Oracle10gR2中推出的一个新功能,使用时要保证Oracle版 ...

  2. 转载:Oracle RAC日常基本维护命令

    本文转载自: https://blog.csdn.net/tianlesoftware/article/details/5358573 Oracle RAC日常基本维护命令 好文转载, Oracle  ...

  3. ORACLE表空间管理维护

    1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...

  4. Oracle RAC管理及维护命令详解

    Oracle Clusterware的命令集可以分为以下4种: 节点层:osnodes 网络层:oifcfg 集群层:crsctl, ocrcheck,ocrdump,ocrconfig 应用层:sr ...

  5. ORACLE 12c RAC日常维护命令

    转至:https://blog.51cto.com/ixdba/901545 CRS提供了很多命令可以管理和查看集群服务状态,常用的有crs_stat.crs_start.crs_stop.crsct ...

  6. oracle表空间查询维护命令大全之二(undo表空间)

    --undo表空间汇总 --查看全部的表空间名字 select name from v$tablespace; --创建新的UNDO表空间,并设置自己主动扩展參数; create undo table ...

  7. oracle表空间查询维护命令大全之三(暂时表空间)史上最全

    --UNDO表空间汇总 --查看全部的表空间名字 SELECT NAME FROM V$TABLESPACE; --创建新的UNDO表空间,并设置自己主动扩展參数; CREATE UNDO TABLE ...

  8. Oracle 11gR2 RAC 常用维护操作 说明

    一.启动和停止集群 在Oracle 11gR2 下的RAC,架构发生了变化.CRS的信息也是放在ASM 实例里的,所以要关asm,必须关闭crs, 如果还使用了acfs的话,一关crs那么acfs里的 ...

  9. oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全

          表空间是数据库的逻辑划分,一个表空间仅仅能属于一个数据库. 全部的数据库对象都存放在建立指定的表空间中.但主要存放的是表, 所以称作表空间.在oracle 数据库中至少存在一个表空间.即S ...

随机推荐

  1. CMDB(Configuration Management Database)资产管理系统和 运维自动化

    一.传统运维方式和自动化运维的区别 二.CMDB的介绍 三.CMDB的四种方式 四.项目的目录架构介绍以及配置文件的升级编写 五.比较low的项目架构书写 六.可插拔式收集资产 七.对收集的服务器信息 ...

  2. String.Join Method

    Overloads Join(String, String[], Int32, Int32) Concatenates the specified elements of a string array ...

  3. npm 安装包失败 --- 清除npm缓存

    今天同事给了一个webpack的项目,我拿过来,npm  install 突然出现报错了,并且报了一个奇怪的错误, 如下所示, Unexpected end of JSON input while p ...

  4. java8list排序

    https://blog.csdn.net/york_2016/article/details/80169467

  5. gogs git代码管理

    Gogs 是一个基于 Go语言的开源的 Git 服务端.非常轻量,安装也很简单.官网https://gogs.io/docs/installation/install_from_binary 下载后解 ...

  6. Java 8 特性 —— Stream

    Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8 中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及 ...

  7. Spring 实现动态数据源切换--转载 (AbstractRoutingDataSource)的使用

    [参考]Spring(AbstractRoutingDataSource)实现动态数据源切换--转载 [参考] 利用Spring的AbstractRoutingDataSource解决多数据源的问题 ...

  8. setTimeout与setInterval

    setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 语法:setTimeout(code/function, milliseconds, param1, param2, ...) ...

  9. Django 后台定制自己的选择框删除函数

    from django.contrib import admin from .models import Article,Category from datetime import datetime ...

  10. Gradle里面两个 依赖管理插件,可以不用关心 具体jar版本号

    引用:https://spring.io/blog/2015/02/23/better-dependency-management-for-gradle Using the plugin with S ...