zoukankan      html  css  js  c++  java
  • Host concurrent的建立方法

    PURPOSE:
    --------
    To explain how to create a custom concurrent program with Host as the method
    (shell script) and pass a number of user parameters from the concurrent program
    to the shell script.

    This example will implement a concurrent program that receives two parameters
    at the runtime of the concurrent program:  the database username and the user's new
    password to be changed.  The shell script. will connect to the database as system.
    It will verify if the user's password can be changed. 
    (Note:  Allowed users will be stored in a flat file on the CM-node.)


    Assumptions:
    -----------

    1. Oracle Applications Release 11i is used.  We are changing the database user
       password, not Oracle Applications user's password.

    2. We will not define a new application, responsibility, etc. within 11i.  We
       will use the existing Application Object Library application and System
       Administrator responsibility.

    3. At runtime, the concurrent program will need two parameters:  database username
       and the new password.  If the database username is not listed in allowed_list.lst,
       the user's password can not be changed.

    4. The DBA group will be notified by email once there is an attempt to change
       database user's password.

    5. FNDCPASS could be used, but this is not the subject of this note.

    6. If there is any user listed in the allowed_list.lst (one user per line, no
       extra spaces) and that user does not exist in the database, the concurrent
       request will complete ok, but the DBA group will get a notification that
       "database user doesn't exist".

    7. Ensure the you test the procedure in a test environment several times to
       become familiar with the procedure.  Verify that the program does what you
       require prior to making the changes into production.

    9. This procedure is not supported by Oracle Support Services.  This is just
       an example and will have to be adjusted for your own needs.


    SCOPE & APPLICATION:
    --------------------
    Technical Consultants, Apps DBA, DBA.


    Steps to create a custom concurrent program with Host method and pass parameters to the shell script.
    ----------------------------------------------------------------------------------------------------

    1.  Copy/modify (if needed) chgdbpwd to your CM-tier under $FND_TOP/bin.
       
    2.  Create file allowed_list.lst under <applmgr_home_directory>/scripts.

    3. Logon to Oracle Application 11i ->  System Administrator responsibility

       Navigate Concurrent > Program > Executable and enter a new one:
       Executable: Change Database User Password
       Short Name: CHGDBPWD
       Application: Application Object Library
       Description: Change Database User Password
       Execution Method: Host
       Execution File Name: chgdbpwd
       Save your work.

    4. Navigate Concurrent > Program > Define and enter a new one:
       Program: Change Database User Password
       Short Name: CHGDBPWD
       Application: Application Object Library
       Description: Change Database User Password
       Name: CHGDBPWD
       Method: Host
       Click on Parameters and add the following:
       - Seq: 10 , Parameter: Database User, Description: Enter Database User to change the password for, Value Set: 15 Characters, and click on the Required: checkfield.
       - Seq: 11 , Parameter: Database User Password, Description: Enter Database User's New Password, Value Set: 15 Characters, and click on the Required: checkfield.
       Save your work.

    5.  Navigate Security > Responsibility > Request
        Query for Group: System Administrator Reports and add one request
        Type: Program, Name: Change Database User Password
        Save your work.

    6. Restart the Concurrent Managers.

    7. Submit the concurrent request "Change Database User Password" , pass the
       parameters, under System Administrator responsibility.

    8. Connect using sqlplus to confirm the database user password has changed.

    This procedure might help in case that HelpDesk will be allowed to reset
    specific database password, without having access to database users SYSTEM/SYS.
    Only the responsibility associated with the concurrent request "Change Database
    User Password" defined above is needed.


    -----script. chgdbpwd starts here -----------------------------------------------------------------------------------
    #!/bin/ksh
    # This script. is intended to change a database user password
    # 23.mar.2004, by catalin ciontu
    # Arguments: database username and password
    # Setting of the environment ...
    TERM=vt100
    export TERM
    . /d00/applvis/visdbappl/APPSORA.env
    WORKDIR=~/scripts
    export WORKDIR
    cd $WORKDIR
    SYSTEMPWD=<!put_your_system_pwd_here!>
    export SYSTEMPWD
    MAILTO="cciontu@yahoo.com"
    export MAILTO
    # Testing for passing the argument from CM ...
    if [ -z "$1" ]
    then
    echo "Please pass the 1st argument ... make sure that CM program passes the parameters to this script. ...  "
    exit 1
    fi
    # Please build the allowed_list.lst prior to executing this script. ...
    test -f allowed_list.lst
    if [ $? = 1 ]
    then
    echo "There is no list of allowed database users to have password changed ... Please create such a file under $WORKDIR/allowed_list.lst on the CM-tier : enter one database user account per line ... no extra spaces ... "
    exit 1
    fi
    # Because OA 11i passes its internal params to any CM program (ie. 1 to 8 are occupied by prog_name, req_id, login_id, userid, username, printer, save, copies), starting with the 9th we can have our own customized parameters: ie: database username and its passwd .
    USR=`echo $1|cut -f9 -d " "|cut -f2 -d '"'`
    export USR
    PWD=`echo $1|cut -f10 -d " "|cut -f2 -d '"'`
    export PWD
    /usr/bin/fgrep -i -x $USR $WORKDIR/allowed_list.lst
    if [ $? = 0 ]
    then
    # Connect to the database and change user's password ...
    sqlplus -silent system/$SYSTEMPWD > /dev/null 2>&1 <<EOF
    set serveroutput on
    set feedback on
    set echo on
    spool chgdbpwd.lst
    alter user $USR identified by $PWD;
    spool off
    exit;
    EOF
    # Now, we'll notify the dba group for password change attempts ...
    /usr/bin/mailx -s "Please be notified that an attempt to change a database user password - listed in the allowed_to_change_list: $USR/$PWD - was made in $TWO_TASK instance ... See body for results ... " $MAILTO < $WORKDIR/chgdbpwd.lst > /dev/null 2>&1
    rm chgdbpwd.lst
    fi
    -----script. chgdbpwd ends here -------------------------------------------------------------------------------------


    -----example of allowed_list.lst follows----------------------------------------------------------------------------
    catalin
    mihaela
    ada
    -----example of allowed_list.lst ends here--------------------------------------------------------------------------


    Remarks:
    --------
    1. As of Oracle Applications 11.5.9, the order of DEFAULT parameters is like:
    FCP_REQID=154870 FCP_LOGIN="APPS/..." FCP_USERID=1109 FCP_USERNAME="CATALIN"
    FCP_PRINTER="noprint" FCP_SAVE_OUT=Y FCP_NUM_COPIES=0
    If you want to specify your own parameters, you'll start with parameter number 9. See the script. chgdbpwd.

             

                成长

           /      |     \

        学习   总结   分享

    QQ交流群:122230156

  • 相关阅读:
    大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
    【经典数据结构】Trie
    [LeetCode] MaximumDepth of Binary Tree
    [LeetCode] Minimum Depth of Binary Tree
    二叉树相关题目总结
    python之函数基础总结
    python基础之文件处理总结
    利用for循环和range输出9 * 9乘法口诀表
    购物车程序作业
    字典练习
  • 原文地址:https://www.cnblogs.com/benio/p/2077403.html
Copyright © 2011-2022 走看看