List-Hash Composite Parition

Hi,
I am on Oracle 11gR2.
I am trying to create a table with list hash composite partitioning. List partition will be on a numeric column and hash partition will be on a varchar2 column and will contain alphanumeric data.
It looks like while creating hash subpartition I have provide values clause. The varchar2 column will have a unique value for each record so I am not sure what should I provide in values clause?
Is there a way to create hash subpartition without using values clause and just specifying number of subpartitions?
Appreciate your help.
Thanks

>
Considering performance issues, I am looking at using Oracle Parallelism. My understanding is that good partitioning strategy will lead to better use of parallelism.
>
First, and foremost, try to understand this: you DO NOT have a performance issue. Period!
You appear to be trying to create an architecture and implementation based on an assumption that you will have a performance issue. That is the wrong approach to use. You need to design the system first and then implement it. You have already made up your mind that you are going to
1. use external tables
2. use two work tables
3. add an additional column which will be unique for each record to both load tables and populate that load table at the time of import
4. partition the two work tables - not just using list partitioning but you already know that you want hash subpartitioning
5. load a third table by joining the two work tables to other tables
6. and you seem to know that there will definitely be a FTS
You must really be psychic to know that all of those things are needed or will happen before you even have a working prototype.
You have the entire thing backwards. You already know what solution you want to impose (adding columns, using composite partitioning, using external tables) and you don't even have the problem and process documented completely.
If it ain't broke, don't fix it. Until you have a demonstrated performance problem don't try to solve it; it doesn't exist yet and may never exist.
The first step is to design a process that gets the job done. This design stage does not involve implementation-related considerations. Design is all about WHAT needs to be done not HOW to do it.
1. Identify the data sources (source tables and columns)
2. Identify the transformations that need to be performed (data cleansing, surrogate key generation, etc)
3. Identify the data targets (target tables and columns
4. Identify the error handling that needs to be implemented: how to recover if things go wrong, what to do with bad or missing data
5. Determine how to validate that the ETL process produced the correct results.
Only after you have determined and documented the requirements should you proceed to the next step.
That next step might be a proof-of-concept. If so you want to do the minimum amount of work that proves that the 'process' is correct and that you haven't overlooked anything. This means creating simple basic tables that you can load with data. Then you can run some manual audit queries to see what kind of data you are dealing with: do any columns have null values that shouldn't, do all varchar2 columns that are supposed to contain date strings or numbers really contain date strings or numbers?
You need to get a prototype working and know how many records you are dealing with and how they need to be joined to all of those other tables with the millions of records. Then you will have a better idea as to whether there COULD BE a performance or other issue that needs to be dealt with.
>
After import, I will have to load data from these 2 tables (all columns for both tables) into a third table. Lets call this table as t_test_stg.
t_test_stg will have columns from t_file1_lod and t_file2_lod.
Now the issue is that there is no key column in t_file1_lod and t_file2_lod that can be used to join the two tables. Only other way to match columns in 2 load tables is by joining other tables and all these tables
have atleast 80-100 million records. So there will definitely be a FTS,
>
Your architecture doesn't make sense for what you say you are trying to do.
If you need to join the two load tables using other tables you don't want to use list and hash partitioning. That will just randomly distribute the data from each file that you need to join to those other tables.
Assuming that partitioning is even needed (which I doubt) the data needs to be partitioned in a way to make those joins to those other tables efficient. Until you know what those joins are and what the cardinality of the (as yet unknown) predicates are you can't possibly choose the proper partitioning scheme.
Simple is better. Finish the design. Conduct a verbal walkthrough of that design with your co-workers (and the business users) to identify any gaps. Implement a SIMPLE prototype that proves that the PROCESS is correct (the process - not the specific implementation of that process.
Then, and only then, should you start the design and implementation of the actual data model that you expect to use.
Sit down. Take a deep breath. And start over from the beginning.

Similar Messages

  • Sorting in List Hash Map

    Hi All ,
    I i have the data in below format:
    Name     Age     Skill     Company
    Vass     21     Java     Zylog
    Samy     24     PB     HP
    Lee     18     ADF     CTS
    Reng     16     Java     Info
    I converted this data into java collections List<Hash Map> like this.
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    public class HashMapDemo {
        public static void main(String[] args) {
            // Create a hash map
            List<HashMap> list = new ArrayList<HashMap>();
            HashMap hm = new HashMap();
            hm.put("Name", new String("Vass"));
            hm.put("Age", new Integer(21));
            hm.put("Company", new String("Zylog"));
            hm.put("skill", new String("Java"));
            list.add(hm);
            HashMap hm1 = new HashMap();
            hm1.put("Name", new String("Samy"));
            hm1.put("Age", new Integer(24));
            hm1.put("Company", new String("HP"));
            hm1.put("skill", new String("PB"));
            list.add(hm1);
            HashMap hm2 = new HashMap();
            hm2.put("Name", new String("Lee"));
            hm2.put("Age", new Integer(18));
            hm2.put("Company", new String("CTS"));
            hm2.put("skill", new String("ADF"));
            list.add(hm2);
            HashMap hm3 = new HashMap();
            hm3.put("Name", new String("Reng"));
            hm3.put("Age", new Integer(16));
            hm3.put("Company", new String("Info"));
            hm3.put("skill", new String("Java"));
            list.add(hm3);
            Iterator i = list.iterator();
            while (i.hasNext()) {
                System.out.println(i.next());
    } As per data (table format) i want to sort the data in Column level
    how can i to achieve ?.
    List<HashMap> is type of collection is help to me?
    Any idea?
    Thanks,
    Vass Lee

    Check out Comparator, and use Google to find examples on how to use it.
    http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html
    Still sorting a collection of hashmaps is a bit odd design though. I think you want to create a simple class with properties in stead of a HashMap, then implement Comparable on that class.

  • Need help on List-Hash partition - oracle 11 feature !

    Can a list-hash partitioned tabled be exchanged for a partition?
    Say, the table is partitioned by list on CODE (varchar2) column and subpartitioned by a NUMBER column
    i.e. create table TAB1 (ID, Code, Number)
    partition by LIST (Code)
    subpartition by HASH (Number)
    subpartition template
    ( subpartition1 , subpartition2 , subpartition3)
    partition part1 values ('A'),
    partition part1 values ('B'),
    partition part1 values ('C')
    Lets say the subpartitions1,2 and 3 have values 1,2,3,4,5,6....10, how can I move only say value 1 and 2 into another table using exchange partition method? Is this possible?

    >
    Thanks for the reply. The db version details is as below. And I am more interested in knowing if and how can data be extracted from hash sub-partitions for a given sub-partition key value, using partition exchange. Can anyone demonstrate this or point to any article that demonstrates this? I am not even sure if something like is possible.
    >
    What part of my reply didn't you undertand?
    Except now you are saying 'extract' where before you wanted to exchange the hash subpartition. If you exchange then the subpartition will now have NO data since it will have been exchanged with an empty table.
    In a partition exchange ALL of the partition (or subpartition) is exchanged, not just part of it. So for a hash subpartition you either exchange ALL data or none of it. If you only want some of the data in the subpartition you have to query it out.
    No one can provide any samples until you provide a valid sample yourself. You said your partitions have character data
    partition part1 values ('A'),
    partition part1 values ('B'),
    partition part1 values ('C')
    );But then you ask about manipulating numeric data
    >
    Lets say the subpartitions1,2 and 3 have values 1,2,3,4,5,6....10, how
    >
    Which is it?
    Post the DDL for the table and show which subpartition you want to query or exchange.

  • List, hash table

    Is it possible to implement a List with a hash table?

    The Java "collections" all use different methods of holding the data. Each is suited to different circumstances.
    Vector and ArrayList keep the data in a plain vanilla array, but with the magic that they keep track of how much of the array is actually being used, and if you try to add another entry when the array is full, they make a new, bigger array, copy all the data from the old array to the new array, and then make the old array available for garbage collection. (The main difference between Vector and ArrayList is that Vector is synchronized, i.e. it will not become corrupted if multiple threads attempt to access it at the same time. ArrayList is not synchronized, which means that in the normal case where only one thread is accessing it, it is faster.)
    In a LinkedList each entry has handles to the next entry in the list and the previous entry.
    In a Hashtable the entries are stored in an array, but the index of the array entry is calculated using a formula based on the hash key. The hash formula is basically, divide the hashkey by the number of entries in the array and take the remainder. The hashkey itself depends on the object, but basically it is a formula that generates an integer out of something that can be considered teh "key value" of the object. It is possible -- indeed it happens all the time -- that two different objects will have the same hash key or that two objects with different hash keys will hash to the same index, so hashtable does some extra work to deal with such "collisions".
    Each has its advantages. You can find an entry very quickly in a Hashtable: you find the hashkey, perform the hash function, go to that entry in the array, and kablam, you're there. The time to find an entry in the hashtable is independent of the number of entries in the table. Compare this to a Vector or LinkedList, where the only one to find a desired entry is to start at the beginning and search one by one until you find the one you want. The main drawback to a Hashtable is that the order you get out of the hash function is essentially random. You can read a Hashtable sequentially but the order has no particular significance.
    A LinkedList is a good choice when order is important and there are a lot of inserts and/or deletes in the middle of the list. All that is necessary to add an entry is to change the handles on the entries that come before and after. While in your mind you might picture all the entries after being moved down to make room, physically none of them have to move, all that changes is handles. The main drawbacks to a LinkedList are: (a) there's some overhead involved in storing the handles and keeping them updated; and (b) it's not easy to jump to an arbitrary entry number, like if you want #12, you would have to loop through the first 11.
    Vector and ArrayList are fast and simple when you are only or mostly adding or removing from the end of the list, and when you don't often need to search by key.

  • Linked Lists, Hashing, and sore heads.

    I am working with a team on a java program as part of an algorithms assignment. We have completed the program however I'm convinced its not working. The program is supposed to carry out a defined number of searches, additionions and deletions to a linked list and time it. We have been supplied with a number of ext files with random numbers for testing purposes.
    The text files are different sizes. We are finding that our results are the same regardless which file we use and which arguments are passed into the program. I would be greatful if someone could cast their eye over the work and let us know what you think.
    All files are at
    http://students.odl.qmul.ac.uk/~dm07/algorithms/.
    IntSet.java is the program we have completed from a skeleton code.
    Evaluator.java is the wrapper provided. data.zip is a full file of the
    different test text files although there are two on here for quick download.
    Any direction or feedback would be really appreciated.
    Dermot.

    Here is the result for the 50 random numbers text file :
    D:\Coursework\Algorithms>java Evaluator size-50-random.txt 10000
    Setting up, please wait ...
    Finished setting up.
    Start searches
    It took 0.010 seconds for 10000 searches
    It took 0.020 seconds for 10000 additions
    It took 0.010 seconds for 10000 deletions
    And here is the result for hte 50000 random numbers text file :
    D:\Coursework\Algorithms>java Evaluator size-50000-random.txt 10000
    Setting up, please wait ...
    Finished setting up.
    Start searches
    It took 0.010 seconds for 10000 searches
    It took 0.020 seconds for 10000 additions
    It took 0.000 seconds for 10000 deletions
    As you can see they are virtually identical. Even after running a number of times and working out averages they are the same. I thought that the results should be exponential but they are not. I understand that results should change from pc setup to pc setup, depending on processor etc but we are not getting this.
    Dermot.

  • Convert range partition to range-hash composite partition

    Hi,
    I have several tables that are range partitioned on date and each table has several partitions as they are partitioned for each day. Is there anyway I con convet these table using alter statements to make them a composite? Thanks.

    No, You can't with alter command change partitioning type.
    http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10739/partiti.htm
    Create a new table with needed one partitioning type and insert there all data.

  • Presets list of composition type

    Please any one know that I could ask the system the presets type of composition. I need the array of composition presets.
    Thank you and sorry my bad english

    If you are referring to the dropdown menu for "Preset", then no, there doesn't seem to be direct access to it.
    app.executeCommand(2000); in AE CC will give you the window, but there isn't a way to navigate it.
    What I would do is create multi-dimentional array matching those preset values manually then you could access those array items to add a new comps as needed.
    This code gives you an idea:
    var userChoice = "NTSC DV";//You can tie this variable to a ScriptUI dropdownlist of the same preset names;
    var compName = "NewComp";//You can tie this variable to a ScriptUI edittext to get a custom name from user
    var compDuration = 10;//You can tie this to a ScriptUI edittext to get a custom value from user
    //Multi-dimensional Array of presets
    var compPresets = new Array({'name': compName, 'preset': "HDTV 1080 24", 'width': 1920, 'height': 1080, 'par': 1.0, 'duration': compDuration, 'fps': 24}, {'name': compName, 'preset': "NTSC DV", 'width': 720, 'height': 480, 'par': 0.9, 'duration': compDuration, 'fps': 29.97}, {'name': compName, 'preset': "Film (4k)", 'width': 4096, 'height': 3112, 'par': 1.0, 'duration': compDuration, 'fps': 24});
    var compPresetsLength = compPresets.length;
    //Creates comp
    for(var i=0; i<compPresetsLength; i++){
         if(compPresets[i].preset === userChoice){
              app.project.items.addComp(compPresets[i].name, compPresets[i].width, compPresets[i].height, compPresets[i].par, compPresets[i].duration, compPresets[i].fps);
              break;

  • Partitioning Strategy - Pls provide the best sol

    Hi,
    We are using Oracle 10.1.0.5. We have a table containing slightly more than 4 million records. The table is currently partitioned on a column called PRODUCT_ID (possible values : LLU, WLR3, WLR2 with more or less equial distribution) and whenever a feed coms our ETL process works for individual products, i.e. a merge statement works for say LLU one then WLR3 once etc. For each product the process executed four times in a day. So, the design is working fine from a ETL process prespective. Now we have another column called DUNS_NUM which is a alphanumeric column (business wise equivalent as customer id). Now users makes most of the query using the DUNS_NUM column. We have a GLOBAL index on DUNS_NUM column, but still the proformance is not that satisfied as it is working on a full table instead of any partition.
    I have one solution in my mind of duplication the table's data into another table where HASH paritition will be there on the DUNS_NUM column and this table will be used for reporting. After every operation in the main table data will be merged in this table. But there is two negative points as well for this :
    1. Data duplication
    2. Extra process overhead
    There no HASH-LIST or LIST-HASH composite partition possible on the version of Oracle we are using. So want can be the best way out in this situation.
    Regards,
    Koushik

    I'm just wondering here a little bit. You say this DUNS_NUM is something like a customer_id and you have an index on this column. If this is really like a customer_id, then you should get a very good response time as this sould result in a index access and table acces. It should not matter if this is the whole table or just a partition.
    Could you provide a execution plan (probably including the table and index statistics)?
    A hash partition (in addition to the existing list partition) will not help you for this select problem. Hash means randomly distributed data over the hash partitions. The records are still in the whole table, it is not buying you anything here.
    What you could try to do is grouping these DUNS_NUM, may be according to a mapping function or grouping the customers according to business requirements.
    Anyway I think you should have a good performance with the existing data structure.

  • How to Get list of inactive composites

    Hi ,
    Could some please let me know that is there any query were we can fetch the list of composites name and versions which are not in active state. I know this info can we get it from EM, but i what to know it with out getting into the EM console.
    Regards,
    Tarak.

    Use the below URL to get those details through back end from MDS.
    http://beatechnologies.wordpress.com/2011/08/04/querying-composite-instance-states-in-soa-infra-dehydration-store-for-oracle-soa-suite-11g-processes/
    SELECT (CASE WHEN STATE=1 THEN 'OPEN AND RUNNING' WHEN STATE=2 THEN 'OPEN AND SUSPENDED' WHEN STATE=3 THEN 'OPEN AND FAULTED' WHEN STATE=4 THEN 'CLOSED AND PENDING' WHEN STATE=5 THEN 'CLOSED AND COMPLETED' WHEN STATE=6 THEN 'CLOSED AND FAUTED' WHEN STATE=7 THEN 'CLOSED AND CANCELLED' WHEN STATE=8 THEN 'CLOSED AND ABORTED' WHEN STATE=9 THEN 'CLOSED AND STALE' WHEN STATE=10 THEN 'NON-RECOVERABLE' ELSE STATE || ''END) AS STATE, COUNT(*) AS NUM_OF_CUBE_INST FROM CUBE_INSTANCE GROUP BY STATE;
    You can tweek to query only for particular composite.
    - It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts).
    Thanks,
    Vijay

  • Compositions settings the list of presets

    Hello.
    I am creatting a Script. I will like take the preset list inside composition settings (PAL, NTSC) and create a composition with one of the preset
    This is in the past
    var theComp=app.project.items.addComp("COMPLETA",720,576,1.09, ti ,25);
    In this moment
    I will like create a  DropDownList of preset that the user select fisrt one and after this I create a composition
    _compout:DropDownList {title: 'Presets',alignment :'left'},\
    _Create
    I not find the same that in render but in compositions
    listado_renders=padre.renderQueue.item(1).outputModule(1).templates;
    Sorry my bad english
    Israel D.
    www.virtualsets.es

    Turn off and on your phone, go back to your settings > celluar and go turn them back to the way they need to be

  • How to List Composite Instances

    Hi,
    I have been able to use ant-sca-mgmt.xml to retire/activate and list deployed composites.
    e.g. ant -f ant-sca-mgmt.xml retireComposite -Dhost=${WL_HOST} -Dport=8001 -Duser=weblogic -Dpassword=${WL_PASS} -DcompositeName=${COMPNAME} -Drevision=${COMPREV}
    I have now been asked to write a process to automatically check for running composites, abort the running composites and then send an email saying what it has aborted.
    I have inspected ant-sca-mgmt.xml and there are no functions to list instances, list running instances or abort instances. Can anyone tell me how this can be done? (Automatically from a script, not through Enterprise Manager)
    Thanks
    Robert
    Edited by: RobertMetcalf on Nov 17, 2011 2:31 PM

    Hi
    I don't think so ,we are having any ant scripts to abort the running instances of a composite but JAVA API's can be used to do the same.
    Refer the URL for your reference - http://albinoraclesoa.blogspot.com/2011/11/normal-0-false-false-false-en-us-x-none_17.html
    Regards
    Albin I

  • Variable list updates in cli with cdb.vs.mod when values have spaces

    Hi -
    I keep variable lists for composite components in SVN - stored in the same format they're downloaded from the variables settings screen (don't forget to restore the missing semi-colon on the next-to-last line). Then the build scripts run this:
            cat $VARLISTFILE | gawk '
            BEGIN {
                    PREVLINE=""
                    NOTFIRSTLINE=0
                    if ( NOTFIRSTLINE ) print PREVLINE";"
                    PREVLINE=$1
                    NOTFIRSTLINE=1
            END {
                    print PREVLINE
            ' FS=';' OFS='' ORS='' > ${VARLISTFILE}.n1to put them into a format where they can be checked back into N1 like this:
            cr_cli -cmd cdb.vs.mod -of /dev/null -vs "NM:/some/path/to/component:${VARLIST}" -vars `cat ${VARLISTFILE}.n1` exp:$HOME/.n1confThis has been working great, but suddenly we ran into a new variable that has a space in it - namely it's a crontab like value:
    mailLifecycleSendSchedule=0 0 * * * ?;
    I've tried all sorts of ' " and [] combinations but can't seem to get these to work via CLI. Note that importing them from a file through the UI works just fine. Any ideas?
    Thanks in advance,
    J

    Ah - hah, it was just a simple matter of extra quotes around the offending string:
    cr_cli -cmd cdb.vs.mod -of /dev/null -vs "NM:/some/path/to/component:${VARLIST}" -vars "`cat ${VARLISTFILE}.n1`" exp:$HOME/.n1conf

  • Query to find out whether a table is sub-partitoned , composite type one

    Could you please let me know the query to find out whether a paritioned table
    is
    1). composite paritioned one.
    2). sub-paritioned one.
    I find that there are 2 cols in all_tab_partitions view, which lets me know
    1). COMPOSITE VARCHAR2(3)
    To find composite paritioned one or not.
    2). SUBPARTITION_COUNT NUMBER
    To find whether a table is sub-paritioned one or not.
    Any light on the above topic is highly appreciated.

    So it seems you've found the answer yourself?
    with »user_tab_partitions« and »user_tab_subpartitons« you'll get all the neccessary information you are looking for.

  • SQL to retrieve faulted instances and fault reason code for SOA composites

    Hi,
    Could you please provide me some SQL which will retrieve composite faults with details on a particular period?
    Thanks in advance.

    SELECT ID, COMPOSITE_DN, STATE, CREATED_TIME FROM COMPOSITE_INSTANCE. You can add filters for created_time and state. Refer to this link for a list of composite states. https://blogs.oracle.com/dasoa/entry/list_of_all_states_from

  • Where is my Composite in MDS Table

    Helo Gurus,
    I am working on SOA Suite 11.1.1.3.
    I would like to know which tables in soninfra OR (any other schema for that matter) store Composite meta-data?
    In 10g, we there were separate process tables in orabpel schema which used to store metadata of a BPEL process including suitecase jar file.
    Is there anything similar in 11g?
    Thanks-
    Ashish

    Hi Anuj,
    Thanks once again for such a quick reply.
    I tried the sql you suggested. And, you're spot on - it's not as straightforward as it used to be in 10g for BPEL Processes.
    Oracle has made it so unfathomable!!
    BTW, I would like to do the following:
    I would like to delete a composite from MDS.
    Reason for doing so:
    Due to some data inconsistency, I am not able to deploy a compsoite in any of the partitions.
    I cannot undeploy the composite either as I cannot see it in the EM console. I tried ant and build.xml route to undeploy it, still no luck.
    However, when I check MDS connection in JDev, it lists the composite under deployed-composites folder. In JDev also, the delete option (in the context menu) is disabled.
    Hence, I am thinking of deleting it directly from MDS. (I understand this is not a safe route as it won't be supported by Oracle, but I am left with no concrete alternative!)
    I checked the SOA Infra management API you mentioned, but I did not find anything that allows me to delete a composite from MDS.
    Your help from here on will be highly appreciated!!
    With best regards-
    Ashish

Maybe you are looking for