自学内容网 自学内容网

关于oracle数据库/加载机密码中含有特殊字符@:><等的解决办法

一、前提交代

      我最近项目中需要通过把特定的数据文件(.gz文件)导入到oracle库中,一般情况我们是通过shell来实现该功能,然后再通过作业调度调用shell来实现。在shell中肯定要连接数据库和加载机(存放数据文件的服务器),但是数据库和加载机密码中包含了一个特殊字符@,就出现了无法连接数据库或者加载机的情况

        首先明确一点数据库的账号密码及加载机的账号密码都是配置在配置文件中,然后需要在shell中引入配置文件即可。另外所有账号密码在配置文件中都是base64转码后的

二、加载机密码包含@解决办法

        假如密码是:123@pwd

        首先把明文密码中的特殊符号@转换成对应URL编码  %40。即123%40pwd,然后在把123%40pwd进行base64转码即可。

        加载机的连接示例:

        FTP_USER=`echo $FTP_USER|base64 -d`

        FTP_PWD=`echo $FTP_PWD|base64 -d`

        FTP_IP=`echo $FTP_IP|base64 -d`

        FTPADD=sftp://${FTP_USER}:${FTP_PWD}@${FTP_IP}

三、oracle数据库密码包含@符号

        假如密码是:568@asd

        一般shell中连接oracle用sqlldr命令,里面@是分隔符,所以密码中包含@就认为是分隔符。

这时候直接把568@asd转换成base64,然后在sqllder命令里把引用密码变量处前后加\"即可

即:echo  `sqllder  ${orc_db_name}/\"${orc_db_pwd}\"@${orc_ser_name}:${orc_ser_ip_port}/${orc_db_name} control =${aa.ctl} log={log_path}` 

附:特殊字符和URL编码对照表


原文地址:https://blog.csdn.net/dhklsl/article/details/142986396

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!