Allocation with hierarchies

Hi,
I have two questions regarding allocation in BPC 10 for NW:
1. I have in ACCOUNT dim two hierarchies: PARENTH1 and PARENTH2. When creating logic script for allocation I want to define data scope for node BEAPA in hierarchy PARENTH1 and I did it this way:
*XDIM_MEMBERSET ACCOUNT=BAS(BEAPA)
What if I have the same node in hierarchy PARENTH2? I made several tries combining BAS(BEAPA) with PARENTH1 but I had no luck...
2. I want to allocate plan data evenly among children of a node. In documentation I read that I shoudl use "*FACTOR = 1/COUNT" for that but when I run package I get error:
------------ ABAP Code Generation Error:4 -------------
MESSAGEGTUField "COUNT" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement. "DATA" statement.
Line11 WordCOUNT
My ALLOCATION script code below:
*XDIM_MEMBERSET ACCOUNT=BAS(BEAPA),BAS(BEAPC)
*XDIM_MEMBERSET TIME=2006.01
*XDIM_MEMBERSET CATEGORY=Plan,Budget
*XDIM_MEMBERSET AUDITTRAIL=Input
*XDIM_MEMBERSET ENTITY=CSO
*XDIM_MEMBERSET INTERCO=I_DE
*XDIM_MEMBERSET PRODUCT=ProductA
*XDIM_MEMBERSET RPTCURRENCY=EUR
*XDIM_MEMBERSET MEASURES=PERIODIC
*RUNALLOCATION
*FACTOR = 1/COUNT
*DIM CATEGORY WHAT=Plan ;WHERE=Budget;
//Using={expression}; Total={expression}
*DIM ACCOUNT WHAT=BEAPA.1PL ;WHERE=BAS(BEAPA)  ;
*ENDALLOCATION
Regards,
Andrzej

Hi Vadim,
re 1 - thanks!
re 2 - in handbook for training BPC420 "SAP BusinessObjects Planning and Consolidation, Version for SAP NetWeaver: Administration"
Anyway is there any way to distribute evenly?
Regards,
Andrzej

Similar Messages

  • Report  performance with Hierarchies

    Hi
    How to improve query performance with hierarchies. We have to do lot of navigation's in the query and the volume of data size very big.
    Thanks
    P G

    HI,
    chk this:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1955ba90-0201-0010-d3aa-8b2a4ef6bbb2
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/ce7fb368-0601-0010-64ba-fadc985a1f94
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/4c0ab590-0201-0010-bd9a-8332d8b4f09c
    Query Performance – Is "Aggregates" the way out for me?
    /people/vikash.agrawal/blog/2006/04/17/query-performance-150-is-aggregates-the-way-out-for-me
    ° the OLAP cache is architected to store query result sets and to give all users access to those result sets.
    If a user executes a query, the result set for that query’s request can be stored in the OLAP cache; if that same query (or a derivative) is then executed by another user, the subsequent query request can be filled by accessing the result set already stored in the OLAP cache.
    In this way, a query request filled from the OLAP cache is significantly faster than queries that receive their result set from database access
    ° The indexes that are created in the fact table for each dimension allow you to easily find and select the data
    see http://help.sap.com/saphelp_nw04/helpdata/en/80/1a6473e07211d2acb80000e829fbfe/content.htm
    ° when you load data into the InfoCube, each request has its own request ID, which is included in the fact table in the packet dimension.
    This (besides giving the possibility to manage/delete single request) increases the volume of data, and reduces performance in reporting, as the system has to aggregate with the request ID every time you execute a query. Using compressing, you can eliminate these disadvantages, and bring data from different requests together into one single request (request ID 0).
    This function is critical, as the compressed data can no longer be deleted from the InfoCube using its request IDs and, logically, you must be absolutely certain that the data loaded into the InfoCube is correct.
    see http://help.sap.com/saphelp_nw04/helpdata/en/ca/aa6437e7a4080ee10000009b38f842/content.htm
    ° by using partitioning you can split up the whole dataset for an InfoCube into several, smaller, physically independent and redundancy-free units. Thanks to this separation, performance is increased when reporting, or also when deleting data from the InfoCube.
    see http://help.sap.com/saphelp_nw04/helpdata/en/33/dc2038aa3bcd23e10000009b38f8cf/content.htm
    Hope it helps!
    tHAK YOU,
    dst

  • Error while working with hierarchical profiler

    Hi,
    I am working with hierarchical profiler for the first time in SQL Developer 3.0.
    When I open a procedure and click the Profile icon, I get the following error "Directory exists;check if /tmp exists on file system, and oracle has permissions to write there".
    Any help on this is appreciated.
    Edited by: 836760 on Feb 14, 2011 11:24 PM

    Hi,
    I am working with hierarchical profiler for the first time in SQL Developer 3.0.
    When I open a procedure and click the Profile icon, I get the following error "Directory exists;check if /tmp exists on file system, and oracle has permissions to write there".
    Any help on this is appreciated.
    Edited by: 836760 on Feb 14, 2011 11:24 PM

  • Problem with Hierarchical query

    Gurus,
    I have a problem with hierarchical query, which I am pasting below.
    select sys_connect_by_path (Fname,'/')"PATH",Fname,id,level
    ,(SELECT COUNT(ID)-1 FROM (SELECT CONNECT_BY_ROOT LNAME LNAME,ID FROM CMT_PERSON
    START WITH ID = 'emplo000000000126009'
    CONNECT BY PRIOR ID=MANAGER_ID)
    GROUP BY FNAME)"COUNT"
    from CMT_PERSON
    WHERE
    LEVEL <= 4
    ----And ID='emplo000000000001877'
    CONNECT BY PRIOR id=manager_id
    ----AND NOT LEVEL > 3
    START WITH ID='emplo000000000126009'
    As per the result, count is getting repeated for all the levels. That is, count is coming 16100 for every level, Can you please help where exactly I am going wrong
    Regards

    You do not say anything about what count you want to get?
    A wild guess could be:
    select
       sys_connect_by_path (p1.fname, '/') "PATH",
       p1.fname,
       p1.id,
       level,
       (select count (id) - 1
        from
           (select connect_by_root p2.lname lname, p2.id
            from cmt_person p2
            start with p2.id = p1.id
            connect by prior p2.id = p2.manager_id)
        ) "COUNT"
    from cmt_person p1
    where level <= 4
    connect by prior p1.id = p1.manager_id
    start with p1.id = 'emplo000000000126009';Since your inner query simply starts with the hardcoded employee id, naturally it will give you the same count.
    My guess is your inner query should start with the person id from the outer query?
    If that is not the case - please state in plain english what you are trying to accomplish ;-)
    (Oh, and please paste code within tags so we can read it more easily...)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • How create HTML-list with hierarchical query?

    Hello all!
    I have table HIE (name,id,par) with hierarchical structure (par=id)
    As sample:
    select name
    FROM hie
    CONNECT BY PRIOR id=par
    START WITH par=0
    Root
    Branch 1
    Lief 11
    Lief 12
    Bracnh 2
    I need to create html-list from this table.
    How can I select from that table the structured output with TAGs "UL" "LI":
    <ul><li>root
    <ul>
    <li>branch 1
    <ul>
    <li>lief11</li>
    <li>lief12</li>
    </ul>
    </li></ul>
    <ul>
    <li>branch 2</li></ul>
    </li></ul>
    Sql-Guru, please, help!
    Message was edited by:
    natalia.demidchick
    Message was edited by:
    natalia.demidchick
    Message was edited by:
    natalia.demidchick
    Message was edited by:
    natalia.demidchick
    Message was edited by:
    natalia.demidchick

    Yes there was a mistake
    Try this. It should be good
    Processing ...
    CREATE TABLE TAB_A AS (
         SELECT 'ROOT' AS NAME,1 AS ID,NULL AS PARENT FROM DUAL
         UNION ALL
         SELECT 'BRANCH1' AS NAME,2 AS ID,1 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'BRANCH2' AS NAME,3 AS ID,2 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF1' AS NAME,4 AS ID,2 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF2' AS NAME,5 AS ID,2 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'BRANCH3' AS NAME,6 AS ID,1 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF3' AS NAME,7 AS ID,2 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'BRANCH5' AS NAME,8 AS ID,1 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF4' AS NAME,9 AS ID,8 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF5' AS NAME,10 AS ID,3 AS PARENT FROM DUAL
         UNION ALL
         SELECT 'LIEF6' AS NAME,11 AS ID,3 AS PARENT FROM DUAL
    Processing ...
    SELECT *
    FROM TAB_A
    Query finished, retrieving results...
       NAME                      ID                                   PARENT                
    ROOT                                            1                                       
    BRANCH1                                         2                                      1
    BRANCH2                                         3                                      2
    LIEF1                                           4                                      2
    LIEF2                                           5                                      2
    BRANCH3                                         6                                      1
    LIEF3                                           7                                      2
    BRANCH5                                         8                                      1
    LIEF4                                           9                                      8
    LIEF5                                          10                                      3
    LIEF6                                          11                                      3
    11 row(s) retrieved
    Processing ...
    CREATE GLOBAL TEMPORARY TABLE TEMP_TAB AS (
         SELECT LEVEL AS LV,ROWNUM AS RN,A.*
         FROM TAB_A A
         WHERE (1=0)
         START WITH PARENT IS NULL
         CONNECT BY PRIOR ID = PARENT
    Processing ...
    INSERT INTO TEMP_TAB
         SELECT LEVEL AS LV,ROWNUM AS RN,A.*
         FROM TAB_A A
         START WITH PARENT IS NULL
         CONNECT BY PRIOR ID = PARENT
    11 row(s) inserted
    Processing ...
    SELECT *
    FROM TEMP_TAB
    Query finished, retrieving results...
                      LV                                     RN                      NAME                      ID                                   PARENT                
                                         1                                      1 ROOT                                            1                                       
                                         2                                      2 BRANCH1                                         2                                      1
                                         3                                      3 BRANCH2                                         3                                      2
                                         4                                      4 LIEF5                                          10                                      3
                                         4                                      5 LIEF6                                          11                                      3
                                         3                                      6 LIEF1                                           4                                      2
                                         3                                      7 LIEF2                                           5                                      2
                                         3                                      8 LIEF3                                           7                                      2
                                         2                                      9 BRANCH3                                         6                                      1
                                         2                                     10 BRANCH5                                         8                                      1
                                         3                                     11 LIEF4                                           9                                      8
    11 row(s) retrieved
    Processing ...
    SELECT --LV,RN,1+(NVL(LAG(LV) OVER ( ORDER BY RN ASC),0)-LV+1) step,
         --lead(LV) OVER ( ORDER BY RN ASC NULLS LAST) next_lev,
         decode (lv-1,nvl(LAG(LV) OVER ( ORDER BY RN ASC),0),'<UL>','')||
         '<LI>'||NAME||'</LI>'||
         replace(
         RPAD(chr(10),1+(lv-NVL(lead(LV) OVER ( ORDER BY RN ASC),0))*5,'</UL>'),
         chr(10),
         ) AS HTML
    FROM TEMP_TAB A
    ORDER BY RN ASC
    Query finished, retrieving results...
                                          HTML                                      
    <UL><LI>ROOT</LI>                                                               
    <UL><LI>BRANCH1</LI>                                                            
    <UL><LI>BRANCH2</LI>                                                            
    <UL><LI>LIEF5</LI>                                                              
    <LI>LIEF6</LI></UL>                                                             
    <LI>LIEF1</LI>                                                                  
    <LI>LIEF2</LI>                                                                  
    <LI>LIEF3</LI></UL>                                                             
    <LI>BRANCH3</LI>                                                                
    <LI>BRANCH5</LI>                                                                
    <UL><LI>LIEF4</LI></UL></UL></UL>                                               
    11 row(s) retrieved
    Processing ...
    DROP TABLE TAB_A PURGE
    Processing ...
    DROP TABLE TEMP_TAB
    SELECT LV,RN,1+(NVL(LAG(LV) OVER ( ORDER BY RN ASC),0)-LV+1) step,
         lead(LV) OVER ( ORDER BY RN ASC NULLS LAST) next_lev,
         decode (lv-1,nvl(LAG(LV) OVER ( ORDER BY RN ASC),0),'<UL>','')||
         '<LI>'||NAME||'</LI>'||
         replace(
         RPAD(chr(10),1+(lv-NVL(lead(LV) OVER ( ORDER BY RN ASC),0))*5,'</UL>'),
         chr(10),
         ) AS HTML
    FROM TEMP_TAB A
    ORDER BY RN ASC
    /Bye Alessandro

  • Troubles when trying to transfer a table with hierarchical column to a tree

    In WD for ABAP, I encounter many troubles when trying to transfer a table with hierarchical column to an actual tree. In my UI, the tree is in the left pane and the detail for a node is in the right.
    1. With hierarchical table, I can bind the dataSource of the table directly to the context node in View which is mapped to a context node in component controller which is a DDIC structure. But with a tree, is it possible to map the dataSource of the tree or node in tree to context node in component controller?
    2. With hierarchical table, when lead selection changed, the detail info in the right pane will change automatically. But with a tree, it seems to have to be implemented via action by myself.
    Can anyone give some suggestions to overcome these troubles?

    Wei,
    <i>With tree table, the dataSource of the table is just bound to the context node ORG_UNIT</i>
    Hmmm... You said, that this node resides in component controller, not in view controller. Or does it?
    Any recursive node that can be displayed with tree table can be displayed with tree as well. Period.
    1. Create tree and bind data source to the same node as table data source.
    2. Create tree node type and bind it to the same node again.
    3. Create one additional calculated attribute in forementioned node (type boolean) that inverts/negates attribute for table column "hasChildren" to tree node "isLeaf".
    4. That's all.
    VS

  • Problem while reversing allocations with KEU5

    Dear Experts,
    we encounter some problems when reversing allocations with KEU5 (using KSU5 in the background). When doing so all 4 update processes will be occupied by the system on our 2 servers. Which means that the systems is blocked. 
    Thanks in advance for help and best regards
    Melanie

    SAP OSS Says the following
    This is not a program
    error and completely correct
    behaviour. Nevertheless, I would like provide the following
    recommendations which could possibly reduce workload/improve the
    runtime in the transaction KEU5:
    1. Please make sure that
    the flag for 'detail list' is not activated.
    If the option 'detailed list' is selected, a detailed output list is
    created for every segment. This takes up the largest amount of time
    during the process.
    2. Ensure that the Summarization that you use are updated on a regular
    basis, daily if possible.
    3. Also consider the
    cycles dimensions recommended by SAP (a maximum
    of 50 segments per cycle, a maximum total of 10,000 sender-receiver
    relationships, see documentation). If possible, enter only those
    objects in the cycle that are valid senders or receivers. Consider
    that if, for example, you entered 100 cost centers in a group of which
    only 20 are valid receivers, the complete master data validation and
    database selection is carried out for all 100. See note 79224 and
    130350 for further information.
    4. For the definition of segments and their summary in cycles, you
    should take into account the technical aspects included in note 420081.
    Please take into account that the selection of data is carried out
    from CE3xxxx, CE4xxxx (no effect at this point if you have archived
    CE1xxxx), as explained in note 420081.
    The selection of the reference data can both be carried out from a
    summarization level or from object level (tables CE3xxxx, CE4xxxx).
    In additional , you are
    recommended to perform
    this transaction during the evening/night. This will affect the system
    processes/workload during peak period.

  • Help - Installation Groups with Hierarchies

    Hi experts ,
    I created Installation Grouping with Hierarchies Set-up (Please find the attached Doc)
    Using UTILIT85 Variant to derive Primary Installation billing relevant consumption , & Billing of primary is happening perfectly fine but When I am performing Billing of 2nd level Secondary installation (Which also have 3rd level Secondary installations)  3rd level installations consumption is not deducting from this 2nd level Secondary installation .
    If I check DBERCHV table for Primary Bill Doc then there is -ve consumption line present for this installation , But during billing system is not deducting this consumption from Secondary meters consumption .
    Please tell where I am doing wrong or what step I am skipping .
    Please find the attachment with more clarity (What exactly I am doing)

    Manoj:
    Asking for documentation is not the appropriate approach in the forums.  Please read Research Resources and Rules of Engagement.  Ask a specific question, indicating what you have tried and where you have failed or are having issues.
    This thread is locked.
    regards,
    bill.

  • Installation Groups with Hierarchies

    Hi Experts ,
    If anybody of you ever worked on Installation Groups with Hierarchies (Multilevel Main & Sub)  please share the Document or provide me the link .

    Manoj:
    Asking for documentation is not the appropriate approach in the forums.  Please read Research Resources and Rules of Engagement.  Ask a specific question, indicating what you have tried and where you have failed or are having issues.
    This thread is locked.
    regards,
    bill.

  • SRM 7.0 - Importing RFQ through excel with hierarchies

    Hello Experts,
    I am working with SRM 7.0 Portal, and I have a problem when I import an RFQ through excel with hierarchies for Portal.
    I am using the BADI BBP_PD_DOWNLOAD to handle export and import of data from the portal.
    To export to excel i use the function module BBP_PDH_FILE_DOWNLOAD_RENDER, and to import i use BBP_PDH_FILE_UPLOAD_PARSER.
    The problem is that i export data from portal layout to excel with the defined hierarchies, however when i import the same excel, the data is displayed in the Portal without the hierarchies were defined.
    Has anyone experienced this problem?
    Best regards
    Ricardo Marques

    Hi,
    I would import the Excel Data to SRM-MDM Catalog. User can select items from catalog.
    Regards,
    Masa

  • Issue with Hierarchies

    Hi ,
    We are working on BO on top of BW pilot version and finding different issues with different tools.
    1) Used existing BW queries/created universe.When we run the report using Web Intelligence, not able to get the way Hierachies displays in BEx.(Tree like structure).
    If we enable drill up and down option, the summary level disappeas only we can see the lower level.Which I think is a useless information to the user as it appears like a flat file data.
    We created the report with possible Hierarchies upfront like a canned report, but doesn't give any option to drill up/down further, doesn't allow the user any other activity, other than dragging/dropping some columns.
    2) Tried to create the report in Crystal, but because of the page limitations, I cannot get all my columns in the same page( I have 35 columns)
    3) To derive the reports in XCelicius, my business partner tells me that they need to create queries on Excel to use that functionality.They are preferring to go with R/3, rather than BW, which will be again significant amount of work.
    I wonder if anyone encountered these kind of issues ?
    Providing these limitations, I don't see much value of having this tool on top of BW.Any comments?
    I agree, it is a great tool on top of relational databases, as we are using this tool on relational databases and didn't find these many issues.
    Can someone provide me the list of advantages of having BO on top of BW? I mean what BO can offer when compared to BEx( We only use BEx, no Web)
    Thanks
    Priya

    hi,
    perhaps I can bring in some clarifications :
    - Crystal Reports is able to leverage the hierarchies and use a parent child relationship and show the hierarchical levels from BW. It looks like the challenge you have in Crystal Reports is that you have a lot of columns that you would like to have in your report. Crystal Reports is layout driven so you could actually set a size of the report by configuring the page setup.
    - web Intelligence is exposing a hierarchy based on levels so that the user can leverage the levels in the report. when enabling the drill down you could actually go from a top level down to multiple levels of the hierarchy
    - Xcelsius can leverage multiple different sources: Web Services, Crystal reports, web Intelligence. Xcelsius can use Live Office to connect to existing reports from Crystal Reports and web Intelligence.
    Feel free to provide your comments / questions in case this doesn't answer your questions
    Ingo Hilgefort

  • Using Variable Replacement Path with Hierarchies

    Hi,
    I have a requirement where I have two product hierarchies.
    In my report I want the user to be able to select which hierarchy they view at run time.
    I want them to be able to see this hierarchy as a tree,in order for me to do this I first must inlcude one variable to specify which hierarchy i am going to use, then the next Variable2 is populated by Variable1 and allows the users to expand on that hierarchy tree.
    E.g
    At Run Time
    Selection 1: User selects Product Hierarchy1
    Selection 2: Gets automatically populated based on selection 1 to show the product hierarchy tree for this variable.
    I have tried using replacement paths to do this but it does not allow this.
    Any ideaS?
    Thanks

    It finally worked, looks like the reason it was not working was a Query Designer exception issue whihc went with a re-start of Query Designer.
    All good

  • Bug in rendering static list with Hierarchical Expanding template?

    Hi,
    on http://apex.oracle.com/pls/apex/f?p=23910 I prepared test case for my problem. It is static list with template Hierarchical Expanding and following structure:
    1
      1.1
        1.1.1
      1.2
        1.2.1
    2
    Entry 1.2 has condition set to never. And the problem is, as you can see, that entry 2 seems to be under entry 1.1. But really it isn't. Reason of this strange look is that in some cases, when condition for last entry in sublist is evaluted as false, there isn't generated tag </ul> closing that sublist, in this case are not closed even two sublists - under entries 1 and 1.1.
    In my real application it is more complicated, I have static list with about 80 entries (report menu) and every user sees some reports based on his position in organization structure and other conditions. And as you can imagine, this bug produces really confusing results, almost unique for every user.
    Did anybody meet this problem too? We are on ApEx 4.1.0, it is present in 4.1.1 too (as seen on apex.oracle.com)... And I think it wasn't problem in 4.0 (at least nobody noticed for few months and I believe somebody would notice that reports for one department are under reports for another one). Used theme is standard theme 2 - Builder Blue.
    Jirka

    update:
    I tried deriving the full path for the image file by viewing the source when I embedded it in an HTML region on the same page and it gives me something similar to the following URL:
    wwv_flow_file_mgr.get_file?p_security_group_id=502133210878128108&p_fname=myImage.gif
    (p.s. it is a .gif file - not sure if this should make any material difference)
    As a result, I tried embedding this into the code:
    <fo:block>
    <fo:external-graphic src="wwv_flow_file_mgr.get_file?p_security_group_id=502133210878128108&p_fname=myImage.gif)"/>
    </fo:block>
    but this time, instead of merely not rendering, when Acrobat opens, an error message appeared reported that the file was corrupted or invalid. When trying different formats, I seem to get a generic: "500 Internal Server Error".
    I'm going to try putting the image file in the server directory tree to see if that will work. I'll post later either way.

  • Problem with hierarchical queries

    Hi,
    I implemented (thx to jarola) sucessfully a report using a hierarchical view.
    It is nearly the same as in Tyler Muths blog: -http://tylermuth.wordpress.com/2009/02/26/hierarchical-query-to-unordered-list/-
    -select (level*20)-20 the_level ,(level*10)-10 the_level2, machine_no
    - parent_id, item_id,description
    -from machine_list
    -where machine_no = 101
    -and project_id = 122
    - connect by prior item_id = parent_id
    - start with parent_id is null
    This works good, as long as there is just one project/machine in the table.
    If I have 2 machines in the table, it does not work in the report anymore, all entries are shown, although I check for the right machine_number and project_number in the query :-(
    Any suggestions?
    BR
    Lena

    Hi Joel
    Just for reference, to write the code tags in posts without a space, you can use noformat tags on either side like this (let's see if I can manage this!)...
    <pre>{noformat }{noformat }</pre>
    Edited by: Munky on Apr 27, 2011 10:03 AM
    Edited by: Munky on Apr 27, 2011 10:03 AM
    Edited by: Munky on Apr 27, 2011 10:03 AM
    Edited by: Munky on Apr 27, 2011 10:04 AM
    Edited by: Munky on Apr 27, 2011 10:04 AM
    Edited by: Munky on Apr 27, 2011 10:05 AM - sod it! had to add spaces to the noformat tags!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • [SOLVED] SGA_MAX_SIZE pre-allocated with Solaris 10?

    Hi all,
    I'm about to build a new production database to migrate an existing 8.1.7 database to 10.2.0.3. I'm in the enviable position of having a good chunk of memory to play with on the new system (compared with the existing one) so was looking at a suitable size for the SGA... when something pinged in my memory about SGA_MAX_SIZE and memory allocation in the OS where some platforms will allocate the entire amount of SGA_MAX_SIZE rather than just SGA_TARGET.
    So I did a little test. Using Solaris 10 and Oracle 10.2.0.3 I've created a basic database with SGA_MAX_SIZE set to 400MB and SGA_TARGET 280MB
    $ sqlplus
    SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jan 30 18:31:21 2008
    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
    Enter user-name: / as sysdba
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    SQL> show parameter sga
    NAME                                 TYPE        VALUE
    lock_sga                             boolean     FALSE
    pre_page_sga                         boolean     FALSE
    sga_max_size                         big integer 400M
    sga_target                           big integer 280MSo I was expecting to see the OS pre-allocate 280MB of memory but when I checked the segment is actually the 400MB (i.e. SGA_MAX_SIZE) (my database owner is 'ora10g'):
    $ ipcs -a
    IPC status from <running system> as of Wed Jan 30 18:31:36 GMT 2008
    T         ID      KEY        MODE        OWNER    GROUP  CREATOR  
    CGROUP CBYTES  QNUM QBYTES LSPID LRPID   STIME    RTIME    CTIME
    Message Queues:
    T         ID      KEY        MODE        OWNER    GROUP  CREATOR  
    CGROUP NATTCH      SEGSZ  CPID  LPID   ATIME    DTIME    CTIME
    Shared Memory:
    m         22   0x2394e4   rw-r---   ora10g   10gdba   ora10g  
    10gdba     20  419438592  2386  2542 18:31:22 18:31:28 18:28:18
    T         ID      KEY        MODE        OWNER    GROUP  CREATOR  
    CGROUP NSEMS   OTIME    CTIME
    Semaphores:
    s         23   0x89a070e8 ra-r---   ora10g   10gdba   ora10g  
    10gdba   154 18:31:31 18:28:18
    $ I wasn't sure whether Solaris 10 was one of the OSs with truly dynamic memory for the SGA but had hoped it was... this seems to say different. Really I'm just after some confirmation that I'm reading this correctly.
    Thanks.
    Joseph
    Message was edited by:
    Joseph Crofts
    Edited for clarity

    I don't want to get bogged down in too many details, as the links provided in previous posts have many details of SGA tests and the results of what happened. I just want to add a bit of explanation about the Oracle SGA and shared memory on UNIX and Solaris in particular.
    As you know Oracle's SGA is generally a single segment of shared memory. Historically this was 'normal' memory and could be paged out to the swap device. So a 500 MB SGA on a 1 GB physical memory system, would allocate 500 MB from the swap device for paging purposes, but might not use 500 MB of physical memory i.e. free memory might not decrease by 500 MB. How much physical memory depended on what pages in the SGA were accessed, and how frequently.
    At some point some people realised that this paging of the SGA was actually slowing performance of Oracle, as now some 'memory' accesses by Oracle could actually cause 'disk' accesses by paging in saved pages from the swap device. So some operating systems introduced a 'lock' option when creating a shared memory segment (shmat system call if memory serves me). And this was often enabled by a corresponding Oracle initialisation parameter, such as lock_sga.
    Now a 'locked' SGA did use up the full physical memory, and was guaranteed not to be paged out to disk. So Oracle SGA access was now always at memory speed, and consistent.
    Some operating systems took advantage of this 'lock' flag to shared memory segment creation to implement some other performance optimisations. One is not to allocate paging storage from swap space anyway, as it cannot be used by this shared memory segment. Another is to share the secondary page tables within the virtual memory sub-system for this segment over all processes attached to it i.e. one shared page table for the segment, not one page table per process. This can lead to massive memory savings on large SGAs with many attached shadow server processes. Another optimisation on this non-paged, contiguous memory segment is to use large memory pages instead of standard small ones. On Solaris instead of one page entry covering 8 KB of physical memory, it covers 8 MB of physical memory. This reduces the size of the virtual memory page table by a factor of 1,000 - another major memory saving.
    These were some of the optimisations that the original Red Hat Enterprise Linux had to introduce, to play catch up with Solaris, and to not waste memory on large page tables.
    Due to these extra optimisations, Solaris chose to call this 'locking' of shared memory segments 'initimate shared memory' or ISM for short. And I think there was a corresponding Oracle parameter 'use_ism'. This is now the default setting in Oracle ports to Solaris.
    As a result, this is why when Oracle grabs its shared memory segment up front (SGA_MAX_SIZE), it results in that amount of real physical memory being allocated and used.
    With Oracle 9i and 10g when Oracle introduced the SGA_TARGET and other settings and could dynamically resize the SGA, this messed things up for Solaris. Because the shared memory segment was 'Intimate' by default, and was not backed up by paging space on the swap device, it could never shrink in size, or release memory as it could not be paged out.
    Eventually Sun wrote a work around for this problem, and called it Dynamic Intimate Shared Memory (DISM). This is not on by default in Oracle, hence you are seeing all your shared memory segments using the same amount of physical memory. DISM allows the 'lock' flag to be turned on and off on a shared memory segment, and to be done over various memory sizes.
    I am not sure of the details, and so am beginning to get vague here. But I remember that this was a workaround on Sun's part to still get the benefits of ISM and the memory savings from large virtual memory pages and shared secondary page tables, while allowing Oracle to manage the SGA size dynamically and be able to release memory back for use by other things. I'm not sure if DISM allows Oracle to mark memory areas as pageable or locked, or whether it allows Oracle to really grow and shrink the size of a single shared memory segment. I presumed it added yet more flags to the various shared memory system calls.
    Although DISM should work on normal, single Solaris systems, as you know it is not enabled by default, and requires a special initialisation parameter. Also be aware that there are issues with DISM on high end Solaris systems that support Domains (F15K, F25K, etc.) and in Solaris Zones or Containers. Domains have problems when you want to dynamically remove a CPU/Memory board from the system, and the allocations of memory on that board must be reallocated to other memory boards. This can break the rule that a locked shared memory segment must occupy contiguous physical memory. It took Sun another couple of releases of Solaris (or patches or quarterly releases) before they got DISM to work properly in a system with domains.
    I hope I am not trying to teach my granny to suck eggs, if you know what I mean. I just thought I'd provide a bit more background details.
    John

Maybe you are looking for

  • Upgraded to 10.7.3 on iPad mini. Now iTunes shuffle appears to have no way to turn off . Anybody?...please?...

    Hi, is any body out there able to tell me how to turn off the shuffle feature in iTunes on my iPad mini. ( iOS 10.7.3) I wasn't even aware I had turned it on. It just seemed to turn itself on after a software update. Thanks for any help.

  • What is the macbook pro's equivalent to paint

    hi everyone, im new to the macbook pro and i have used paint on pc to create sketches of graphs. i was wondering what the mac's equivalent to that was. thank a bunch

  • Export tables from one database in other.

    hi, I want to export the all tables and views (only structure) from remote database in my local database. How can i do the same? Is ther anyay to export only 5 rows of each table as export of all rows from table will take lot of space.. Ashish

  • V.02 use different RFC connection

    Hello all, We have a situation that when a user executes V.02 in R3 and then clicks on an incomplete Sales Document it jumps to the SCM system to do an APO Availability Check.  The problem is that it uses a RFC connection with a system user and when

  • Query not showing data correctly

    Hi All i have one query on FILG cube in which FIscal period and one amount field is in columns when i see in display data i have seen that there is a data for the period 001/2009, 002/2009 and 006/2009 but when i run the query it only display the dat