Errors executing password change procedure
Date: Wed, 28 Nov 2018 09:56:21 -0700
Message-ID: <CAJzM94C=M_BTC4ktQZ=Zfxm_CGcxb3hdoaOpgtQ0LQOAf1iRFQ_at_mail.gmail.com>
Oracle Enterprise version 12.1.0.2
We have a new requirement to allow users to change their passwords, even if expired and/or account is locked. Per the requirements, I have created the new user (not allowed DBA privs) that will connect through a GUI and execute a password change procedure in another schema that has the necessary privileges. This new user has been granted execute privileges on the procedure. However, I'm getting an "ORA-01031: insufficient privileges" error when I try to execute the procedure as the new user.
I'm new to writing PL/SQL, so I found an example and have been trying to tweak it to meet our requirements. Any help would be greatly appreciated. I did grant "alter user" to the new user, but I'm not sure I really need that and it didn't make a difference to the error.
CREATE OR REPLACE PROCEDURE haalochangepassword(
p_username IN VARCHAR2,
p_password IN VARCHAR2) AS
BEGIN
- Check for system users here and reject IF UPPER(p_username) IN ('PRIVUSER','SYS','SYSTEM') THEN dbms_output.put_line('Password change not allowed'); ELSE EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema = PRIVUSER'; EXECUTE IMMEDIATE 'ALTER USER '||p_username||' IDENTIFIED BY ' ||p_password||' ACCOUNT UNLOCK'; dbms_output.put_line('Password change successful'); END IF; EXCEPTION when NO_DATA_FOUND THEN raise_application_error(-20000,'No user found'); when others THEN dbms_output.put_line('Password change procedure error: ' || sqlerrm); END; /
-- Sandy B. -- http://www.freelists.org/webpage/oracle-lReceived on Wed Nov 28 2018 - 17:56:21 CET