Partitioning on Oracle 8.0.6 (rule base vs. cost base)

At my current engagement, we are using Oracle Financials 11.0.3 on Oracle 8.0.5 which uses rule-based optimizer. However, it is been planned to upgrade the database from Oracle 8.0.5 to Oracle 8.0.6 as well as implement Oracle partitioning. With this in mind, we are concerned about possible performance issues that the implementation of partitioning may cause since RBO does not recognize it.
We agree that the RBO will see a non-partitioned table the same as a partitioned. In this scenario where you gain the most is with backup/recoverability and general maintenance of the partitioned table.
Nevertheless, we have a few questions:
When implementing partitions, will the optimizer choose to go with Cost base vs. Rule base for these partitioned tables?
Is it possible that the optimizer might get confused with this?
If this change form RBO to CBO does occur, the application could potential perform poorly because of the way it has been written.
Please provide any feedback.
thanks in advance.

If the CBO is invoked when accessing these tables, you may run into problems.
- You'll have to analyze your tables & ensure that the statistics are kept up to date.
- It's possible that any SQL statements which invoke the CBO rather than the RBO will have different performance characteristics. The SYSTEM data dictionary tables, for example, must use the RBO or their performance suffers dramatically. Most of the time, the CBO beats the RBO, but applications which have been heavily tuned with the RBO may have problems with the CBO.
- Check your init.ora to see what optimizer mode you're in. If you're set to CHOOSE, the CBO will be invoked whenever statistics are available on the table(s) involved. If you choose RULE, you'll only invoke the CBO when the RBO encounters situations it doesn't have rules for.
Justin

Similar Messages

  • Account base , cost base

    hi sap gurus
       can anybody clear me about the copa base of account base and cost base , and what are the differences for these both?
       regards
    venkatareddy

    There are two ways COPA captures data
    . Costing based
    . Account based
    • Both use Characteristics to store the data abt info that is updates in COPA
    • Characteristics (Customers,Sales office,Sales grp,Material number,Strategic business unit,Co code,Profit center,Sales employee,Cont area,Prod hierarchy etc)
    Main diff in how the 2 methods store data involves qty and values
    • Costing based stores values and qty in Value fields
    • Account based stores them in cost elements (accts) used in FI and rest of CO
    • Value fields group together similar values and qty
    <b>Costing based COPA</b>
    1-Costing based COPA allows you to manage sales based on when sales docs update and when data is trans from FI and other CO modules
    2- Normally the largest data trans to COPA is from SD billing docs
    3-Normal doc flow
            . Sales order
             .Delivery (creates goods issue - debit COGS / credit Inventory)
            . Billing docs (updates A/R, Sales revenue, Disc, Freights etc)
    4-costing based COPA, COPA is not updated until billing docs are created
    <b>Account based COPA</b>
    1-Allows users to reconcile COPA data to FI data
    2-According to the accts posted instead of the value fields
    3-Data mainly trans from billing docs again
    4-Acct based COPA updated during the delivery and creation of billing docs and not
       after itlike costing based
    5-Normal doc flow
             1-Sales order
             2-Delivery (COGS is updated in COPA here itself)
            3- Billing docs
    plz assign point as way of thanks

  • Partitioning on Oracle 8i (Rule Based vs. Cost Based)

    At my current engagement, we are using Oracle Financials 11.0.3 on Oracle 8.0.6. The application uses rule-based optimizer. The client wants to implement Oracle partitioning. With this in mind, we are concerned about possible performance issues that the implementation of partitioning may cause since RBO does not recognize it.
    We agree that the RBO will see a non-partitioned table the same as a partitioned. In this scenario where you gain the most is with backup/recoverability and general maintenance of the partitioned table.
    Nevertheless, we have a few questions:
    When implementing partitions, will the optimizer choose to go with Cost base vs. Rule base for these partitioned tables?
    Is it possible that the optimizer might get confused with this?
    Could it degrade performance at the SQL level?
    If this change from RBO to CBO does occur, the application could potential perform poorly because of the way it has been written.
    Please provide any feedback.
    Thanks in advance.

    If the CBO is invoked when accessing these tables, you may run into problems.
    - You'll have to analyze your tables & ensure that the statistics are kept up to date.
    - It's possible that any SQL statements which invoke the CBO rather than the RBO will have different performance characteristics. The SYSTEM data dictionary tables, for example, must use the RBO or their performance suffers dramatically. Most of the time, the CBO beats the RBO, but applications which have been heavily tuned with the RBO may have problems with the CBO.
    - Check your init.ora to see what optimizer mode you're in. If you're set to CHOOSE, the CBO will be invoked whenever statistics are available on the table(s) involved. If you choose RULE, you'll only invoke the CBO when the RBO encounters situations it doesn't have rules for.
    Justin

  • Automatic table partitioning in Oracle 11g

    Hi All,
    I need to implement automatic table partitioning in Oracle 11g version, but partitioning interval should be on daily basis(For every day).
    I was able to perform this for Monthly and Yearly but not on daily basis.
    create table part
    (a date)PARTITION BY RANGE (a)
    INTERVAL (NUMTOYMINTERVAL(1,'*MONTH*'))
    (partition p1 values less than (TO_DATE('01-NOV-2007','DD-MON-YYYY'))
    Table created
    create table part
    (a date)PARTITION BY RANGE (a)
    INTERVAL (NUMTOYMINTERVAL(1,'*YEAR*'))
    (partition p1 values less than (TO_DATE('01-NOV-2007','DD-MON-YYYY'))
    Table createdBut if i use DD or DAY instead of YEAR or MONTH it fails......Please suggest me how to perform this on daily basis.
    SQL>
      1  create table part
      2  (a date)PARTITION BY RANGE (a)
      3  INTERVAL (NUMTOYMINTERVAL(1,'*DAY*'))
      4  (partition p1 values less than (TO_DATE('01-NOV-2007','DD-MON-YYYY'))
      5* )
    SQL> /
    INTERVAL (NUMTOYMINTERVAL(1,'DAY'))
    ERROR at line 3:
    ORA-14752: Interval expression is not a constant of the correct type
    SQL> create table part
    (a date)PARTITION BY RANGE (a)
    INTERVAL (NUMTOYMINTERVAL(1,'*DD*'))
    (partition p1 values less than (TO_DATE('01-NOV-2007','DD-MON-YYYY'))
    );  2    3    4    5
    INTERVAL (NUMTOYMINTERVAL(1,'DD'))
    ERROR at line 3:
    ORA-14752: Interval expression is not a constant of the correct typePlease suggest me to resolve this ORA-14752 error for using DAY or DD or HH24
    -Yasser

    Yes, for differenct partitions for different months.
    interval (numtoyminterval(1,'MONTH'))
    store in (TS1,TS2,TS3)
    This code will store data in partitions in tablespaces TS1, TS2, and TS3 in a round robin manner.
    for Day wise day yes you can store
    INTERVAL (NUMTODSINTERVAL(1,'day')) or
    INTERVAL (NUMTODSINTERVAL(2,'day')) or
    INTERVAL (NUMTODSINTERVAL(3,'day')) or
    INTERVAL (NUMTODSINTERVAL(4,'day')) or
    INTERVAL (NUMTODSINTERVAL(5,'day')) or
    INTERVAL (NUMTODSINTERVAL(n,'day'))

  • Creating Partitions in Oracle 10G Express Edition

    Can I create partitions in oracle 10g express edition?

    See yourself :
    http://download.oracle.com/docs/cd/B25329_01/doc/license.102/b25456/toc.htm#BABJIJCJ

  • Table Partitioning in Oracle 8i

    Can tables be partitioned in Oracle 8i Standard Edition, or do I have to have the Enterprise Edition? I'm trying to deal with backup of a large database, and want to consider performinig partial backups to save time/resources. Thanks.

    Hi,
    You need entreprise edition for that.
    no other way

  • Table Partitioning in Oracle 9i

    Hi all,
    I have a question on partitioning in Oracle 9i.
    I have a parent table with primary key A1 and attribute A2. A2 is not a primary key but I would to create partition for the table based on this attribute. I have a child table with attribute B1 being a foreign key to A1.
    I wish to perform a data purging on the parent and child table. I'll purge the parent table based on A2, but for the child table, it will be inefficient if I delete all records in child table where parent.A1 = child.B1. Should I add a new attribute A2 to the child table, partition the child table based on this attribute or is there a better way to do it?
    Thanks in advance for all replies.
    Cheers,
    Bernard

    Bernard
    Right 100K in the parent...but how many in the child ?
    I guess it comes back to what I said earlier...you can either take the hit on the cascaded delete to get out the records on the child table or you can denormalise the column down onto the child table in order to partition by it.
    I'm building a Data Warehouse currently and we're using the denormalise approach on a couple of tables in order to allow them to be equipartitioned and enable easier partition management and DML operations as you've indicated....but our tables have 100's of millions of rows in them so we really need to do that for manageability.
    100K records in the parent - provided the ratio to the child is not such that on average each deleted parent has 100's of children is probably not too onerous, especially for a monthly batch process - the question there would be how much time do you have to do this at the end of the month ? I'd probably suggest you set up a quick test and benchmark it with say 10K records as a representative sample (can do all 100K if you have time/space) - then assess that load/time against your month end window....if its reasonably quick then no need to compromise your design.
    You should also consider whether the 100K is going to remain consistent over time or is it going to grow rapidly in which that would sway you towards adding the denormalisation for partitioning approach at the outset.
    HTH
    Jeff

  • Inserting Data from Oracle to SQL Server on the Real Time Basis.

    Hi Everyone,
    I need to insert data from Oracle to SQL Server on the Real Time basis, we have to fetch data from oracle approx 20 tables, and each table has more than 30 Fields. I need to fetch data in every 15 mins.
    I have created a job using SQL SERVER Agent by writing insert queries for all the tables with conditions that no rows will be inserted which is already in SQL. note that this job is taking only 1 min to execute.
    But in this way our SQL Server getting hanged and it giving problems to other application running in the SQL SERVER.
    So i m requesting all of you that what is the best way to insert huge amount of data on the real time basis.
    Thanx in Advance.

    1) Create Linked server 
    2) insert data using openquery  and set job in sql agent
    3) run job after 15 minutes

  • Validation business rule on a cumulative basis with periodic data storage

    Hi BPC Experts,
    Is it possible to set up a validation business rule on a cumulative basis when we have periodic data storage type?
    Appreciate your assistance with this.
    Thanks.
    Mila

    Hi Mila
    Please could you tell me how you solved the issue?
    We have it the other way round, a YTD storage, but would like to validate accounts on a periodic basis.
    Thanks for sharing your findings.
    Melanie

  • Problems Faced with Partitions in Oracle 9i.

    I have a doubt regarding the partitions in Oracle 9i can you please help me regarding this?
    Create table t1
    ( x number,
    y number,
    z number);
    insert into t1 values (1,1,1);
    insert into t1 values (2,2,2);
    insert into t1 values (3,3,3);
    Create table t2
    x number,
    y number,
    z number
    partition by range(x)
    partition p1 values less than(2),
    partition p2 values less than(3),
    partition p3 values less than(4),
    partition p4 values less than(maxvalue)
    alter table t2 exchange partition p1 with table t1;
    SQL> alter table t2 exchange partition p1 with table t1;
    alter table t2 exchange partition p1 with table t1
    ERROR at line 1:
    ORA-14099: all rows in table do not qualify for specified partition
    WHAT DOES THIS ERROR MESSAGE MEAN? I AM NOT ABLE TO UNDERSTAND THIS? WHAT NEED's TO BE DONE TO RESOLVE THIS?
    alter table t2 exchange partition p1 with table t1 WITHOUT VALIDATION;
    SQL> SELECT * FROM T2;
    X Y Z
    1 1 1
    2 2 2
    3 3 3
    SQL> SELECT * FROM T2 PARTITION(P1);
    X Y Z
    1 1 1
    2 2 2
    3 3 3
    SQL> SELECT * FROM T2 PARTITION(P2);
    no rows selected
    SQL> SELECT * FROM T2 PARTITION(P3);
    no rows selected
    (i) Why i am facing this error ORA-14099: while partitioning? Can you please brief me about this ?
    (ii) why there is not data's in the PARTITIONS p2 &p3 after the partitions is exchanged WITHOUT VALIDATION options?
    what is going with this method?
    (iii) Also can you please explain me with an example how to partitions a table having milliion of records with EXCHANGE PARTITION Options with MULITPLE partition segment's (say partition based on status id column with 6 differnt values i am thinking to use list partitions using status_id as partition key) ?
    Also i have tried the below approch is this a right approch? please correct me if i am wrong.
    Create table t1
    ( x number,
    y number,
    z number);
    insert into t1 values (1,1,1);
    insert into t1 values (2,2,2);
    insert into t1 values (3,3,3);
    commit;
    Create table t2
    x number,
    y number,
    z number
    partition by range(x)
    partition p1 values less than(2),
    partition p2 values less than(3),
    partition p3 values less than(4),
    partition p4 values less than(maxvalue)
    SQL> insert into t2 select * from t1;
    3 rows created.
    SQL> commit;
    Commit complete.
    SQL> SELECT * FROM T2 PARTITION(P1);
    X Y Z
    1 1 1
    SQL> SELECT * FROM T2 PARTITION(P2);
    X Y Z
    2 2 2
    SQL> SELECT * FROM T2 PARTITION(P3);
    X Y Z
    3 3 3
    SQL> SELECT * FROM T2 PARTITION(P4);
    no rows selected
    EXPLAIN PLAN
    FOR SELECT * FROM T2 WHERE X = 1
    | Id | Operation | Name | Rows | Bytes | Cost | Pstart| Pstop |
    | 0 | SELECT STATEMENT | | 1 | 9 | 2 | | |
    | 1 | TABLE ACCESS FULL | T2 | 1 | 9 | 2 | 1 | 1 |
    Now my question is what is problem instead of using EXCHANGE PARTITION why caun't we follow this above approch?
    to partition a non-partitioned table?
    Thanks,
    Rajesh.

    The value of 3 should obviously should go into the partition P3.Then why are you putting it into p1?
    Your command,
    <tt>    alter table t2 exchange partition <b>p1</b> with table t1;</tt>
    will swap partition p1 with the contents of table t1, leaving you with partition p1 containing the three values that were in t1. At first it told you there were rows in t1 that did not belong in that partition, but you used FORCE so it put them in anyway.
    btw there are notes in the FAQ about how to use ** tags to format your posts.
    ~Edited by: William Robertson on Oct 15, 2008 6:49 AM~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Unwanted events are also logged in the view created for a specific target from the rules created using its base target

    I have created Event or Alert view using a target "My.Target" which is derived from a base target "Windows Server".
    All the events or alerts are captured correctly from the servers discovered by "My.Target" but the same view also shows the events and alerts from other servers which has a rule created with a base target "Windows Server".
    Is there any option to filter the base target at view level other than using a custom field as it doesn't work for the alerts generated using "Monitors".
    Any help would be greatly appreciated.
    Thanks in advance.

    There is a class "My.Servers" derived from "Microsoft.Windows.Server.Computer" as below -
      <TypeDefinitions>
        <EntityTypes>
          <ClassTypes>
            <ClassType ID="My.Servers" Accessibility="Public" Abstract="false" Base="MicrosoftWindowsLibrary!Microsoft.Windows.Server.Computer" Hosted="false" Singleton="false" Extension="false">
              <Property ID="Name" Type="string" AutoIncrement="false" Key="false" CaseSensitive="false" MaxLength="256" MinLength="0" Required="false" Scale="0" />          
            </ClassType>
          </ClassTypes>
        </EntityTypes>
      </TypeDefinitions>
    There is a discovery "MyServersDiscovery" to discover servers with presence of some registry key as below -
    <Monitoring>
        <Discoveries>
          <Discovery ID="MyServersDiscovery" Enabled="true" Target="MicrosoftWindowsLibrary!Microsoft.Windows.Server.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
            <Category>Discovery</Category>
            <DiscoveryTypes>
              <DiscoveryClass TypeID="My.Servers">
                <Property TypeID="My.Servers" PropertyID="Name" />
              </DiscoveryClass>
            </DiscoveryTypes>
            <DataSource ID="Name.AttributeDiscovery" TypeID="MicrosoftWindowsLibrary!Microsoft.Windows.FilteredRegistryDiscoveryProvider">
              <ComputerName>$Target/Property[Type="MicrosoftWindowsLibrary!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
              <RegistryAttributeDefinitions>
                <RegistryAttributeDefinition>
                  <AttributeName>Name</AttributeName>
                  <Path>SOFTWARE\MyRegKey</Path>
                  <PathType>0</PathType>
                  <AttributeType>0</AttributeType>
                </RegistryAttributeDefinition>
              </RegistryAttributeDefinitions>
              <Frequency>300</Frequency>
              <ClassId>$MPElement[Name="My.Servers"]$</ClassId>
              <InstanceSettings>
                <Settings>
                  <Setting>
                    <Name>$MPElement[Name="MicrosoftWindowsLibrary!Microsoft.Windows.Computer"]/PrincipalName$</Name>
                    <Value>$Target/Property[Type="MicrosoftWindowsLibrary!Microsoft.Windows.Computer"]/PrincipalName$</Value>
                  </Setting>
                  <Setting>
                    <Name>$MPElement[Name="SystemLibrary!System.Entity"]/DisplayName$</Name>
                    <Value>$Target/Property[Type="SystemLibrary!System.Entity"]/DisplayName$</Value>
                  </Setting>
                  <Setting>
                    <Name>$MPElement[Name="My.Servers"]/Name$</Name>
                    <Value>$Data/Values/Name$</Value>
                  </Setting>
                </Settings>
              </InstanceSettings>
              </Expression>         
            </DataSource>
          </Discovery>
    </Monitoring>
    Created 2 views "My.Alert.View" and "My.Event.View" with Target "My.Servers" as below -
     <Presentation>
        <Views>
          <View ID="My.Alert.View" Accessibility="Public" Enabled="true" Target="My.Servers" TypeID="SystemCenter!Microsoft.SystemCenter.AlertViewType" Visible="true">
            <Category>Operations</Category>
          </View>
          <View ID="My.Event.View" Accessibility="Public" Enabled="true" Target="My.Servers" TypeID="SystemCenter!Microsoft.SystemCenter.EventViewType" Visible="true">
            <Category>Operations</Category>
          </View>
    </Views>
    </Presentation>
    The above views display events and alerts generated by rules targeted on the serves discovered with "MyServersDiscovery" correctly.
    The major issue here is - if there is a rule in same or any other management pack for which the target is "Windows Server", the alert or event generated by that rule is also shown in these views which is not expected.
    It seems it is because the target for "My.Alert.View" and "My.Event.View" is "My.Servers" which is dervied from "Microsoft.Windows.Server.Computer" so by default all the rules targeted on its base class "Microsoft.Windows.Server.Computer" are also visible
    here.
    Is there any way to avoid this?

  • Clarification regarding burden schedule,cost base,cost type with example

    Hi,
    can you please explain burden schedule,cost base,cost type ,burden cost code with example. how its taking part with oracle costing.

    Hi
    You might want to review Oracle Projects Costing User Guide.
    Chapter 3 there has a good overview, explanations and examples
    Dina

  • Change to Base in costing sheet

    Hi Friends,
    If one base ( BA01) is included in 3 costing sheets , now I am chaging to base BA01 fo costing sheet (CS01) and adding 2 activity types , now my question is since BA01 is incuded for 3 costing sheets(CS01/CS02/CS03) so the new actvity types will be added automatically for other two costing sheet bases.
    Because bases are controlling area dependent and not specific to costing sheet.
    Any pointers, please clarify my doubt.
    Regards
    Ashu
    Edited by: ashutosh p on Jun 7, 2010 6:12 PM

    Hi,
    yes, thats what it is: "Because bases are controlling area dependent and not specific to costing sheet." So changing one base-definition will affect all costing sheets that use this base-definiton as well.
    The only thing is, you enter cost elements (or groups of them) in the base definition, not activity types.
    Best regards, Christian

  • Base method and base value

    Dear forum,
    I would like to seek advice on the above.
    I do not sure what is the difference between base method and base value in multilevel method.
    What is the difference between these 2 base?
    Thanks

    Hi,
    If you go ti AFAMA nd chosse a depr, key you can see the base Method as one component of the key.
    Here is defined:
    - Type of depreciation
    - Dep. method and
    - Treatment of end of depreciaion
    If you take a look at the "multilevel method (also in AFAMA) you can see the base value.
    The value used as the basis for the calculation of depreciation.
    Regards Bernhard

  • Base Currency Or Base Amount Does Not Have a Value?

    Hi
    I've received the following error on the PRC: Distribute Borrowed and Lent Amounts process: Base Currency Or Base Amount Does Not Have a Value
    Does anyone know what it means?

    Hi
    Do you have different currencies for your provider and receiver operating units?
    Is there a difference between the transaction currency Ithe expenditure item) and the receiving OU currency?
    Verify daily exchange rates exists for the relevant transaction dates.
    Dina

Maybe you are looking for

  • How do I combine text and image on same screen?

    How do I comgine text and an image on the same screen in Final Cut Express 4.  I have had to use scrolling text and then import a graphic.  I want the text and graphic on the same page.  Thanks .

  • Count of rows of a table in header

    Hi Experts, I am stuck in a tricky scenario. I need to get the count of rows of a table in a webi report in the header of the report. And the count should change dynamically according to the filtering done on the table. For eg. If I have 10 countries

  • Strange problem with opening PDF's

    Hello, We have roughly 80 users at one location that use a terminal server session to access our medical software.  A certain group of four users that share a network printer have issues within the medical software when they try to open a scanned in

  • XML Publisher 5.6.3 and Bursting

    Hi All, According to Tim Dexter's blog "E Business Suite Bursting - 4/5/07; 6:33:55 PM", XMLP 5.6.3 will have a Java Concurrent Program that will invoke the Bursting API out of the box. Obviously negating the need for us to create our own. My client

  • Intel Core Duo case badge

    I've managed to find original Intel Core Duo case badges, just wondering if they would leave any markings on the iMac should I decide to remove it at a later date? Perhaps someone with PC building expertise who knows more about the material these bad