3

ユーザー (この場合は dba) がデータベースを選択し、ユーザー名とパスワードを変更できるフォームを APEX に実装しようとしています。

入力フィールドを正しく設定できましたが、実際のデータベースと結び付ける方法がまったくわかりません。異なるデータベースにアクセスするには、データベース リンクを使用する必要があると想定しています。

これは可能ですか?

4

2 に答える 2

2

私はあなたがこのようなことをすることができるとは思わない:

alter user xyz@remote_database identified by new_password

おそらく、ユーザー名とパスワードを受け取り、そのユーザーのパスワードを変更するストアド プロシージャをリモート データベースに記述する必要があります。次に、次を実行できます。

begin
   change_password('xyz','new_password')@remote_database;
end;
于 2012-05-30T05:49:04.487 に答える
1

私は、ストアド プロシージャや昇格されたアクセスを 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 スクリプトから SQL を実行する./chguserpwd

    set markup HTML on
    prompt .
    alter user &1 identified by &2;
    prompt Password has been changed
    
于 2012-06-12T16:12:05.253 に答える