Clustering of Oracle AS 10.1.3.0 nodes in active-active topology

Hi,
The following requirements for clustering in our environment exist:
* Active-active topology
* External hardware load-balancer
* Fail-over
* Application session-state replication
We use multiple Oracle AS 10.1.3.0 nodes. Applications are deployed on 2 or more OC4J instances on those nodes.
I've read the Oracle docs on clustering and I have some questions regarding the clustering configuration to use:
1. When an external hardware load-balancer is used, is configuring an Oracle AS cluster needed then? The docs talk about clusters, but in some cases I'm not sure whether an Oracle AS cluster or a hardware cluster is meant.
2. It seems not entirely clear what type of application clustering to use in combination with an Oracle AS cluster: either multicast or peer-to-peer? If I'm correct the Oracle docs suggest to use dynamic peer-to-peer application clustering if an Oracle AS cluster is used and multicast for standalone OC4J. Is that correct?
Thanks,
Ronald

1. Well, the idea is to have all clients route their HTTP requests to the physical load-balancer. The load-balancer will route/forward the requests to one of the Oracle AS nodes based on the load on those machines. If application state is synchronized between the application(s) on the OC4J instances, it would not be necessary to configure an Oracle AS cluster? Or are there advantages for having such a cluster? One of the pros I can think of would be that groups are automatically created so deployment/management of the application(s) becomes easier. Are there any other? Or is this configuration w/o Oracle AS cluster not a good idea?
2. Clear.
3. JMS, thanks for the tip.
4. Yes we use Oracle RAC. Does that impose constraints on the Oracle AS clustering and/or application clustering?
Ronald

Similar Messages

  • ORA-04030 On ORACLE 10g RAC database with two nodes as active

    OS-HP-AIX 5L(5.3)----IBM
    DATABASE-10.2.0.2(10G)
    I am getting error "ORA-04030" while executing a query
    I have already set the ulimits for oracle account to UNLIMITED
    1)STACK----UNLIMITED(BOTH SOFT/HARD LIMITs)
    2)DATA----UNLIMITED(BOTH SOFT/HARD LIMITs)
    3)MEMORY----UNLIMITED(BOTH SOFT/HARD LIMITs)
    4)TIME----UNLIMITED(BOTH SOFT/HARD LIMITs)
    step 1:-When I skip the listener then query executes very fine.But when
    i go through the listener the "ORA-04030" errors come.
    step 2:-Then when i stop and start listener on both the nodes the all
    the query works fine.
    This thing happens every time the system reboots
    Can anyone tell me the solution for this
    and why this thing happens

    Thanks for ur immediate response
    ORA-04030: out of process memory when trying to allocate 127000 bytes (QERHJ
    hash-joi,kllcqas:kllsltba)
    ORA-04030: out of process memory when trying to allocate 66184 bytes (pga
    heap,kco buffer)
    ORA-04030: out of process memory when trying to allocate 127000 bytes (QERHJ
    hash-joi,kllcqas:kllsltba)
    sql qurry
    SELECT
    WRK_PERF_ID, WRK_ID, PTY_NA_ID, PTY_ID PTY_ID,
    PTY_TYP_CDE, PTY_ROL_TYP_CDE, SOC_CDE2 SOC_CDE,
    DECODE(SOC_CDE2,'10','Y',NULL,'N',
    NVL(( SELECT NVL(AFL_IND, 'N') FROM pty y WHERE y. IPI_BAS_NR = SOC_CDE2 AND NVL(DEL_FL,'N') = 'N'
    AND ROWNUM < 2 ),'N')) AFL_IND,
    pDate,
    ENTMT_ID, ROL_TYP_CDE, IP_STA_IND_CDE, UNID_ID_FST_NA,
    UNID_IP_NA, IP_PAY_STA, REASON, SHR_OWN_PTY_NA_ID,
    PGM_STT_DT, PAY DIRIND,
    ACTV_OWN_SHR, ACTV_COPY_SHR, CLM_OWN_SHR, CLM_COPY_SHR,
    FNC_PTY_RESIGNED_ON_DIS_DT ( PTY_ID,
    TO_DATE( DECODE(PTY_TYP_CDE,'WRTMB',
    '2004-04-10' ,'AFMBR', '2004-05-10' , '2004-03-10'),'YYYY-MM-DD')) TF
    FROM
    SELECT WRK_PERF_ID, WRK_ID, PTY_NA_ID, PTY_ID PTY_ID,
    PTY_TYP_CDE, PTY_ROL_TYP_CDE, NVL(SOC_CDE2,'0') SOC_CDE2,
    DECODE(PTY_TYP_CDE,'WRTMB', '2004-04-10' ,'AFMBR', '2004-05-10' , '2004-03-10') pDATE,
    ENTMT_ID, ROL_TYP_CDE, IP_STA_IND_CDE, UNID_ID_FST_NA,
    UNID_IP_NA, IP_PAY_STA, REASON, SHR_OWN_PTY_NA_ID,
    PGM_STT_DT, PAY_DIR_IND,
    SUM(NVL(ACTV_OWN_SHR,0)) ACTV_OWN_SHR,
    SUM(NVL(ACTV_COPY_SHR,0)) ACTV_COPY_SHR,
    NVL( SUM(NVL(CLM_OWN_SHR,0)),0) CLM_OWN_SHR,
    NVL(SUM(NVL(CLM_COPY_SHR,0)),0) CLM_COPY_SHR
    FROM
    SELECT B.WRK_PERF_ID, B.WRK_ID, B.PTY_NA_ID,
    D.PTY_ID , D.PTY_TYP_CDE, D.PTY_ROL_TYP_CDE,
    CASE
    WHEN D.PTY_ROL_TYP_CDE ='W' OR D.PTY_ROL_TYP_CDE ='P'
    THEN
    SELECT MIN(soc_cde)
    FROM MBRSH_AGR_TER A
    WHERE A.pty_id = D.PTY_ID
    AND A.STT_DT <= TO_DATE( DECODE(D.PTY_TYP_CDE,'WRTMB', '2004-04-10' ,'AFMBR', '2004-
    05-10' , '2004-03-10' ),'YYYY-MM-DD')
    AND ( A.END_DT >= TO_DATE( DECODE(D.PTY_TYP_CDE,'WRTMB', '2004-04-10' ,'AFMBR', '2004-05-10' , '2004-03-1
    0' ),'YYYY-MM-DD') OR A.END_DT IS NULL)
    AND A.INCL_EXCL_IND = 'I'
    AND ( A.TIS_CDE = 840 OR
    EXISTS (
    SELECT 1
    FROM CPST_TERR C
    WHERE C.CHILD_TIS_CDE = 840
    AND C.PARENT_TIS_CDE = A.TIS_CDE
    AND NVL(C.DEL_FL, 'N') = 'N'
    AND NVL(A.DEL_FL,'N') = 'N'
    AND soc_cde NOT IN
    SELECT soc_cde
    FROM MBRSH_AGR_TER B
    WHERE B.pty_id = D.PTY_ID
    -- b.soc_cde = a.soc_cde
    AND B.STT_DT <= TO_DATE( DECODE(D.PTY_TYP_CDE,'WRTMB', '2004-04-10' ,'AFMBR', '2004-0
    5-10' , '2004-03-10' ),'YYYY-MM-DD')
    AND (B.END_DT >= TO_DATE( DECODE(D.PTY_TYP_CDE,'WRTMB', '2004-04-10' ,'AFMBR', '2004-05-10' , '2004-03-10'
    ),'YYYY-MM-DD') OR B.END_DT IS NULL)
    AND B.INCL_EXCL_IND = 'E'
    AND NVL(B.DEL_FL,'N') = 'N'
    AND ( B.TIS_CDE = 840 OR
    EXISTS ( SELECT 1
    FROM CPST_TERR D2
    WHERE D2.CHILD_TIS_CDE = 840
    AND D2.PARENT_TIS_CDE = B.TIS_CDE
    AND NVL(D2.DEL_FL, 'N') = 'N'
    )-- NOT IN
    ) --w,p end
    WHEN D.PTY_TYP_CDE='SOC' THEN D.IPI_BAS_NR
    END
    ) SOC_CDE2,
    B.ENTMT_ID, B.ROL_TYP_CDE,
    B.IP_STA_IND_CDE, B.UNID_ID_FST_NA, B.UNID_IP_NA, B.IP_PAY_STA, B.REASON, B.SHR_OWN_PTY_NA_ID,
    A.PGM_STT_DT, D.PAY_DIR_IND,
    ACTV_OWN_SHR, ACTV_COPY_SHR, CLM_OWN_SHR, CLM_COPY_SHR
    FROM STG_ACIP_DIST_MODE1 B, STAGING_USAGE_SELECTION_MODE1 A, PTY_NA C, PTY D
    WHERE B.WRK_PERF_ID = A.WRK_PERF_ID
    AND B.PTY_NA_ID = C.PTY_NA_ID
    AND C.PTY_ID = D.PTY_ID
    AND A.CALC_RUN_CTL_ID = 279
    AND A.DIS_ID = 241
    GROUP BY WRK_PERF_ID, WRK_ID, PTY_NA_ID, PTY_ID, PTY_TYP_CDE, PTY_ROL_TYP_CDE,
    SOC_CDE2, ENTMT_ID, ROL_TYP_CDE, IP_STA_IND_CDE, UNID_ID_FST_NA,
    UNID_IP_NA, IP_PAY_STA, REASON, SHR_OWN_PTY_NA_ID,
    PGM_STT_DT, PAY_DIR_IND
    order by WRK_PERF_ID, WRK_ID, PTY_NA_ID, PTY_ID
    It is just a simple query with group by which i ran by sqlplus but it is geting more then million records.

  • How to create clustering on oracle application server on windows

    hi,
    i want to know how can i create clustering on oracle application server on windows machine.
    regards

    I think that you need to configure Web cache for this as a frontend, and two or more servers behind it.
    Try to read :
    Metalink DOC ID 312834.1
    http://www.oracle.com/technetwork/developer-tools/forms/documentation/advancedformsconf-128186.pdf
    Edited by: Marcos_Pawloski on 15/12/2010 00:02

  • Linux Clustering with oracle

    Hai All,
    Please forward the good pdf documents and links describing the Redhat Linux Clustering with Oracle.
    Please help...
    Shiju

    Hai All,
    Please forward the good pdf documents and
    links describing the Redhat Linux Clustering with
    Oracle.Check following link
    http://www.oracle.com/pls/db102/to_pdf?pathname=install.102%2Fb15660.pdf&remark=portal+%28Getting+Started%29
    Virag

  • Linux clusters and oracle

    Hello gentlemen!
    Does anybody have experience with linux clusters and oracle?
    Does this combination exist? Is linux great in this role?
    Any links on this topic?
    Any help would be greatly appreciated.
    Best regards,
    San.
    null

    This contradicts the information in the Oracle® Database Release Notes 10g Release 2 (10.2) for Linux x86-64:
    In Oracle Database Oracle Clusterware and Oracle Real Application Clusters Installation Guide, Chapter 2, "Preinstallation," in the section "Oracle Clusterware Home Directory," it incorrectly lists the path /u01/app/oracle/product/crs as a possible Oracle Clusterware home (or CRS home) path. This is incorrect. A default Oracle base path is /u01/app/oracle, and the Oracle Clusterware home must never be a subdirectory of the Oracle base directory.
    A possible CRS home directory is in a path outside of the Oracle base directory. for example, if the Oracle base directory is u01/app/oracle, then the CRS home can be an option similar to one of the following:
    u01/crs/
    /u01/crs/oracle/product/10/crs
    /crs/home
    This issue is tracked with Oracle bug 5843155.

  • Problem with Clustering in Oracle AS10.1.3.1.0

    I have an Oracle Application Server 10.1.3.1 installed with a multicast IP along with an home instance whcih is an administrative instance. Installed another instance on other system with only J2EE Server installation and having home not as an administrative instance which is basically a Active - Active topology.
    Created 2 home instances on the 2 Application Servers with in the same group and deploymed my application in both the instances with Peer-Peer Dynamic Discovery mode. but when i run the application its running fine when i go from the localhost address but when i mention the internal IP or the Public IP of the system session is getting failed. i hope that the request is transferring between the 2 instances when i specify the IP. So i specified the system property -Doracle.j2ee.rmi.loadBalance=client which makes the request to stick to only one instance till its life ends. but this also throws me the same error. And the error is
    07/08/26 12:47:08 java.io.StreamCorruptedException
    07/08/26 12:47:08      at java.io.ObjectInputStream.readTypeString(ObjectInputStream.java:1372)
    07/08/26 12:47:08      at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:607)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:778)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1528)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
    07/08/26 12:47:08      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
    07/08/26 12:47:08      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
    07/08/26 12:47:08      at com.evermind.server.ejb.EJBInputStream.readSession(EJBInputStream.java:263)
    07/08/26 12:47:08      at com.evermind.server.ejb.EJBInputStream.readSession(EJBInputStream.java:185)
    07/08/26 12:47:08      at com.oracle.bricks.j2ee.EJBLiveSession.unmarshall(EJBLiveSession.java:228)
    07/08/26 12:47:08      at com.oracle.bricks.j2ee.EJBSessionFacade.unmarshall(EJBSessionFacade.java:95)
    07/08/26 12:47:08      at com.evermind.server.ejb.JGroupEJBService.requestSession(JGroupEJBService.java:193)
    07/08/26 12:47:08      at com.evermind.server.ejb.StatefulSessionEJBHome.getSession(StatefulSessionEJBHome.java:670)
    07/08/26 12:47:08      at com.evermind.server.ejb.StatefulSessionEJBHome.getSession(StatefulSessionEJBHome.java:653)
    07/08/26 12:47:08      at com.evermind.server.ejb.StatefulSessionEJBHome.getSession(StatefulSessionEJBHome.java:648)
    07/08/26 12:47:08      at com.evermind.server.ejb.StatefulSessionEJBHome.getRemoteSession(StatefulSessionEJBHome.java:686)
    07/08/26 12:47:08      at com.evermind.server.ejb.StatefulSessionHandle.getEJBObject(StatefulSessionHandle.java:40)
    07/08/26 12:47:08      at ezc.client.EzcUtilManager.<init>(EzcUtilManager.java:30)
    07/08/26 12:47:08      at ezcommerce.ezLoginUser._jspService(_ezLoginUser.java:259)
    07/08/26 12:47:08      at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
    07/08/26 12:47:08      at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)
    07/08/26 12:47:08      at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)
    07/08/26 12:47:08      at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)
    07/08/26 12:47:08      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    07/08/26 12:47:08      at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:711)
    07/08/26 12:47:08      at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368)
    07/08/26 12:47:08      at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
    07/08/26 12:47:08      at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
    07/08/26 12:47:08      at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:302)
    07/08/26 12:47:08      at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:190)
    07/08/26 12:47:08      at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
    07/08/26 12:47:08      at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
    07/08/26 12:47:08      at java.lang.Thread.run(Thread.java:595)
    Please kindly someone help me in this regard....
    Thanks in advance
    Satya

    Vander,
    Please open a support request if you can. It will allow us to track this important issue better and provide us a channel in case we need to see you JDev files.
    Doug

  • Oracle RAC with more then two nodes?

    Hello,
    knows anybody a reference client project that use Oracle RAC with more then two nodes on a Linux environment?
    Many thnaks!
    Norman Bock

    Hello Norman,
    XioTech is a SAN company that has a project called "THE TENS". They configured and ran a 10 node RH Linux Oralce 9i RAC. I understand they want to see if 32 are possible. I am sure if you ask them, they would be happy to give you the details.
    http://www.xiotech.com/
    Cheers

  • Oracle VDI 3.3 Directory access with Windows2008 Active Directory

    Hi
    can some body help me to solve this issue?
    I install oracle VDI 3.3 and I configure Windows2008 Active Directory for authentification.
    I made some test in command line
    kinit -v user
    and I received the message "Authenticated to Kerberos v5"
    but when I tried to create a company to do another configuration I receive the following error:
    Unable to Connect to User Directory
    Failed to connect, no servers available.
    BR

    I am in the same situation and have tried everything. I am using VDI 3.4 and able to authenticate using knit command but cannot setup up my company.
    AD is 2011 Small Business Server and the domain is domain.local
    Any help would be appreciated. Thanks

  • HOW INCREASE SGA IN ORACLE RAC 10 G WITH 2 NODES

    How increase sga_max_size, sga_target in ORACLE RAC 10 G WITH 2 NODES;
    i have oracle 10g in unix hp-ux 11i in rac (2 nodes)
    with sga 8g; and i want to increase 12g;
    i can alter these parameters without shutdown the entire database ?; , i can alter and take these change in one node first and later de second node?
    i used in first node :
    1- alter system set sga_max_size=16g scope spfile;
    2- alter system set sga_targer=12g cope spfile;
    later i restard all intance one by one:
    srcvtl stop instance -d my_database -i my_instance1 -o immediate;
    srcvtl start instance -d my_database -i my_instance1
    3- in second node.
    srcvtl stop instance -d my_database -i my_instance2 -o immediate;
    srcvtl start instance -d my_database -i my_instance2
    but my sga is the SAME 8G.. WHY NOT CHANGE...
    i changed these parameters and restar my instance in first node later stop and start using srvctl the second node but my sga not change. continue in 8g ;however these changes are in spfile so;
    prd2.sga_max_size=8589934592#internally adjusted
    prd1.sga_max_size=8589934592#internally adjusted
    *.sga_max_size=17179869184
    prd2.sga_target=8589934592
    prd1.sga_target=8589934592
    *.sga_target=12884901888
    prd2.thread=2
    prd1.thread=1
    how i can apply these change node by node or i need shutdown the entire database?
    need to make these changes without affecting my application because i can not shutdown the both node...
    Edited by: user568681 on 02-sep-2010 14:32

    Hi,
    I just checked on a test RAC configuration (HP-UX, 10.2.0.4)
    You don't need to stop the database.
    Keep your "rolling" original scenario but change :
    alter system set sga_max_size=16g scope spfile;
    alter system set sga_target=12g cope spfile;by
    alter system set sga_max_size=16g scope spfile sid = 'PRD1';
    alter system set sga_target=12g scope spfile sid = 'PRD1';
    alter system set sga_max_size=16g scope spfile sid = 'PRD2';
    alter system set sga_target=12g cope spfile sid = 'PRD2';Actually
    alter system set sga_max_size=16g scope spfile;
    alter system set sga_max_size=16g scope spfile SID='*';changes globally the values for every instance in the spfile ("*.XXXXXX" is updated) but it does not remove the specific entries already assigned to one particular instance (and it is your case !)
    Alternatively you could reset the values assigned specifically to one instance with "alter system reset" to have only "*.XXXX" for those parameters.
    Best regards
    Phil

  • Problem with clustering of oracle application server 10.1.3.1

    Hi
    I have clustered two instances of oracle application server 10.1.3.1 running on solaris.
    Instance 1
    <notification-server interface="ipv4">
    <port local="6100" remote="6200" request="6003"/>
    <ssl enabled="true" wallet-file="$ORACLE_HOME/opmn/conf/ssl.wlt/default"/>
         <topology>
              <nodes list="10.x.x.1:6201"/>
         </topology>
    </notification-server>
    Instance 2
    <notification-server interface="ipv4">
    <port local="6101" remote="6201" request="6004"/>
    <ssl enabled="true" wallet-file="$ORACLE_HOME/opmn/conf/ssl.wlt/default"/>
    <topology>
              <nodes list="10.x.x.2:6200"/>
         </topology>
    </notification-server>
    But when i log on to enterprise manager i get the following message on top of the page:
    You have more than one instance of the Application Server Control application running in this cluster. This is not a recommended configuration and could lead to unexpected problems. Please stop the additional instances of Application Server Control or disable routing to these instances.
    When i click on one of the instances, i get the session expired error.
    what is the problem behind this?
    regards,

    In the doc, it states that you should only ever have one active instance of application server control running in a cluster at a time -- ASC was not designed to operate as a session sharing application, so your session state is specific to one instance. If for some reason you were directed to the ASC application on the other instance, you get errors.
    You can use the OC4J admin_client.jar utility or the opmnctl command to shut down the ascontrol application in one of the instances.
    -steve-

  • Simon Greener's Morton Key Clustering in Oracle Spatial

    Hi folks,
    Apologies for the rambling.  With mattyschell heading for greener open source big apple pastures I am looking for new folks to bounce ideas and code off.  I was thinking this week about the discussion last autumn over spatial clustering.
    https://community.oracle.com/thread/3617887
    During the course of the thread we all kind of pooh-poohed spatial clustering as not much of solution, myself being one of the primary poohers.  Yet the concept certainly remains as something to consider regardless of our opinions.  The yellow book, the Greener/Ravada book, Simon's recent treatise (http://download.oracle.com/otndocs/products/spatial/pdf/biwa_2015/biwa2015_uc_comparativeperformance_greener.pdf), they all put forward clustering such that at the very least we should consider it a technique we should be able as professionals to do - a tool in the toolbox whether or not it always is the right answer.  I am mildly (very mildly) curious to see if Kothuri, Godfrind and Beinat will recycle their section on spatial clustering with the locked-down MD.HHENCODE into their 12c revision out this summer.  If they don't then what is the replacement for this technique?  If they do then we return to all of our griping about this ancient routine that Simon implies may date back to the CHS and their hhcode indexes - at least its not written in Java! 
    Anyhow, so I've been in the midst this month of refreshing some of the datasets I manage and considering clustering the larger tables whilst I am at it.  Do I really expect to see huge performance gains?   Well... not really.  But it does seem like something that should be easy to accomplish, certainly something that "doesn't hurt" and shows that I am on top of things (e.g. "checks the box").  But returning to the discussion from last fall, just what is the best way to do this in Oracle Spatial?
    So if we agree to ignore poor old MD.HHENCODE, then what?  Hilbert curves look nifty but no one seems to be stepping up with the code for them.  And this reroutes us back around to Simon and his Morton key code.
    http://www.spatialdbadvisor.com/oracle_spatial_tips_tricks/138/spatial-sorting-of-data-via-morton-key
    So who all is using Simon's code currently?  If you read that discussion from last fall there does not seem to be anyone doing so and we never heard back from Cat Person on either what he decided to do or what his name is.
    I thought I could take a stab at streamlining Simon's process somewhat to make things easier for myself to roll this onto many tables.  I put together the following small package
    https://github.com/pauldzy/DZ_SDO_CLUSTER/tree/master/Packages
    In particular I wanted to bundle up the side issues of how to convert your lines and polygons into points, automate things somewhat and provide a little verification function to see what results look like.  So again nothing that Simon does not already walk through on his webpage, just make it bit easier to bang out on your tables without writing a separate long SQL process for each one.
    So for example to use Simon's Morton key logic, you need to know the extent envelope of the data (in order to define a proper grid).  So if its a large table, you'd want to stash the envelope info in the metadata.  You can do this with the update_metadata_envelope procedure or just suffer through the sdo_aggr_mbr each time if you don't want to go that route (I have one table of small watershed polygons that takes about 9 hours to run sdo_aggr_mbr upon).  So just run things at the sql prompt
    SELECT
    DZ_SDO_CLUSTER.MORTON_UPDATE(
        p_table_name => 'CATCHMENT_NP21'
       ,p_column_name => 'SHAPE'
       ,p_grid_size => 1000
    FROM dual;
    This will return the update clause populated with the values to use with the morton_key wrapper function, e.g. "morton_key(SHAPE,160.247133275879,-17.673722530871,.0956820001136141,.0352063207508021)".  So then just paste that into an update statement
    UPDATE foo
    SET my_morton_key = dz_sdo_cluster.morton_key(
        SHAPE
       ,160.247133275879
       ,-17.673722530871
       ,.0956820001136141
       ,.0352063207508021
    Then rebuild your table sorting on the morton_key.  I just use the TOAD rebuild table tool and manually add the order by clause to the rebuild script.  I let TOAD do all the work of moving the indexes, constraints and grants to the new table.  I imagine there are other ways to do this.
    The final function is meant to be popped into Oracle mapviewer or something similar to show your family and friends the results.
    SELECT
    dz_sdo_cluster.morton_visualize(
        'NHDPLUS'
       ,'NHDFLOWLINE_NP21_ACU'
       ,'SHAPE'
       ,'OBJECTID'
       ,'100'
       ,10000
       ,'MORTON_KEY'
    FROM dual;
    Look Mom, there it is!
    So anyhow this is first stab at things and interested in feedback or suggestions for improvement.  Did I get the logic correct?  Don't spare my feelings if I botched something.  Note that like Simon I passed on the matter of just how to determine the proper grid size.  I've been using 1000 for the continental US + Hawaii/PR/VI and sitting here this morning I think that probably is too large.  Of course it depends on the size of the geometries and thus the density of the resulting points.  With water features this can vary a lot from place to place, so perhaps 1000 is okay.  What would the algorithm be to determine a decent grid size?  It occurs to me I could tell you the average feature count per morton key value, okay well its about 10.  That seems small to me.  So I could see another function in this package that returns some kind of summary on the results of the keying to tell you if your grid size estimate was reasonable.
    Cheers and Happy Saturday,
    Paul

    I've done some spatial clustering testing this week.
    Firstly, to reiterate the purpose of spatial clustering as I see it:  spatial clustering can be of benefit in situations where frequent window based spatial queries are made.  In particular it can be very useful in web mapping scenarios where a map server is requesting data using SDO_FILTER or SDO_ANYINTERACT and there is a need to return the data as quickly as possible.  If the data required to satisfy the query can be squeezed into as few blocks as possible, then the IO overhead is clearly reduced.
    As Bryan mentioned above, once the data is in the buffer cache, then the advantage of spatial clustering is reduced.  However it is not always possible to get/keep enough of the data in the buffer cache, so I believe spatial clustering still has merits, particularly if it can be implemented alongside spatial partitioning.
    I ran the tests using an 11.2.0.4 database on my laptop.  I have a hard disk rather than SSD, so the effects of excessive IO are exaggerated.  The database is configured with the default 8kb block size.
    Initially, I created a table PARCELS:
    create table parcels (
    id            integer,
    created_date  date,
    x            number,
    y            number,
    val1          varchar2(20),
    val2          varchar2(100),
    val3          varchar2(200),
    geometry      mdsys.sdo_geometry,
    hilbert_key  number);
    I inserted 2.8 million polygons into this table.  The CREATED_DATE is the actual date the polygons were captured.  I populated val1, val2 and val3 with string values to pad the rows out to simulate some business data sitting alongside the sdo_geometry.
    I set X,Y to the first ordinate of the polygon and then set hilbert_key = sdo_pc_pkg.hilbert_xy2d(power(2,31), x, y).
    I then created 4 tables to base the tests upon:
    PARCELS_RANDOM:  Ordered by dbms_random.random - an absolute worst case scenario.  Unrealistic, but worthwhile as a benchmark.
    PARCELS_BASE_DATE:  Ordered by CREATED_DATE.  This is probably pretty close to how the original source data is structured on disk.
    PARCELS_RTREE:  Ordered by RTree.  Achieved by inserting based on an SDO_FILTER query
    PARCELS_HILBERT:  Ordered by the hilbert_key attribute
    As a first test, I counted the number of blocks required to satisfy an SDO_FILTER query.  E.g.
    select count(distinct(dbms_rowid.rowid_block_number(rowid)))
    from parcels_rtree
    where sdo_filter(geometry,
                    sdo_geometry(2003, 2157, null, sdo_elem_info_array(1, 1003, 3),
                                    sdo_ordinate_array(644232,773809, 651523,780200))) = 'TRUE';
    I'm assuming dbms_rowid.rowid_block_number(rowid) is suitable for this.
    I ran this on each table and repeated it over three windows.
    Results:
    So straight off we can see that the random ordering gave pretty horrific results as the data required to satisfy the query is spread over a large number of blocks.  The natural date based clustering was far better. RTree and Hilbert based clustering reduced this by a further 50% with Hilbert just nosing out RTree.
    Since web mapping is the use case I am most likely to target, I then setup a test case as follows:
    Setup layers in GeoServer for each of the tables
    Used a script to generate 1,000 random squares over the extent of the data, ranging from 200m to 500m in width and height.
    Used JMeter to make a WMS request for a png of the each of the 1,000 windows.  JMeter was run sequentially with just one thread, so it waited for each request to complete before starting the next.  I ran these tests 3 times to balance out the results, flushing the buffer cache before each run.
    Results:
    Again the random ordering performed woefully bad - somewhat exacerbated by the quality of the disk on my laptop.  The natural date based clustering performed far better.  RTree and hilbert based clustering further reduced the time by more than half.
    In summary, the results suggest that spatial clustering is worth the effort if:
    the data is not already reasonably well clustered
    you've got a decent quantity of data
    you're expecting a lot of window based queries which need to be returned as quickly as possible
    you don’t expect to be able to fit all the data in the buffer cache
    When it comes to deciding between RTree and Hilbert (or Morton/z-order or any other space filling curve method).... I found that the RTree method can be a bit slow on large datasets, although this may not matter as a one off task.  Plus it requires a spatial index on the source table to start off with.  The key based methods are based on an xy, so for lines and polygons there is an intermediate step to extract an xy.  I would tend to recommend this approach if you also partition the data based on a subset of the cluster key.
    Scripts are available here: https://github.com/john-otoole/oracle_spatial_cluster_test
    John

  • SOA Suite 11g Clustering error/oracle bug ?

    Hi, i got several experiment to implement soa suite 11g clustering, in my company.. at this moment we still use development mode in our application server. now i'm trying to get into production and also i want cluster the server.. here is the chronology what i do.
    i got 3 server :
    my plan is
    server #1 become an proxy server, let say the name is soa_proxy
    server #2 become an cluster node, let say the name is soa_server1
    server #3 become an cluster node, let say the name is soa_server2
    so i start install & configure it (applications is running under Windows Server 2003)
    1.*soa_proxy*
    - Installing WebLogic server
    - Installing SOA
    - Create Repository with RCU (oracle 10g database)
    2.*soa_server1*
    - Installing WebLogic server
    - Installing SOA
    3.*soa_server2*
    - Installing WebLogic server
    - Installing SOA
    after installation finished, then i create domain in soa_proxy server let say it name 'MyDomain', then i assign the soa_server1 and soa_server2 in cluster node named 'MyCluster', also i assign the soa_proxy server as a HTTP Proxy Server.. i'm following the instructions just like this link Link: [http://download.oracle.com/docs/cd/E12839_01/doc.1111/e13925/config_screens.htm#CJAEABGD]
    all the installation seems good, but when i try to deploy my composite application into the proxy server 'soa_proxy' with JDev, i got error like this
    Image: !http://img9.imageshack.us/img9/2122/error2z.jpg!
    and when i go to Http://hostname:7001/em
    i just see my composite deployed only in 'soa_server2'.
    UPDATE : well, now the error was gone when deploying. but we still got little odd result,
    when i deploy with jdev, it still fine, until i go to the enterprise manager. yess still.. my composite only deplyed in 'soa_server1'. i got some reference that we can copy the domain directory in soa_proxy and then paste into the server that not yet been deployed before. its seems oke..
    i've been thinking, how if i got 10 node of cluster? 50 node of cluster ? should i copy the directory just like that ?? is there another charmed way to do it???
    can somebody help me with this simple case?
    regards
    Wildan
    Edited by: wildsoft on Feb 12, 2010 11:33 AM
    =======
    here is my last trial to deploy the cluster environment, then i just got the same issues, our team here think thats the issues causing by oracle bug in code behind. for reminder what i do last experiment
    1. we deploy/configure the domain (admin console,cluster node) then starting up all the services smoothly without no issues & as we saw in the console monitor we can see the cluster is syncronizing.
    2. then we create simple composite.
    3. we try to deploy the composite to the cluster domain, and what we got is the composite only deployed in one cluster node.
    let me describe to clear it,
    * first trial, when we deploy the composite, here is what we got in em console
    *[-] SoaInfra (SoaServer1)*
    [+] CompositeLabTest
    *[-] SoaInfra (SoaServer2)*
    in JDev we also saw this message (the project CompositeLabTest Deploy Process is skipped), some kind like that
    * second time trial, we try to shut the SoaServer2 down, then restart it, what we got in em console
    *[-] SoaInfra (SoaServer1)*
    [+] CompositeLabTest
    *[-] SoaInfra (SoaServer2)*
    [+] CompositeLabTest
    . so until today my soa suite 11g clustering experience is never going good practice.. any of you may had experience with clustering too, how that can be done? please respon...
    thanks
    regards
    Wildan Abdat
    Edited by: wildsoft on Apr 27, 2010 4:08 PM
    Edited by: wildsoft on Apr 27, 2010 4:13 PM

    Hi there.
    Me too I have a similar problem with cluster deployment.
    I have two different domains in two different phisical machine on the same LAN.
    These domains are equals and the sole difference is regarding the IP configuration:
    domain 1
    machine 172.0.0.1
    soaadmin 172.0.0.1
    soa1 172.0.0.2
    soa1 172.0.0.3
    domain 2
    machine 172.0.1.1
    soaadmin 172.0.1.1
    soa1 172.0.1.2
    soa1 172.0.1.3
    When I try to deploy a new composite from the EM this fails (it remains in waiting for a response like the followed)
    <Jun 18, 2010 10:42:00 AM CEST> <Warning> <org.apache.myfaces.trinidadinternal.context.RequestContextImpl> <BEA-000000> <Could not find partial trigger idArchiveFileBrowserDialog from RichInputText[UIXEditableFacesBeanImpl, id=idArchiveLoc]>
    Processing sar=/tmp/dir2448127768139530528tmp/sca_SOAComposite1_rev1.0.jar
    Adding sar file - /tmp/dir2448127768139530528tmp/sca_SOAComposite1_rev1.0.jar
    Creating HTTP connection to host:172.0.0.2, port:10002
    What I checked:
    In multicast configuration soa1 (domain1) sent the request to all soa servers in the LAN (even in that one that aren't configurated in his domain)
    In unicast configuration soa1 (domain1) sent the request only to the soa2 (domain1) server but it remain in waiting for a response for all the time.
    What it is strange is that if I stop the domain2 the request can be performed and my composite is deployed in both the servers.
    Any idea about this strange behaviour?
    N.B.
    I'm not using Coherence.

  • Real Time Application Clusters in Oracle 9i

    want to know what exactly the Real Application Clusters In oracle9i

    Hello again;
    Real time apply is a new feature introduced in Oracle database 10g.
    Without real time apply, log apply services wait for the full archived redo log to arrive before applying to the standby database.
    If a standby redo log is used real time apply can be enabled allowin Data Guard to recover redo data from the current standby redo log as it is being filled by the RFS process.
    Best Regards
    mseberg

  • Clustering in Oracle 11g/10g

    Hi
    We have 40000 records in our database (Oracle 11g/10g), in which each record holds 2 to 3 images and so each record will be of some MBs.
    Do we need to perform clustering to get a better performance?
    Thanks
    Shoba Anandhan

    Thanks for the immediate replies.
    We have a Windows 2003 Server, where in we have the Microsoft Visual Studio 2008 and Oracle 11g database.
    Our web application will be developed using Microsoft Visual Studio 2008 having Oracle as backend.
    At at time we are assuming 100 users to work with the web applications. We connect to the database everytime to display data in the web page.
    100% performance is expected.
    The Windows 2003 Server has a 4 GB of RAM. Is 4 GB enough to process these database requests or do we need more?

  • OS Clustering in Oracle

    hai all,
    We have a client wants to have run oracle databases on IBM Power .. Now he wants to do OS Clustering (HACMP) in the same environment, and he wants us to co-ordinate in that activity with the system admin team?..what is the role of DBA activity in deploying HACMP ?
    Any idea ?
    Kai

    As with any question about roles, it really depends on the organization.
    At a minimum, the DBA would probably need to
    - install the appropriate binaries on the failover server (assuming the Oracle Home is on local disks and the database files are on the SAN)
    - identify what scripts need to be run on a failover
    - work with the admins to test the failover, etc
    If you don't already have the data files on a shared storage system (i.e. a SAN), you probably have a lot more work to do. And different organizations may want you to do far more than the minimum depending on how well the admins understand Oracle.
    Justin

Maybe you are looking for