我已经从oracle页面使用oracle的mkstore创建了一个oracle钱包:
https://docs.oracle.com/middleware/1213/wls/JDBCA/oraclewallet.htm#JDBCA600
mkstore命令mkstore -wrl <wallet_location> -createCredential <db_connect_string> <username> <password>
在给定的wallet_location中生成两个文件。
生成的文件为:cwallet.sso and ewallet.p12
这些文件需要在Java -Doracle.net.wallet_location=
中设置为系统属性,并在dburl连接字符串中提供db_connect_string
。这样,oracle成功地对数据库进行了身份验证。
我的询问是oracle如何从钱包文件内部确定密码。
我问这个问题的原因是,我正在Apache Spark的集群分布式模式下工作,但我不知道连接将在哪台机器执行器上进行。因此,我无法在所有执行程序上预先设置系统属性-Doracle.net.wallet_location=
。由于该属性不是系统属性,因此连接失败,并显示unknownhost exception
。连接发生在spark的驱动程序上,在此我可以控制设置系统属性。当任务被分发时,它开始失败。
此外,假设我有别名和钱包文件,是否有办法从钱包文件中获取username
和password
。
我没有使用hadoop凭证存储的选项。 必须使用Oracle钱包。