6 Replies Latest reply: Apr 12, 2013 6:27 AM by indra budiantho RSS

    How to kill a Form ?

    dassdhan
      Hello,

      I m working in 11gr2 Forms 64-bit with Weblogic server 10.3.6 on Windows Server 2008 Ent 64-bit edition.

      While compiling a Form, if it is open on client computer, it doesn't compile. So I have to inform the user to first close that form on client computer, then I can compile that form.

      But this was not necessary while working in 6i form application. I can the form, while running of the form.

      Is it not possible in 11gr2 Forms ?
      If not then tell me how can I kill that form without waiting a user to close?

      Warm Regards
      Dass
        • 1. Re: How to kill a Form ?
          Michael Ferrante-Oracle
          You can overcome this but at a cost. If you disable memory mapping your form will be fully loaded into memory thereby allowing the environment to not lock the file. The problem with this is that you will see an overall increase in memory consumption. This generally would not be a problem if the concurrent user load remains fairly low. In other words, if your machine (server) has substantial memory and you don't have a large concurrent user base then you like are ok leave memory mapping disabled. Generally, I would recommend using this carefully and most often not recommend using it in production environments. That said, to disable memory mapping, add the following to default.env:

          FORMS_MMAP=0
          • 2. Re: How to kill a Form ?
            AlexDiniasi
            Hello,

            One solution for this problem is to use parameter FORMS_MMAP/FORMS60_MMAP as described
            in the following metalink document :

            Note:151618.1 "Unable to Replace .fmx Files 'On The Fly' During Forms Runtime"

            However as described in this document, this parameter should not be used in production
            environments.

            When there is no or very little maintenance periods in production systems to
            perform such copy operations or there is an urgent need to replace a runtime module,
            the following method is the recommended method :

            Keep two directories including the same fmx/plx/pll/mmx, etc files, and
            reference one of them in the FORMSXX_PATH in default.env/registry according to
            the patform. Here FORMSXX_PATH stands for

            FORMS60_PATH for Forms version 6.0.X
            FORMS_PATH for Forms version 10.X /11.X

            When you need to replace one/some runtime modules, replace the one
            in the directory that is NOT referenced in the FORMSXX_PATH variable, then
            change the reference to the updated directory in FORMSXX_PATH. From now on, the
            new connections will start using the updated runtimes. When all the users
            logout from their current sessions and connect to application once more, the old
            directory will be ready for modifications. And at that time you can synchronize
            the old directory with the new one and continue this way switching the
            directories whenever needed.

            Please note that, when there is a need to replace another form or the same form
            once more, before having the chance to synchronize the directories, this 2
            directory approach can be extended to 3,4 or more directories according to needs.

            FORMS_PATH can be set up in default.env file.

            Regards,
            Alex

            If someone's answer is helpful or correct please mark it accordingly.
            • 3. Re: How to kill a Form ?
              indra budiantho
              just kill from the database:
              SELECT s.inst_id,
                     s.sid,
                     s.client_info,
                     s.serial#,
                     p.spid,
                     s.username,
                     s.program
              FROM   gv$session s
                     JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
              WHERE  s.type != 'BACKGROUND'
              and client_info like '%/1331'; --- 1331 is user id  or check that column
              
              ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
              Edited by: indra budiantho on Apr 4, 2013 4:16 PM
              • 4. Re: How to kill a Form ?
                dassdhan
                Thanks Alex !

                When I changed FORMSPATH variable in default.env file, then
                Is it not necessary to Stop Weblogic Server-WLS_FORMS and Start Weblogic Server-WLS_FORMS to take in effect ?
                if yes then this will disconnect all users. Otherwise OK.

                Please clarify.

                Thanks/Regards.
                Dass.
                • 5. Re: How to kill a Form ?
                  dassdhan
                  Thanks Indra!

                  But your query doesn't resolve my problem as below;

                  1. It shows USERNAME, which are database users, but I want Forms Users, which I defined in a database table.

                  2. It shows PROGRAM, which is frmbld.exe which is form builder file, but I want my application specific form i.e. which form is currently open by the user.

                  Please give me quey which shows me a specific current form using by a user.

                  Thanks/Regards.
                  Dass.

                  Edited by: dassdhan on Apr 12, 2013 2:07 AM
                  • 6. Re: How to kill a Form ?
                    indra budiantho
                    hi, here how you can put your user information in the database, so u can use my query,call this in your form :
                    DBMS_APPLICATION_INFO.set_CLIENT_INFO
                    DBMS_APPLICATION_INFO.READ_CLIENT_INFO

                    http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_appinf.htm