Tôi không nghĩ rằng cơ sở dữ liệu Oracle cung cấp cho bạn một API để làm điều này. Một k bùn bạn có thể sử dụng là sử dụng một liên kết cơ sở dữ liệu lặp lại để kiểm tra nó. Như thế này:
DECLARE
p_username VARCHAR2 (30) := 'MMCP'; -- Change to the user whose password you are validating
p_test_password VARCHAR2 (30) := 'NOT_MY_PASSWORD';
p_loopback_connection_string VARCHAR2(80) := 'ORCLQA'; -- Change this for your environment
BEGIN
BEGIN
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
EXECUTE IMMEDIATE
'create database link password_test_loopback connect to "' || p_username || '" identified by "' || p_test_password || '" using ''' || p_loopback_connection_string || '''';
EXECUTE IMMEDIATE q'[SELECT * FROM [email protected]_test_loopback]';
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
dbms_output.put_line('Password is good');
EXCEPTION WHEN OTHERS THEN
IF SQLCODE = -1017 THEN
DBMS_OUTPUT.PUT_LINE('Password is wrong');
ELSE
raise;
END IF;
END;
Các tùy chọn nâng cao hơn sẽ là tìm cách sử dụng ký hiệu đơn / LDAP để xác thực Oracle của bạn. Sau đó, vấn đề của bạn trở thành - làm cách nào để xác thực tên người dùng / mật khẩu trong từ điển LDAP của tôi, điều này dễ dàng hơn nhiều.