Each Mid-Process Receive/Invoke spawning new instance

I have the following flow in my interface:
Composite1 -> BPEL 1 & BPEL 2
Composite2 -> BPEL 3
Mock Service in OSB -> Writes the data to JMS Q (Say Q1)
BPEL 1 -> Gets trigerred by passing input,do some validations,invoke the mock service(Internally puts data into Q1), then post the data into another JMS Q (Say Q2) and then have a mid process receive on Q3, after listening updates the response and reply to the client with the same.
BPEL 3 -> Polls Q1 and put data into Q4 with some value in JMS Correlation ID.
BPEL 2 -> Gets triggered as soon as we get the data in Q4,just after this receive we have another receive on Q2, Correlation happens here and then data is put into Response Queue (Q3).
As in each BPEL we have to set Create Instance = Yes for the first receive, so I have done the same in all the 3 BPEL's.
So I expect 2 instances of Composite1 and 1 instance of Composite 2 to come when I run the interface.
But, I am getting 4 instances of Composite 1 and 1 Instance of Composite 2.
Can any one please advise on this.I am facing lot of issues because of this.
PS: The correlation is happening on each mid process receive.
Edited by: 914654 on Feb 7, 2013 2:38 AM

Hi,
You have to use correlation sets in BPEL as well... JMS Correlation ID only won't be enough... Have a look at this...
http://docs.oracle.com/cd/E17904_01/integration.1111/e10224/bp_async.htm#CIHBIEEJ
Cheers,
Vlad

Similar Messages

  • Mid-process Receive (onEvent) is not picking up published event

    We have a composite (CompositeA), which has 2 BPEL processes (bpelprocess1 and bpelprocess2). bpelprocess1 is synchronous and bpelprocess2 is a one-way. bpelprocess1 receives a message from the client - then sends the message using a one-way Invoke action to bpelprocess2 - bpelprocess2 transforms the message and assigns some values - then sends the message to Event1 through an Invoke action - bpelprocess1 has a Receive activity waiting for an event from Event1 - then it will send the message back to the client as the Reply. Everything works up to the point where the bpelprocess1 Receive(onEvent) activity is waiting for an event, it sits in this "Pending" state until the SyncMaxWaitTime value has expired and then we get a timeout error (see below).
    "Waiting for response has timed out. The conversation id is null. Please check the process instance for detail."
    So our question is, why does the Receive(onEvent) in bpelprocess1 never pick up the published event? We've run some additional tests to ensure the event is being published, and that has been confirmed.
    Is it possible to receive an event that was published during the current instance of the process (i.e., since bpelprocess1 invoked bpelprocess2 which invoked the Event1 publish, can bpelprocess1 perform a mid-process Receive of the event that was just published?
    Please let us know if this makes sense or if you have any additional questions.
    On a side note, if we create an independent mediator component in the same composite and have it subscribe to Event1 as well, then just write the message out to a file. It would not pick up the message from the EDN in the scenario described above, if we set the property nonBlockingInvoke=true or bpel.config.transaction=requiresNew on the bpelprocess2 partnerlink from bpelprocess1, the Mediator would get the message from the EDN, but bpelprocess1 still timed out waiting for the event. If we setup another BPEL process (bpelprocess3) in the same composite (though not linked to bpelprocess1 and bpelprocess2) and it has a mid-process receive onEvent listening for Event1, it does not pick up the published event either, so seems to be an issue with the mid-process receive onEvent in the synchronous BPEL process.
    Any help is appreciated.

    Thanks for the reply, but there is no issue with the one-way from bpel1 to bpel2, we do not expect nor want a response from bpel2, it should just publish the event and complete. The bpel1 should continue it's flow (which it does) and the next action is a Receive action listening for an event (that was published by bpel2), but the Receive never finds the event.
    Here's a less complex use case:
    1. bpelprocess1 is a synchronous process which publishes to Event1 (this completes successful and returns a success message to the client)
    2. bpelprocess2 is an asynchronous process which has a mid-process Receive action that is listening for Event1
    3. bpelprocess3 is a process which is initiated by Event 1
    If we execute bpelprocess2 it will set at the mid-process Receive action in a PENDING state, waiting for Event1 to occur.
    If we then execute bpelprocess1 the Event1 is published and we receive a "SUCCESS" response back.
    At this point bpelprocess3 is initiated (b/c it's initial Receive is triggered by Event1)
    We would also expect the mid-process Receive in bpelprocess2, which is in a PENDING state to trigger, but it never does.
    Hopefully this use case makes more sense.

  • [Solved] Stumpwm run-or-raise conkeror spawns new instances

    Hi all,
    I recently had to do an install from scratch, and for some reason my setup with conkeror is broken.  I have a key bound to run-or-raise conkeror, but it just keeps starting more windows instead of raising the existing one.  Here's the code I'm using:
    (defcommand conkeror () ()
    "Start conkeror unless it is already running, in which case focus it."
    (run-or-raise "conkeror" '(:class "Conkeror")))
    (define-key *root-map* (kbd "b") "conkeror")
    The same syntax with Emacs, firefox, evince and skype all behave correctly. Any ideas? It almost seems like stumpwm isn't detecting the :class correctly? Or a new version of Conkeror has a different class defined? Is there any way to check that?
    EDIT: Apparently posting questions makes my google "skills" start working again, and I found an answer. It's an existing bug in Xulrunner. The Conkeror window _is_ reporting a different class (Xulrunner-15).  See the bug filed here:
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684333
    Apparently this will go away with Xulrunner-16.  In the mean time, changing the :class line in my stumpwmrc fixed it.
    Last edited by LeftyAce (2012-08-20 01:31:11)

    Hi. My openbox autostart works without the first hashbang line and without execute permission. But this file is read only if openbox is started with the 'openbox-session' command in standalone mode.
    If you didn't copy the 'lxde-rc.xml' file yourself then I presume that the lxde display manager did it for you and has specified that file as the config file instead of rc.xml with the '--config-file FILE' option; I don't know lxde, but you can verify how openbox is launched with the 'ps -ef' command.
    But only one config file should be used and the default is 'rc.xml' if it is not changed with the '--config-file FILE' option.
    You need to verify all this to undestand what happens in your installation.
    Last edited by berbae (2014-08-11 09:34:41)

  • BPM processes,receiving signals (events) & correlation to existing instance

    Hi,
    BPM 11g/SOA Suite 11g (R1 PS2)
    I am wondering whether it is possible to receive signals (EDN events) into a running process instance. The documentation describes how a process can be started by an event. I would like to be able to feed an event (signal) into a running process (just like we do with correlation in BPEL processes). Is that possible - and if so, how?
    Along the same lines, can BPM processes receive messages through externally exposed WebService operations - into correlated process instances? For example: I have started the process to create a new employee in the organization and I want to inform the process instances taking care of this employee that she will start on a later date than originally assumed (or not at all because she has accepted another job). I know the unique employee id for this new hire. How can I configure the BPM process such that this incoming call after the instance has started is fed into a Receive activity in the process instance working on this employee?
    Maybe a similar is question would be: can a message catch event be used without a corresponding message throw event - to catch incoming messages asynchronously and not related to a message sent by the process instance.
    thanks very much for your insights,
    Lucas

    I also tried DB Adapters and it is not working for my scenario. Needed help/pointers from a BPM Guru \.
    As per my business scenario, If there any update in the database (offline approval. not using worklist) then i should complete the running BPM process for approval.
    1. To achieve this, I created a adapter to poll and it is working in polling. What is not working is picking the update in process and mark is closed/complete.
    2. I tried using Catch Event with continuation mode (but it needs throw event to begin with).
    3. I also tried ‘Receive event’, which also needs start event for continuation.
    4. If i use Initiate mode for catch event then it initiate a new process and mark it close and does not do anything with original process (having this catch event). This catch event is still waiting.
    5. If i use “receive” event with Initiate mode then jdeveloper is giving compilation time error saying that some service is not referenced in composite.
    6. I have also tried other options of using “Sub-process” or another process and invoking it but nothing seems to work.
    Any help/pointers? Thanks a lot.

  • Webforms spawns new ifweb60 processes

    My configuration:
    NT4.0 sp3
    Oracle 8.0.5
    OAS 4.0.7
    Dev60 deployment with patch1 and 2 installed.
    After installing patch 1 and 2 to dev60, my webforms would not
    work. I then followed a suggestion mentioned earlier by setting
    FORMS_TIMEOUT to 0.
    Now it works but the server keeps spawning new ifweb60 processes
    every 5 seconds or so as long as i am running the webforms
    application.
    Any suggestions?
    Yours,
    Rune Skogseide
    null

    This is the command that executes that hangs:
    D:\Oracle\Services\jdk\jre\bin\javaw -server -cp "D:\Oracle\Services\j2ee\home\lib\ojsp.jar;D:\Oracle\Services\reports\jlib\rwrun.jar;D:\Oracle\Services\jlib\zrclient.jar" -Duser.language=sv -Duser.region=SE -Xmx256M oracle.reports.engine.RWEngine name=rwEng-0 server=rep_asapp03_services ORACLE_HOME=D:\Oracle\Services engineimplclass=oracle.reports.engine.EngineImpl cacheDir=D:\AL\RoR\Client\Web\Temp tempDir="D:\AL\RoR\Client\Web\Temp" keepConnection="yes" server_ior="C:\xxxxxxxxxxxxxxxx\Temp\rep_asapp03_services_18500564_1287061324288"
    (The x is a localdir)

  • I have to enter the remember password login at least twice each time I open a new instance of Firefox. Is there a fix for this problem?

    I have to enter the remember password login at least twice each time I open a new instance of Firefox. Is there a fix for this problem?
    == This happened ==
    Every time Firefox opened
    == installed 3.5

    @the-edmeister
    Thanks for the advice. In my case, it is sufficient to '''uncheck''' " Saved passwords".
    ('''''Preferences -> Privacy -> Clear History when Firefox closes -> Settings -> Saved Passwords''''').
    Great to have Sync. :)

  • How to create new instance of the process from external web apps?

    Hi Everyone,
    How to create a new instance of the process which deploy to the weblogic server from the external web app?
    Thank you.

    Assuming the process includes a message start event, the simplest way is to use Web Service call. Once you've deployed the process you can use Enterprise Manager to get the URL of the WSDL. There's and icon at the top of the composite summary page for getting the WSDL, or you can get it from the test page. Use that WSDL URL to construct the client to use from the web app. If it's an ADF client you can generate either an ADF Data Control or a client proxy.

  • Creating new instances of MDBs at runtime

    I am creating an application with a single input point (messages on a JMS Queue). The application needs to be multi-threaded, but would like to process the messages sequentially based on the message type.
    For example, a message of type A and a message type B can be processed simultaneously, but only 1 message of type A can be processed at a time. So if the application is processing a message of type A, and it receives another type A message, it must complete the first message before processing the second message.
    What I would like to do is have a single MDB (called the dispatcher MDB) that listens on the input point (JMS Queue). The dispatcher MDB calls onMessage() which will look at the message type and the forward to another JMS Queue based on the type. For example, if message type is A, send to Queue A, else if message type B, send to Queue B and so on. Each queue would have a MDB instance servicing the messages. In order to process the messages sequentially on each queue, the pool size for each MDB would be 1.
    My problem is that I don't know how many message types there are, this is decided at runtime.
    How can I create the Queues and register MDB at runtime?
    After some research, I have found the ability to create the Queues using JMX. But, I cannot seem to find details on how to create a register an MDB and tell it to listen on a particular Queue. Has anyone had any experience doing such a thing?

    OK, i have some code similar to below, where I want to
    create a new instance of the class BookRecord which
    takes parameters from Book b, which is an instance if
    the class Book.
    //This is code from the Libraray class
    public void addBookRecord(Book  b, String author,
    String title)
    bookHolder  = new BookRecord(b, author, title);
    }Now this creates a new BookRecord object that has an
    author and title which refer to the Book b. Now when i
    invoke the method again, choosing the same object for
    b as i did last time it creates a second BookRecord
    object, when I just want it to overwrite the values of
    the previous BookRecord object. how can i do this
    simply?
    Thanks in advanceWell I am not quite sure if I understood.
    But refering to what you wrote I would say:
    //This is code from the Libraray class
    public void addBookRecord(Book  b, String author, String title)
            if(bookHolder.getBook() != b)
               // Not the same book object
               bookHolder  = new BookRecord(b, author, title);
             else
                // same book object
                bookHolder.setAuthor(author);
                book.setTitle(tile);
    As I said may be totally not what you are looking for.
    Regards
    Tarik

  • MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-19
    MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )
    =========================================================
    PURPOSE
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Explanation
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    Oracle 8i에는 다중 archive destination을 지원하며, 단일 archiver의
    부하를 줄여주기 위해 multiple archiver process를 사용할 수 있다.
    LOG_ARCHIVE_MAX_PROCESSES 파라미터로 구동시킬 최대 ARCH 프로세스의
    갯수를 지정하면 된다.
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면 인스턴스 구동시
    init 파일에 지정된 LOG_ARCHIVE_MAX_PROCESSES에 지정된 값을 읽어
    들인다. 만약 LOG_ARCHIVE_START 값이 true인데 LOG_ARCHIVE_MAX_PROCESSES
    값이 별도로 지정되어 있지 않을 경우에는 arc0 프로세스만을 구동시킨다.
    LOG_ARCHIVE_MAX_PROCESSES 값이 별도로 지정되었을 경우 (1 - 10 범위),
    arc0, arc1 과 같은 추가 프로세스를 구동시킨다.
    하지만, 이 파라미터 값을 기본값 1이 아닌 다른 값으로 명시적으로 지정할
    필요는 없다. 왜냐하면, 시스템에서 몇개의 ARCn 프로세스가
    필요한지를 판단하여, 추가 ARCn 프로세스를 생성하기 때문이다.
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    alter system 명령에서 set LOG_ARCHIVE_MAX_PROCESSES=n 으로
    지정하여 동적으로 값을 변경할 수 있다. 이때 n은 1 부터 10사이의
    값이어야 한다. 하지만, LOG_ARCHIVE_START 값이 FALSE로 지정되어
    있을 경우에는, 명령을 실행시켜도 아무런 영향을 미치지
    못한다.
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면, 오라클에서는
    구동시 하나의 archiver process (ARC0)를 구동시킨다. 이 파라미터
    값은 필요시 LATER SYSTEM 명령으로 지정된 갯수만큼의
    archive process를 구동시킬 수 있다.
    예)
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=4;
    위 명령을 실행 시키면 다음과 같은 절차에 따라 ARC1, ARC2, ARC3를
    추가한다.
    1) Shadow process는 primary archive process에게 프로세스 갯수를
    늘릴 것을 요청한다.
    2) Archiver process는 kcrrschd 함수를 호출한다. (kcrrschd:
    다중 arch process를 schedule)
    3) 만약 요청된 process의 갯수가 현재 사용중인 archiver process
    갯수보다 작은지 확인한다. 만약 새로 지정된 값이 적거나, ARCHIVING이
    DISABLE 된 상태라면 다른 조치를 취하지 않고 return 한다. 그렇지
    않다면 지원되는 최대 갯수인 10을 넘는지 확인하고 10을 넘을 경우에는
    프로세스의 갯수를 10으로 지정한다.
    4) Scheduler 함수는 kcrxs{} structure에 대한 latch를 확보한다.
    여기서 kcrxs{} structure는 ARCH Activation status를 나타낸다.
    5) Scheduler 함수는 지정된 process 갯수 만큼 loop를 돌면서
    schedule된 상태를 structure KCRRSCHED에 반영시킨다.
    6) 그리고 나서 latch를 release 시킨 후 kcrrsmp 함수를 ( kcrrsmp:
    다중 arch processs 구동 ) 호출한다.
    7) kcrrsmp 함수는 kcrrxs{} structure (ARCH 구동 상태)에 대한 latch를
    확보하여 code 실행을 serialize 시켜 이 함수가 동시에 실행되더라도
    한번에 하나씩 실행될 수 있도록 한다.
    8) pending 상태에 있는 archiver process를 스케쥴링 하고, dead process가
    있으면 clean up 시킨다.
    9) 그리고 나서 이 함수는 지정된 process 갯수 만큼 loop를 돌면서
    KCRRSCHED 상태를 KCRRSTART으로 바꾸어, archiver process들을
    구동 준비 상태로 만든다.
    10) latch를 release 시킨 후 ARCH 프로세스를 구동시킨다.
    11) kcrrsmp함수는 latch를 다시 획득한다. 각각의 archiver 프로세스는
    자기 자신을 activate 시킬 것을 통보 받는다. archiver process는
    자기 자신을 activate 시킨 후 alert file에 관련 사항을 기록한다.
    12) 호출을 하는 함수는 모든 archiver process가 자기 자신을
    activate 시키고, kcrrxs structure의 내용을 갱신할 때 까지
    sleep 상태에서 대기한다.
    13) 끝으로, 현재 archiver process의 갯수가 요청된 archiver process
    의 갯수와 일치 하면, latch를 release 시키고 break 한다. ( C
    에서의 break )
    alert. log 에는 위 과정이 다음과 같이 반영된다.
    sql: prodding the archiver
    ALTER SYSTEM SET log_archive_max_processes=4;
    Tue Jul 13 02:15:14 1999
    ARC0: changing ARC1 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC2 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC3 KCRRNOARCH->KCRRSCHED
    ARC0: STARTING ARCH PROCESSES
    ARC0: changing ARC1 KCRRSCHED->KCRRSTART
    ARC0: changing ARC2 KCRRSCHED->KCRRSTART
    ARC0: changing ARC3 KCRRSCHED->KCRRSTART
    ARC0: invoking ARC1
    Tue Jul 13 02:15:15 1999
    ARC1: changing ARC1 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC1
    ARC0: ARC1 invoked
    ARC0: invoking ARC2
    ARC1 started with pid=10
    ARC1: Archival started
    Tue Jul 13 02:15:15 1999
    ARC2: changing ARC2 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC2
    ARC2 와 ARC3도 동일한 절차를 따른다.
    흥미로운 사실은 프로세스의 갯수를 줄일 수도 있다는 것이다. 예를 들어
    다음과 같은 명령을 실행시킬 경우
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=2;
    다음과 같은 작업이 순서대로 실행된다.
    1) shadow process는 현재 active 상태인 archiver process와 접속을 한다.
    2) archiverprocess는 kcrrxmp 함수를 호출한다. ( kcrrxmp: 다중
    Arch process 정지 )
    3) kcrrxmp 함수는 kcrrxs{} structure에 (ARCH 구동 상태) 대한 latch를 획득하여 다른 프로세스에서 structure를 동시에 병경하지 않도록 한다.
    4) 새로 요청된 archiver process의 갯수가 현재 사용중인 archiver process
    의 갯수보다 작은지 확인한다.
    5) 만약 작다면, archiver process 목록 가운데, 가장 최근에 schedule
    되어, archival 작업에 schedule 차례가 금방 돌아 오지 않을 프로세스를
    찾아낸다.
    6) 각각의 프로세스에 대해 KCRRACTIVE 상태에서 KCRRSHUTDN로 상태를
    변경할 것을 요청한다.
    7) 상태가 바뀌면, OS에서 해당 프로세스를 종료시키도록 하고, 상태를
    KCRRDEAD로 바꾼다. 관련된 상태 정보가 정리되고 kcrrxs{} structure의
    내용이 갱신된다.
    6) ,7) 과정은 지정된 archiver process 갯수로 줄어들 때 까지
    반복된다.
    8) 새로운 archiver process의 갯수로 kcrrxs structure 내용이 갱신된다.
    9) latch를 release 시킨다.
    상태 변동은 다음과 같이 alert. log 파일에 반영된다.
    sql: prodding the archiver
    Tue Jul 13 00:34:20 1999
    ARC3: changing ARC0 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC0 shutdown message
    ARC3: changing ARC1 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC1 shutdown message
    ARC3: received prod
    Tue Jul 13 00:34:20 1999
    ALTER SYSTEM SET log_archive_max_processes=2;
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC0: Archival stopped
    ARC0: changing ARC0 KCRRSHUTDN->KCRRDEAD
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC1: Archival stopped
    ARC1: changing ARC1 KCRRSHUTDN->KCRRDEAD
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Archiver process는 round-robin 방식으로 archiving 작업을 수행하도록
    schedule 된다. 만약 다중 archiver process가 부하에 따라 activate 된
    경우는 여러가지 경우의 수가 있을 수 있다. Oracle 8i에서는 다중
    archive log dest를 지원하면서 archive log에 대한 duplexing을 지원
    하기 때문에, 어떤프로세스가 log file을 archive 시켰는지를 기록할 필요가
    있다.
    Oracle 8i에서 archival 작업은 성공할 때 마다 trace file에 archiver
    process 명을 기록한다.
    다음은 관련 trace file의 주요 내용이다.
    Instance name: v815
    Redo thread mounted by this instance: 1
    Oracle process number: 12
    Unix process pid: 3658, image: oracle@oracle8i (ARC3)
    *** Session ID:(12. 1) 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Begin archiving log# 1 seq# 38 thrd# 1
    ARC3: VALIDATE
    ARC3: PREPARE
    ARC3: INITIALIZE
    ARC3: SPOOL
    ARC3: Creating archive destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Archiving block 1 count 1 to : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Closing archive destination 1 : /bigdisk/oracle8i/dbs/arch/1_38.
    dbf
    ARC3: FINISH
    ARC3: Archival success destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: COMPLETE, all destinations archived
    ARC3: ArchivedLog entry added: /bigdisk/oracle8i/dbs/arch/1_38. dbf
    ARC3: ARCHIVED
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Completed archiving log# 1 seq# 38 thrd# 1
    이 정보를 가지고, archive process 3이 log sequence 38번을
    destination 1 :/bigdisk/oracle8i/dbs/arch 에 archive 시킨 것을 알 수 있다.
    Reference Ducumment
    <Note:73163.1>

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-19
    MULTIPLE ARCHIVER PROCESSES FAQ ( ORACLE 8I NEW FEATURE )
    =========================================================
    PURPOSE
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Explanation
    1. LOG_ARCHIVE_MAX_PROCESSES가 하는 역할
    Oracle 8i에는 다중 archive destination을 지원하며, 단일 archiver의
    부하를 줄여주기 위해 multiple archiver process를 사용할 수 있다.
    LOG_ARCHIVE_MAX_PROCESSES 파라미터로 구동시킬 최대 ARCH 프로세스의
    갯수를 지정하면 된다.
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면 인스턴스 구동시
    init 파일에 지정된 LOG_ARCHIVE_MAX_PROCESSES에 지정된 값을 읽어
    들인다. 만약 LOG_ARCHIVE_START 값이 true인데 LOG_ARCHIVE_MAX_PROCESSES
    값이 별도로 지정되어 있지 않을 경우에는 arc0 프로세스만을 구동시킨다.
    LOG_ARCHIVE_MAX_PROCESSES 값이 별도로 지정되었을 경우 (1 - 10 범위),
    arc0, arc1 과 같은 추가 프로세스를 구동시킨다.
    하지만, 이 파라미터 값을 기본값 1이 아닌 다른 값으로 명시적으로 지정할
    필요는 없다. 왜냐하면, 시스템에서 몇개의 ARCn 프로세스가
    필요한지를 판단하여, 추가 ARCn 프로세스를 생성하기 때문이다.
    2. LOG_ARCHIVE_MAX_PROCESSES 값은 동적으로 변경 가능한지 여부
    alter system 명령에서 set LOG_ARCHIVE_MAX_PROCESSES=n 으로
    지정하여 동적으로 값을 변경할 수 있다. 이때 n은 1 부터 10사이의
    값이어야 한다. 하지만, LOG_ARCHIVE_START 값이 FALSE로 지정되어
    있을 경우에는, 명령을 실행시켜도 아무런 영향을 미치지
    못한다.
    3. Archiver process의 갯수가 동적으로 바뀌는 메카니즘
    만약 LOG_ARCHIVE_START 값이 TRUE로 지정되어 있다면, 오라클에서는
    구동시 하나의 archiver process (ARC0)를 구동시킨다. 이 파라미터
    값은 필요시 LATER SYSTEM 명령으로 지정된 갯수만큼의
    archive process를 구동시킬 수 있다.
    예)
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=4;
    위 명령을 실행 시키면 다음과 같은 절차에 따라 ARC1, ARC2, ARC3를
    추가한다.
    1) Shadow process는 primary archive process에게 프로세스 갯수를
    늘릴 것을 요청한다.
    2) Archiver process는 kcrrschd 함수를 호출한다. (kcrrschd:
    다중 arch process를 schedule)
    3) 만약 요청된 process의 갯수가 현재 사용중인 archiver process
    갯수보다 작은지 확인한다. 만약 새로 지정된 값이 적거나, ARCHIVING이
    DISABLE 된 상태라면 다른 조치를 취하지 않고 return 한다. 그렇지
    않다면 지원되는 최대 갯수인 10을 넘는지 확인하고 10을 넘을 경우에는
    프로세스의 갯수를 10으로 지정한다.
    4) Scheduler 함수는 kcrxs{} structure에 대한 latch를 확보한다.
    여기서 kcrxs{} structure는 ARCH Activation status를 나타낸다.
    5) Scheduler 함수는 지정된 process 갯수 만큼 loop를 돌면서
    schedule된 상태를 structure KCRRSCHED에 반영시킨다.
    6) 그리고 나서 latch를 release 시킨 후 kcrrsmp 함수를 ( kcrrsmp:
    다중 arch processs 구동 ) 호출한다.
    7) kcrrsmp 함수는 kcrrxs{} structure (ARCH 구동 상태)에 대한 latch를
    확보하여 code 실행을 serialize 시켜 이 함수가 동시에 실행되더라도
    한번에 하나씩 실행될 수 있도록 한다.
    8) pending 상태에 있는 archiver process를 스케쥴링 하고, dead process가
    있으면 clean up 시킨다.
    9) 그리고 나서 이 함수는 지정된 process 갯수 만큼 loop를 돌면서
    KCRRSCHED 상태를 KCRRSTART으로 바꾸어, archiver process들을
    구동 준비 상태로 만든다.
    10) latch를 release 시킨 후 ARCH 프로세스를 구동시킨다.
    11) kcrrsmp함수는 latch를 다시 획득한다. 각각의 archiver 프로세스는
    자기 자신을 activate 시킬 것을 통보 받는다. archiver process는
    자기 자신을 activate 시킨 후 alert file에 관련 사항을 기록한다.
    12) 호출을 하는 함수는 모든 archiver process가 자기 자신을
    activate 시키고, kcrrxs structure의 내용을 갱신할 때 까지
    sleep 상태에서 대기한다.
    13) 끝으로, 현재 archiver process의 갯수가 요청된 archiver process
    의 갯수와 일치 하면, latch를 release 시키고 break 한다. ( C
    에서의 break )
    alert. log 에는 위 과정이 다음과 같이 반영된다.
    sql: prodding the archiver
    ALTER SYSTEM SET log_archive_max_processes=4;
    Tue Jul 13 02:15:14 1999
    ARC0: changing ARC1 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC2 KCRRNOARCH->KCRRSCHED
    ARC0: changing ARC3 KCRRNOARCH->KCRRSCHED
    ARC0: STARTING ARCH PROCESSES
    ARC0: changing ARC1 KCRRSCHED->KCRRSTART
    ARC0: changing ARC2 KCRRSCHED->KCRRSTART
    ARC0: changing ARC3 KCRRSCHED->KCRRSTART
    ARC0: invoking ARC1
    Tue Jul 13 02:15:15 1999
    ARC1: changing ARC1 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC1
    ARC0: ARC1 invoked
    ARC0: invoking ARC2
    ARC1 started with pid=10
    ARC1: Archival started
    Tue Jul 13 02:15:15 1999
    ARC2: changing ARC2 KCRRSTART->KCRRACTIVE
    Tue Jul 13 02:15:15 1999
    ARC0: Initializing ARC2
    ARC2 와 ARC3도 동일한 절차를 따른다.
    흥미로운 사실은 프로세스의 갯수를 줄일 수도 있다는 것이다. 예를 들어
    다음과 같은 명령을 실행시킬 경우
    SVRMGRL>alter system set LOG_ARCHIVE_MAX_PROCESSES=2;
    다음과 같은 작업이 순서대로 실행된다.
    1) shadow process는 현재 active 상태인 archiver process와 접속을 한다.
    2) archiverprocess는 kcrrxmp 함수를 호출한다. ( kcrrxmp: 다중
    Arch process 정지 )
    3) kcrrxmp 함수는 kcrrxs{} structure에 (ARCH 구동 상태) 대한 latch를 획득하여 다른 프로세스에서 structure를 동시에 병경하지 않도록 한다.
    4) 새로 요청된 archiver process의 갯수가 현재 사용중인 archiver process
    의 갯수보다 작은지 확인한다.
    5) 만약 작다면, archiver process 목록 가운데, 가장 최근에 schedule
    되어, archival 작업에 schedule 차례가 금방 돌아 오지 않을 프로세스를
    찾아낸다.
    6) 각각의 프로세스에 대해 KCRRACTIVE 상태에서 KCRRSHUTDN로 상태를
    변경할 것을 요청한다.
    7) 상태가 바뀌면, OS에서 해당 프로세스를 종료시키도록 하고, 상태를
    KCRRDEAD로 바꾼다. 관련된 상태 정보가 정리되고 kcrrxs{} structure의
    내용이 갱신된다.
    6) ,7) 과정은 지정된 archiver process 갯수로 줄어들 때 까지
    반복된다.
    8) 새로운 archiver process의 갯수로 kcrrxs structure 내용이 갱신된다.
    9) latch를 release 시킨다.
    상태 변동은 다음과 같이 alert. log 파일에 반영된다.
    sql: prodding the archiver
    Tue Jul 13 00:34:20 1999
    ARC3: changing ARC0 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC0 shutdown message
    ARC3: changing ARC1 KCRRACTIVE->KCRRSHUTDN
    ARC3: sending ARC1 shutdown message
    ARC3: received prod
    Tue Jul 13 00:34:20 1999
    ALTER SYSTEM SET log_archive_max_processes=2;
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC0: Archival stopped
    ARC0: changing ARC0 KCRRSHUTDN->KCRRDEAD
    Tue Jul 13 00:34:20 1999
    ARCH shutting down
    ARC1: Archival stopped
    ARC1: changing ARC1 KCRRSHUTDN->KCRRDEAD
    4. 어떤 archiver process가 online log를 archive시켰는지 판단 방법
    Archiver process는 round-robin 방식으로 archiving 작업을 수행하도록
    schedule 된다. 만약 다중 archiver process가 부하에 따라 activate 된
    경우는 여러가지 경우의 수가 있을 수 있다. Oracle 8i에서는 다중
    archive log dest를 지원하면서 archive log에 대한 duplexing을 지원
    하기 때문에, 어떤프로세스가 log file을 archive 시켰는지를 기록할 필요가
    있다.
    Oracle 8i에서 archival 작업은 성공할 때 마다 trace file에 archiver
    process 명을 기록한다.
    다음은 관련 trace file의 주요 내용이다.
    Instance name: v815
    Redo thread mounted by this instance: 1
    Oracle process number: 12
    Unix process pid: 3658, image: oracle@oracle8i (ARC3)
    *** Session ID:(12. 1) 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 15. 15. 000
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Begin archiving log# 1 seq# 38 thrd# 1
    ARC3: VALIDATE
    ARC3: PREPARE
    ARC3: INITIALIZE
    ARC3: SPOOL
    ARC3: Creating archive destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Archiving block 1 count 1 to : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: Closing archive destination 1 : /bigdisk/oracle8i/dbs/arch/1_38.
    dbf
    ARC3: FINISH
    ARC3: Archival success destination 1 : '/bigdisk/oracle8i/dbs/arch/1_38.
    dbf'
    ARC3: COMPLETE, all destinations archived
    ARC3: ArchivedLog entry added: /bigdisk/oracle8i/dbs/arch/1_38. dbf
    ARC3: ARCHIVED
    *** 1999. 07. 13. 02. 33. 06. 000
    ARC3: Completed archiving log# 1 seq# 38 thrd# 1
    이 정보를 가지고, archive process 3이 log sequence 38번을
    destination 1 :/bigdisk/oracle8i/dbs/arch 에 archive 시킨 것을 알 수 있다.
    Reference Ducumment
    <Note:73163.1>

  • Subprocess Relation with Main Process when Invoked programmatically.

    Hi
    JDeveloper 11.1.1.6, WLS 10.3.6, BPM 11.1.1.6
    I have 2 processes A and B. From A I want to invoke B.
    I can think of 2 approaches to do this.
    Approach 1. Call the subprocess B from A using Send and Recieve activities.
    If we do it this way, when an instance of B is created, it is created as a child of the Process A. (When seen in the EM Console)
    Approach 2. Use a Web Service call in the main process. Lets say it is a Java Web Service and we use the following API to invoke the process.
    IInstanceManagementService ims = Fixture.getBPMServiceClient().getInstanceManagementService();
    Task task = ims.createProcessInstanceTask(bpmContext, pms.getCompositeDN()+"/"+pms.getProcessName());
    But I think it will be created as a separate process.
    So my Questions are as follows.
    a. In Approach 2, is there a way to make the sub process B as a child of Process A?
    b. The subprocess B might have to be called more than once in parallel, with some parameters each time.
    I want to understand what is the better approach?
    Use Approach A to call the from a Subprocess (loop) with Parallel, Multi Instance and use Array to pass parameters for each sub process call?
    Or
    Use Approach B?
    Thanks for any help
    Sameer

    Hi Sameer,
    Your send and receive events would be the better of the two options that you've listed. If the two processes are in the same composite project and send and receive events are used, there would be less overhead to calling the subprocess.
    Think you were alluding to this, but you'll also retain the audit trail information if you take the first approach not just in Enterprise Manager but also in the Workspace.
    Dan

  • Checking for a value in a field within a subform before allowing a user to add a new Instance

    Form setup:
    Page name = Page1
    1st Subform within Page1 = Info (set to flowed)
    Objects within Info subform: Name (textfield) and Email (textfield)
    I also have a 2nd subform within Page 1 which contains an add instance button
    What I'm trying to do:
    1. The user needs to enter their Name and Email address then click "Add Instance button" to create a new instance of the Info subform :  _Info.addInstance(1);
    2. If the user fails to enter an email address, I want there to be a mesage box that infos the user that an email address is required before he/she can create a new instance. Note: It would also be nice if the cursor is Set to foucs on the email field within that particular subform instance.
    3. As long as the user tries to continue adding an instance, he/she will be denied if they do not enter an email in that instance
    4. If the user includes an email address in that instance, then the script will create add a new isntance
    5. The process should continue in this manner for each each click of the add instance button
    I presume there nees to be a loop and perhaps a somExpression scipt, but I'm not sure.
    Here's what i have so far (see below)....The script works for the first instance on the page, but it doesn't prevent new instances from being created when the email field in that "current instance" is empty. I want it to prevent the user from adding new instances if the email field is balnk in that "current instance". So, I guess I'm not sure how ot test a field in the current instance in a repeating subform.
    var vName = Info.somExpression + ".email";
        var vEmail = xfa.resolveNode(vName).rawValue;
        if(vEmail == null)
    xfa.host.messageBox("PLease enter an email address.");
    else{
    Form._Info.addInstance(1);
            var i = Form._Info.count - 1;
            xfa.host.setFocus(xfa.resolveNode("Info[" + i + "].Name")); //This set's the focus of the cursor in the Name field of the newly created subform
    Please advise, and thank you in advance!!!!!!

    Hi,
    I think you can acheive what you want just by adding "lastRow.presence = "hidden";" when you do the addInstance, so it now looks like;
    var lastRow = Form.resolveNode("Info["+(_Info.count - 1)+"]"); // Get last row
    if (lastRow.Email.isNull) // If email field empty
        xfa.host.messageBox("Please enter an email address.");
    else
        lastRow.presence = "hidden";
            var newRow = _Info.addInstance();
        xfa.host.setFocus(newRow.Name.somExpression); // set focus to Name field on the row just added
    So whenever you add a row the previous one is hidden?
    For your second issue, if you could have another button on your form, you could ask the user for a password and if they enter it correctly then show for the Info subforms, so;
    var response = app.response({ cQuestion: "Do you want to see all respones?",
                                  cTitle: "Unlock Form",
                                  bPassword: true,
                                  cLabel: "Please enter the password:" });
    if (response === "Password")
        var infoSubforms = Form.resolveNodes("Info[*]");
        for (var i = 0; i < infoSubforms.length; i++)
                    var infoSubform = infoSubforms.item(i);
            infoSubform.presence = "visible";
    You would want to password protect your template as well (in Form ... Form Properties ... PDF Security) so people couldn't just open the form and look at the password.
    Probably the simplest approach.
    Hope this helps
    Bruce

  • Spawning multiple instances of a sprite (firing bullets).  Help needed.

    Hello there.  I'm currently trying to make a game in director 11.5 for a University project.  I've decided to make a scrolling space shooter but I've run into a problem.  Any tutorial I've found has created a limited 'bank' of bullets to fire, only allowing a certain number on the stage at any given time.  What I need to do is to leave a single bullet sprite off the boundaries of the page and essentially copy it and it's lingo behaviors to spawn another instance of the bullet on the stage when the player fires (using the left mouse button in this case).  I also need this copy to be deleted entirely when it collides with an enemy or leaves the boundaries of the stage, otherwise the game will just run slower and slower as more shots are fired.
    I have heard that this is possible using the puppetSprite() method but the API doesn't shine much light on the issue and neither has literally hours of google searches.  If anyone can let me know any method of doing this, I'd be very grateful.
    On a related issue, when fired the bullet will need to intsect the location of where the mouse cursor was when the bullet was fired and then continue on a linear path.  I've worked out a method of doing this but it isn't very effective or efficient (the speed of the bullets would be determined by how far away the mouse cursor is from the players ship and I think there's probably a less calculation intensive method for doing this) and as I can't spawn the bullets as of now, I really don't know if it will even work.  If anyone has any advice on how to better implement this mechanic, again I'd welcome your input.  Thanks in advance.

    You want to work with objects not numbers which means using Points for locs and Sprite references and not sprite numbers.
    I feel that using a object manager object would make programming this a lot easier, cleaner, and more efficient. Rather than give a lecture on OOP and OOD, I took some of Josh's ideas like using a timeout object and wrote some scripts in my style to give you something else to boggle your brain.
    I tested these scripts but not thoroughly and I left plenty for you to do.
    I separated out the creation and control of "bullets" from the movement of the bullets. So, there is a behavior that does nothing more than move the bullet sprites and the control object handles everything else using a single timeout object.
    I suggest creating a new project to play with these scripts. Throw a bunch of sprites on the stage and attach the "Hitable Sprite" behavior to them, make sure you have a sprite named "bullet", and a " go the frame" behavior to loop on and you should be good to go.
    Note that where I set the velocity of the bullet sprites, that I use "100.0" instead of 20.  20 would be a very fast speed.
    Here's the Parent script for the control:
    -- Bullet Control parent script
    property  pUpdateTimer  -- timeout object for doing updates
    property  pBullets  -- list of bullet sprites
    property  pGunLoc  -- location of the gun, ie the location where your bullets start at.
    property  pRightBounds  -- right edge of the stage
    property  pBottomBounds  -- bottom edge of the state
    property  pZeroRect  -- used for intersection hit detection
    on new me
      pUpdateTimer = timeout().new("BulletCntrl", 25, #update, me)  -- 25 milleseconds = 40 updates per second
      pBullets = []
      pGunLoc = point(300,550)  -- *** SET THIS to where you want your bullets to start at.
      pZeroRect = rect(0,0,0,0)
      -- store stage bounds for later use
      pRightBounds = _movie.stage.rect.width
      pBottomBounds = _movie.stage.rect.height
      return me
    end new
    on fire me
      NewBullet = script("Bullet behavior").new(pGunLoc)  -- create new bullet sprite
      if ilk(NewBullet, #sprite) then pBullets.add(NewBullet)  -- store sprite reference
    end fire
    on update me, timeob
      if pBullets.count = 0 then exit  -- no bullets to update
      -- update bullet positions
      call(#update, pBullets)
      -- get list of sprites to test for hits/collisions
      HitSprites = []
      sendAllSprites(#areHitable, HitSprites)  -- the list "HitSprites" is populated by each hitable sprite.
      BulletsToDelete = []  -- list of bullet sprites to delete
      -- check if any bullet has hit a hitable sprite
      repeat with Bullet in pBullets
        repeat with HitSprite in HitSprites
          if Bullet.rect.intersect(HitSprite.rect) <> pZeroRect then
            HitSprite.explode()
            BulletsToDelete.add(bullet)
            exit repeat  -- leave inner loop
          end if
        end repeat
      end repeat
      -- check if bullet is out of bounds
      repeat with Bullet in pBullets
        Die = false
        if Bullet.right < 0 then Die = true
        if Bullet.left > pRightBounds then Die = true
        if Bullet.top > pBottomBounds then Die = true
        if Bullet.bottom < 0 then Die = true
        if Die then BulletsToDelete.add(Bullet)
      end repeat
      -- remove any sprites that hit something or went off the screen
      repeat with Bullet in BulletsToDelete
        Bullet.die()
        pBullets.deleteOne(Bullet)  -- remove bullet from list of active bullets
      end repeat
    end update
    on stopMovie
      -- end of app cleanup
      if pUpdateTimer.objectP then
        pUpdateTimer.forget()
        pUpdateTimer = void
      end if
    end
    The behavior for the bullets is:
    -- Bullet behavior
    property  pMe
    property  pVelocity
    property  pCurLoc
    on new me, StartLoc
      -- get a sprite
      pMe = me.getSprite()
      if pMe.voidP then return void  -- if not a sprite then give up
      -- setup this bullet sprite
      pMe.puppet = true
      pMe.member = member("bullet")
      pMe.loc = StartLoc
      pMe.scriptInstanceList.add(me)  -- add this behavior to this sprite
      -- set velocity
      pVelocity = ( _mouse.mouseLoc - StartLoc) / 100.0  -- Note: magic number "20.0"
      updateStage()  -- need to update pMe.rect values
      pCurLoc = pMe.loc -- store current location
      return pMe  -- Note: returning "pMe" not "me"
    end new
    on getSprite me
      repeat with CurChannel = 1 to the lastchannel
        if sprite(CurChannel).member = (member 0 of castLib 0) AND sprite(CurChannel).puppet = false then
          return sprite(CurChannel)
        end if
      end repeat
      return void
    end getSprite
    on update me
      -- move bullet. 
      pCurLoc = pCurLoc + pVelocity  -- add velocity to pCurLoc to maintain floating point accuracy
      pMe.loc = pCurLoc 
    end update
    on die me
      pMe.scriptInstanceList = []  -- must manually clear this property
      pMe.puppet = false
    end
    We setup everything in a Movie script:
    -- Movie Script
    global gBulletCntrl
    on prepareMovie
      gBulletCntrl = script("Bullet Control").new()
      the mouseDownScript = "gBulletCntrl.fire()"  -- route mouseDown events to the global object gBulletCntrl.
    end prepareMovie
    on stopMovie
      the mouseDownScript = ""
    end stopMovie
    Finally since we are shooting at other sprites we need a script on them to interact with the bullets.
    --  Hitable Sprite Behavior
    property  pMe
    on beginSprite me
      pMe = sprite(me.spriteNum)
    end beginSprite
    on enterFrame me
      -- movie sprite
    end enterFrame
    on areHitable me, HitList
      HitList.add(pMe)
    end areHitable
    on explode me
      put "Boom"
    end explode

  • Best practice for creating a bulk of new instances

    Hi,
    My customer has a requirement to create a bulk of 30,000 new instances by scanning a database table (an export from a billing system) which contains a list of a call center tasks (interactive) to be performed. They will be executed throughout the month.
    What is the best way to do it? If the answer is "this is a worst practice" that's a good answer too, but the question is how do I provide a solution to their needs.
    When the process was executed as is we ran into the maximum limit of 1,000. Configuring the automatic item queue removed the 1,000 limit exception but caused JTA timeout and other exceptions against the engine database.
    It seems to me that some sort of division into bulks of a few hundred instances should be the way to do it instead of just exploding the engine with so many instances. Am I right? If so, how would be the best way to code it? If not, any other suggestions?
    Any recommendations would be highly appreciated.
    Thanks,
    ~ronen

    Hi,
    Know how you feel.
    Others are sure to have other ideas, but here are a thoughts:
    1) You might also want to consider only creating 995 in a single transactional boundary at a time. Once 995 have been created, end the transaction so it will commit. You could then fire another transaction that creates another 995. Keep doing this in separate transactions until all have been created. Sure you know many ways you could keep track of where each group of 995 ended and where your next group of 995 should begin, but a common technique is to keep track of the last row processed in a separate database.
    2) Sure you've thought of this, but consider running this from a Global Automatic that is scheduled to run at a time when everyone's gone home. The last thing you want is to get complaints from the end users about performance. Their interaction will be degraded and your creations will take longer.
    3) If you can, be especially conservative about your instance size when creating instances in a batch. Avoid adding attachments and binary variables as they are being created (both of these can potentially be huge). Get rid of the incoming argument variables that you do not need right away in the process. Many times you can look up the additional information downstream when needed later in the process.
    4) Note what is happening immediately downstream of your Begin activity in the process. If for example, you have more than one automatic activity that immediately follow the Begin, consider either turning all the automatic activities it a procedure (one transaction) or set your process to "Greedy" execution. If you have a Multiple activity immediately after the Begin, you might be creating 10x the number of instances (e.g. your Multiple's logic creates 10 copies). If the is the case, you might want to throttle back the number of instances created in one transaction even further.
    Hope this helps,
    Dan

  • Windows 64-Bit Oracle DBCA creating new Instance ORA-27102: out of memory

    Wondering has anyone encountered this?
    We are running Oracle 10 R2 running on Windows Server 2003 ( This database is on a 64-bit Platform)
    Memory capacity is 16 GB on the server.
    We are using DBCA to streamline db creation of the new “EDR” DB instance – here are a few different attempts we’ve done:
    (all have failed )
    FYI - during this installation we’ve monitored the memory allocation/usage of the Windows Server and there
    was about 13-14 GB Free
    The existing instance takes up less than 4GB of space.
    We tried following:
    1. Allocating 8GB of Memory to new EDR Instance without shutting down other Oracle Instance.
    2. Allocating 8GB of Memory to new EDR Instance and shutting down other Oracle Instance
    3. Rebooted Server keeping other oracle instance shutdown.
    4. After Reboot Allocated 8GB to new EDR Instance
    5. Attempted allocating less memory 2GB to new EDR instance
    6. Early this morning we also tried omitting backup scheduling as part of configuration for DBCA
    for that instance.
    Each time we received error in DBCA GUI during DB Creation at 2% completion
    ORA-27102: out of memory
    oraclehome\product\10.2.0\db_1\cfgtoollogs\dbca\EDR
    (cloneRmanRestore.log) first set of file created. (along with a RmanRestoreDatafile.sql, which failed (see log below)
    then halted install/creation of DB
    ORA-27102: out of memory
    OSD-00025: additional error information
    O/S-Error: (OS 1453) Insufficient quota to complete the requested service.
    select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual
    ERROR at line 1:
    ORA-01034: ORACLE not available
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    O/S-Error: (OS 1453) Insufficient quota to complete the requested service.
    select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual
    ERROR at line 1:
    ORA-01034: ORACLE not available
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information
    ORA-27102: out of memory
    OSD-00025: additional error information

    After much effort it was discovered it was a setting during the installation of a parameter which caused this error. Using the TEMPLATE to create a new instance, you can setup parameters
    LOCK_SGA = TRUE
    causes this error. In addition if in our situation, even if we did not use the "template" created a barebones DB instance. Once the parameter is updated in SQL*Plus it will cause the datbase to be in a in operable state.
    You can start it up with a PFILE to fix it, In windows it required modifying the registry to FORCE the PFILE to load, by running on the commandline to use the PFILE it failed.
    Hope this helps someone in the future..
    ON WINDOWS DONT USE
    LOCK_SGA = TRUE
    It may work fine for Unix/LINUX OS? But in our current config it had problems.

  • Hashtable? Which is better? remove &  reuse / create new instance?

    Hello,
    I have a Hashtable, which gets loaded with keys A-Z during the first process, but then it gets loaded every now and then (let us say for each second) with new set of keys from A-Z. (every time the list of keys change).
    I am creating a new instance of the hashtable and reloading the new values. However, I am wondering this could result in lot of uncollected gargbage. Am I right?.
    If so, is it worth to clean up the hashtable (remove all keys) and try to use the same instance and reload the new values. ?
    If I remove keys from a hashtable, will the index, etc gets reused, or just the size of the hashtable will keep growing?
    Thanks for your replies.
    [email protected]

    If you add same key more than one time tha last
    key=value vill be stored in Hashtable, so thats the easiest way of reuse.
    Otherwise if you want to empty the whole Hashtable you can use method Hashtable.clear().
    If you should do as you discribe I would reuse the Hashtable rather than create new ones.
    -Bo

Maybe you are looking for

  • Pojo used by many other objects

    Hello all, In my application I have got a complex entity containing lists and maps filled with data by the persistence tier and that entity is to be used by many other objects in my application, including many controllers. I am trying to find a way t

  • How to add a counting number?

    I just recently recorded gameplay of myself on a kill streak in a video game. I want to add a number in the corner of the screen for every time i get a kill, so it keeps counting up for every kill i get in the footage... how can i do this? (if i need

  • Adobe digital edition failed!!!

    hi there,2 days before I bought an e reader however I'm travelling a lot in the country and outside as well,I was absolutely very disappointed with adobe digital editiond however I've purchased some e books and just cannot figure out how can I author

  • How to find aggregates which are not used.

    Hi , There are lot of aggregates in my system , so i should deactivate the aggregates which  are not used from long back. so how to find out all those , can u plz guide me ,

  • Hue Saturation : Question

    Hello Forum Members: I added 3 different Hue Saturation Layer(s), colors Red, Yellow, and Green -  split in 3, to a concrete image, in Photoshop. I am trying to get a really bright, sunny yellow color, however I can only get light yellow Hue Saturati