从APEX更改Oracle数据库密码密码

3
我正在尝试在APEX上实现一个表单,允许用户(在这种情况下是dba)选择数据库,然后更改他们的用户名和密码。
我已经正确设置了输入字段,但是我完全不知道如何将它与实际数据库关联起来。我假设我必须使用数据库链接来访问不同的数据库。
这是否可行?
2个回答

2
我不认为你能够做这样的事情:
alter user xyz@remote_database identified by new_password

您可能需要在远程数据库上编写一个存储过程,接受用户名和密码,并为您更改该用户的密码。然后您可以执行以下操作:

begin
   change_password('xyz','new_password')@remote_database;
end;

1
我设计了一个解决方案,不需要为单个用户存储过程或提升访问权限。虽然有点拼凑在一起,但它能够正常工作!
  1. 用户通过常规的APEX表单输入其凭据和所需的新密码。

  2. 表单数据在包含iframe的HTML区域中使用替换字符串进行处理。例如:<iframe height='300' width='100%' scrolling="no" src="http://***SERVER***/cgi-bin/chguserpwd.cgi dbname=&DATABASE_NAME.&username=&USERNAME.&oldpwd=&CURR_PASSWORD.&newpwd=&NEW_PASSWORD."></iframe>

  3. cgi脚本完成工作并通过iframe返回结果

    #!/usr/bin/ksh
    my_input=$QUERY_STRING;
    dbname=`echo "$QUERY_STRING" |awk '{FS="&"} {print $1}'|awk '{FS="="} {print $2}'`
    username=`echo "$QUERY_STRING" |awk '{FS="&"} {print $2}'|awk '{FS="="} {print $2}'`
    oldpwd=`echo "$QUERY_STRING" |awk '{FS="&"} {print $3}'|awk '{FS="="} {print $2}'`
    newpwd=`echo "$QUERY_STRING" |awk '{FS="&"} {print $4}'|awk '{FS="="} {print $2}'`
    print "Content-Type: text/html\n\n"; print " Database Name is       $dbname ............ User is $username ";
    cd **dir**
    ./chguserpwd  $dbname $username $oldpwd  $newpwd
    
  4. 从cgi-script执行SQL命令 ./chguserpwd

    set markup HTML on
    prompt .
    alter user &1 identified by &2;
    prompt Password has been changed
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接