掩码变量在ksh脚本中传递给sql查询

时间:2016-04-25 20:20:17

标签: sql bash variables ksh

您好我正在编写一个ksh脚本来更改整个环境中的DBA密码。我提示用户提供新密码并将其设置为$ newPwd变量。问题是当我将此变量传递给sql查询时,它会在日志文件中显示密码。

sqlplus sys/sysPwd@db<<EOf>dba_password_change_log.log
Alter user $dba_user identified by $newPwd;
quit;
EOF

$ cat dba_password_change_log.log

改变由T1ger识别的用户SCOTT;

如何屏蔽$ newPwd变量?

2 个答案:

答案 0 :(得分:0)

您需要将其加密到日志文件。您需要使用一些代码将其传递给pgp或其他一些加密程序。

答案 1 :(得分:0)

我发现了另一种方式。我只是使用了plsql程序。

declare
          emesg varchar2(32000);
        begin
          dbms_output.put_line('alter user ${dba_user} identified by *******');
          execute immediate 'alter user ${dba_user} identified by "${newPwd}"';
          exception when others then
            emesg := SQLERRM;
            raise_application_error(-20001, 'alter user ${dba_user} command failed: '|| emesg);
        end;
        /

现在,当我打开日志文件时,它只会显示以下错误消息或其他错误消息。

第1行的错误: ORA-20001:alter user命令失败:ORA-28007:密码无法重用 ORA-06512:第8行