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

时间:2012-05-29 21:43:49

标签: database oracle oracle-apex

我正在尝试在APEX上实现一个表单,允许用户(在本例中为dba)选择一个数据库,然后更改其用户名和密码。

我能够正确设置输入字段,但我完全迷失了如何将其与实际数据库联系起来。我假设我将不得不使用数据库链接来访问不同的数据库。

这可能吗?

2 个答案:

答案 0 :(得分:2)

我认为你不会做这样的事情:

alter user xyz@remote_database identified by new_password

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

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

答案 1 :(得分:1)

我设计了一种解决方案,不需要单个用户的存储过程或提升访问权限。它有点被黑了,但它确实有效!

  1. 用户通过常规APEX表单输入其凭据和所需的新密码。

  2. 使用替换字符串在HTML区域中处理表单数据,其中包含iframe。即:<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 ./chguserpwd

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