首页 文章

Sqlplus命令在kornshell scipt中更改oracle数据库密码

提问于
浏览
-1

我正在编写一个脚本来更改Oracle数据库的密码 . 我成功地获取了数据库名称,user_id,旧密码和新密码 . 我有这个命令来更改旧密码并将其设置为新密码:

sqlplus -s /nolog << EOF 
connect ${USER_ID}/"${OLD_PASS}"@${DB_NAME} 
alter user ${USER_ID} identified by ${NEW_PASS} replace ${OLD_PASS};
/
exit
EOF

当我将结果存储到变量并打印出变量时,我得到一个错误说明:

ORA-00922:缺少或无效选项 .

我相信它与alter user命令有关 . 如何通过我的脚本修复此命令以使密码更改成功?

1 回答

  • 1

    由于您在 connect 字符串中用双引号括起旧密码,因此旧密码和新密码似乎都有特殊字符 . 你得到的错误与任何一个带有感叹号的密码一致;但也可以以数字开头,有多字节字符等 .

    From the documentaton

    您必须将以下密码括在双引号中:包含多字节字符的密码 . 密码以数字或特殊字符开头并包含字母字符 . 例如:“123abc”
    “#abc”
    “123dc $”
    包含字母字符,数字和特殊字符以外的任何字符的密码 . 例如:“abc>”
    “ABC @”,
    “”

    所以,也将它们包含在_361229中:

    alter user ${USER_ID} identified by "${NEW_PASS}" replace "${OLD_PASS}";
    

相关问题