Commit Rollback for Parent & Child table
Hi,
I need to load data to a parent table and child table (Record by Record), i.e one record will be loaded to the parent table and the related child record will be loaded to child table.
After first record loaded to child table, the next record will be loaded to the parent table.
My requirement is, I should not commit the parent table before the child record is transferred (so that i can rollback if my record got failed). So I have set the parent table IKM commit option to NO. Because of this, my child record is not loaded to the correcsponding target table, its failed because the parent record is not commited.
Do we have any possiblities to overcome this issue.
Thanks in Advance,
Ram Mohan T
Cezar,
I couldn't make the CKM options to "No Commit". When i did that i am getting the following error at step "16 - Control - CUSTOMER_DET - insert PK errors" ,
12838 : 72000 : java.sql.SQLException: ORA-12838: cannot read/modify an object after modifying it in parallel.
This error occurs at the CKM. so i have made all the CKM options to "commit" and IKM, LKM to "No Commit". It seems to be fine.
Cezar,
I have some plan for the scenario that i mentioned in the previous update (One dept id and all related employees). Please verify this,
1) create a procedure which extracts dept_id from source tab and passes it to the scenario(in target tab) of a package.
2) This package has the variable of dept_id, interface1 which loads data to dept and following that another procedure(2).
3) This procedure2 will extract the emp_id that corresponds to the value of the variable dept_id. And passes this emp_id to tha scenario in target tab.
4) This scenario is of a package which has the emp_id variable and interface2 for loading employees.
While executing this plan, the problem is,
1) Interface1 which loads Dept_Id is not commited (due to the KMs with commit set to "No Commit"), so that the employee records are getting loaded to the error table.
2) I have made the interface1 KM commit option to "Default: Yes " (But still the Knowledge modules steps are No commit), but still the child records are getting loaded to error table.
3) As per the above scenario, all these transforamtions are not taking in the same transaction. Thats the problem i believe.
Do we have any possiblities to overcome this Cezar?
Thanks in Advance,
Ram Mohan T
Edited by: T. Ram Mohan on Mar 5, 2009 11:43 AM
Similar Messages
-
Loading to Parent -Child Tables simultaneously
I have a requirement to populate parent-child tables in a single interface simultaneoulsy. I couldnt find anyway to add multiple targets and am wondering why this key feature is absent in ODI. The same thing is easily achievable in BPEL.
Could some one please advice a work around for this.
Your help is much appreaciatedODI 11g does come with a new IKM 'IKM Oracle Multi Table Insert'. This does allow multi table inserts, but will require more than one interface.
Oracle Multi-Table Inserts
A new Integration KM for Oracle allows populating several target tables from a single source, reading the data only once. It uses the INSERT ALL statement.
COMPONENT NAME: IKM Oracle Multi Table Insert
COMPONENT VERSION: 11.1.2.4
AUTHOR: Oracle
COMPATIBILITY: ODI 11.1.1.3 and above
DESCRIPTION:
- Integrates data from one source into one to many Oracle target tables in append mode, using a multi-table insert statement (MTI).
REQUIREMENTS:
- Oracle Database 9iR1 or above
- See BASIC CONFIGURATION section
BASIC CONFIGURATION
- This IKM must be used in integration interfaces that are sequenced in a Package:
- The first interface of the Package must have a temporary target and the KM option DEFINE_QUERY set to YES.
This first interface defines the structure of the SELECT clause of the multi-table insert statement (that is the source flow).
- Subsequent integration interfaces must source from this temporary datastore and have the KM option IS_TARGET_TABLE set to YES.
- The last interface of the Package must have the KM option EXECUTE set to YES in order to run the multi-table insert statement.
- Do not set "Use Temporary Interface as Derived Table(Sub-Select)" set to true on any of the interfaces.
- If large amounts of data are appended, consider to set the KM option OPTIMIZER_HINT to /*+ APPEND */.
OPTIONS (Refer to the Option descriptions for more information on each option)
- DEFINE_QUERY: Set to Yes if this interface describes the source query (SELECT clause of the statement). This interface must have a temporary target.
- IS_TARGET_TABLE: Set to Yes this interface using the source query to load one of the target tables. This interface must source from an interface with a temporary target using this IKM and having the KM option DEFINE_QUERY set to YES.
- EXECUTE: Set to Yes for the last interface in the Package. This interface will run the multi-table insert statement.
- COMMIT: Commit transaction. This applies only to the last interface in the Package.
- TRUNCATE: Set to Yes to truncate this interface target table.
- CREATE_TARG_TABLE: Create target table? May only be used on target interfaces, but not on source interfaces (defining the source data).
- OPTIMIZER_HINT: Hint for the multi-table insert statement.
RESTRICTIONS:
- This KM can only be used in integration interfaces that are part of a Package.
- All source and target datastores need to reside on same data server.
- Journalized source data is not supported.
- Temporary indexes are not supported.
- Flow/static control is not supported.
- The TRUNCATE option cannot work, if the target table is referenced by another table (foreign key). -
How can we archive Partioning in parent child tables in Normalised way.
Hi Friends.
Could you please suggest me
How can we archive Partioning in parent child tables in Normalised way.
Bill_parent(
Bill_no number,
Bill_date date .-- I want to create Partition on this column
customer_id
Bill_Child{
bill_no number,
Bill_c_no number,
Item_code number
Qty number
Bill_Acsry{
Bill_c_no number,
acsry_it_code number,
qty number
Now for there Child Table I have also create a Bill_date column that is against Normalization
i.e
Bill_parent(
Bill_no number,
Bill_date date.
customer_id
) Partion by Range (Bill_date).......................
Bill_Child{
bill_no number,
Bill_c_no number,
Item_code number
Qty number,
Bill_Date date,-- against normalisation
}Partion by Range (Bill_date).......................
Bill_Acsry{
Bill_c_no number,
acsry_it_code number,
qty number,
Bill_Date date,-- against normalisation
}Partion by Range (Bill_date)....
with regards
Siddharth Singh([email protected])Looks like the new Reference Partitioning feature in 11g is what you want. In previous versions I think you're stuck with the denormalisation.
-
No data for Parent-child hierarchy column in Pivot table view
Hi all,
I used OBIEE 11.1.1.6.2 Version.
I drag one Parent-child hierarchy column and one measure and show result with a pivot table view.
But when I click "+" icon to show detail level data,
It messaged that: "*the layout of this view combined with the data,selections,drills,or prompt values chosen resulted in no data*."
But it can show every-level data when I used table view.
It was so strange..
Did anybody meet this before?
Thanks in advance.
regards,
AnneHi,
Yes, I have the same problem with pivot table for hierarchy dimension.
If you use a normal table (not pivot) it seem to work. Unfortunatley with restrictions as normal table view have.
Same problem still exist in 11.1.1.6.5
I have logged a SR to Oracle about this. -
Insert Record with Parent/Child Tables doesn't work with Oracle - unlike AC
Hi,
I just Migrated a MS Access 2010 Database to an Oracle 11g Backend with the SQL Developer Tool.
The Migration went fine, all the Tables and Views are migrated.
I'm working with MS Access as Frontend.
The application has some Datasheets with Subdatasheets with Parent/Child Relationship. (1-n Relationship)
After changing to Oracle, it's not possible, to Insert a new Record in a Subdatasheet I always get the following Error Message:
"The Microsoft Access database engine cannot find a record in the table 'xxxx' with key matching field(s) 'zzzzz'"
It used to work perfect with the MS Access Backend, do I need a trigger which first adds the child Record ?
Or what should I do?
Thank youHi Klaus,
Thanks for your answer. I still haven't solved my problem. The only way would be to use a singel 1:n Relationship, but in fact I need a n:m Relationship.
I tried the same scenario with a new Access Application, same result.
To clearify my problem.
Goal: Parent Form with Parent Records, Linked Child Form with Child Records in a Datasheet View => Insert of a NEW Child Record.
I have 3 Tables (table1 = Parent tabel, table2 = Child Table, table12 = n:m Tabel with PK and two FK)
The Recordsource of the Parent Form is Tabel1
The Recordsource of the Child Form is Table2 joined with Table12.
In my Old Access Project, Access Triggered the Insert and filled Table12 with the NEW PK of Table2.
It seems like Access can't do that anymore....
I'm pretty desperate and I'm sure it is just a litte thing to fix..... -
SHOW THE PARENT CHILD TABLE RELATIONSHIP TABLE
hi experts,
I want show the parent child relation ship tables
for exmple iam passing the emp table then display related child tables like dept,grade after that again child table(dept,grade) related to child relationship tables like recursive
Regards,
VENKATProbably something like below. This may not be exactly what you are looking for, but one way to get what you are asking for.
Only if you can give specifics, of your Input being passed and the Output, it might be possible to provide more help. But you also need to help us with your best effort on this.
select *
from (
select prior table_name Child, table_name Parent
from user_constraints
start with constraint_name = some_constraint_name_of_Parent_Table
connect by constraint_name = prior r_constraint_name
) a
where a.child is not null; -
Parent - child tables foreign key relation ship
Hi All,
we have 600 hundred tables ..i would like to print a hierarchial tree based on the foreigh key relathionship
i tried my best but i couldnt.
parent table
child table 1
childtable3
child table 2
and so
Can somebody help me out with a query?
Thanks,
ktCREATE OR REPLACE FUNCTION get_child_tables (
ptable VARCHAR2,
powner VARCHAR2 DEFAULT 'SCOTT',
plevel NUMBER DEFAULT 10
RETURN stringarray
-- -- create this ON SQL*PLUS "CREATE OR REPLACE TYPE STRINGARRAY AS TABLE OF VARCHAR2(50);"
-- AUTHID CURRENT_USER
PIPELINED
AUTHOR DATE VERSION COMMENTS
======================================================================================
[email protected] 26-OCT-2009 1.0 Developed to ease developers effort to find Nth level of Referential integrity
======================================================================================
-- PURPOSE -> To find PARENT=> CHILD relational TABLE(S) in Oracle upto a depth max N Level.
--SYNTAX TO USE
SELECT * FROM TABLE( get_child_tables('DEPT','SCOTT',3)); Store this query in a file for your use
SELECT * FROM TABLE( get_child_tables('EMPLOYEE')); Store this query in a file for your use
-- RESULTS looks as below
--1 => DEPT
--2 => EMP
--2 => EMP2
--3 => EMP_CHILD
--3 => EMP2_CHILD
-- and so on
--This can be leveraged to use in any oracle database REGION 10g having and above.
--This FUNCTION gives formatted result of the Oracle 10g Hierarchical query result coded in the cursor
--to find MASTER => CHILD relational TABLE(S) upto a depth max 10 Level.
--The result of the PIPELINED function can be retrieved using Oracle new operator
--TABLE(array name) in SQL query.
--Due to the AUTHID CURRENT_USER compiler directive any user can use based on his/her access privileges on the database.
--GRANT EXECUTE ON SCOTT.get_child_tables TO PUBLIC;
--CREATE OR REPLACE PUBLIC SYNONYM get_child_tables FOR SCOTT.get_child_tables;
IS
atname stringarray := stringarray ();
-- create this ON SQL*PLUS CREATE OR REPLACE TYPE STRINGARRAY AS TABLE OF VARCHAR2(50);
vlevel NUMBER;
vtname VARCHAR2 (50);
nindex NUMBER := 0;
bprocessed BOOLEAN := FALSE;
CURSOR c1 (powner_in IN VARCHAR2, ptable_in VARCHAR2, plevel_in NUMBER)
IS
SELECT LEVEL, LPAD (' ', (LEVEL - 1) * 2, ' ') || pt AS "TNAME"
FROM (SELECT a.owner w1, a.table_name pt, a.constraint_name c1,
a.r_constraint_name r1, b.owner w2, b.table_name ct,
b.constraint_name c2, b.r_constraint_name r2
FROM all_constraints a, all_constraints b
WHERE a.constraint_name = b.r_constraint_name(+)
AND a.owner = b.owner(+)
AND a.owner =
UPPER (powner)
-- Change Owner here while testing
--AND A.r_constraint_name IS NULL
AND a.constraint_type IN ('P', 'R')) v1
START WITH pt =
UPPER
(ptable)
-- Change your master table here while testing the QUERY
CONNECT BY PRIOR ct = pt AND LEVEL <= plevel;
-- Change lavel here while testing
BEGIN
atname.EXTEND;
atname (1) := 'NOTHING';
OPEN c1 (powner, ptable, plevel);
LOOP
bprocessed := FALSE;
FETCH c1
INTO vlevel, vtname;
IF nindex > 1 AND atname (atname.LAST - 1) = vtname
THEN
--DBMS_OUTPUT.PUT_LINE('2 ==== vtname ' ||vtname || ' '|| atname.count|| ' '||atname.last || ' '||atname( atname.last-1));
bprocessed := TRUE;
END IF;
IF NOT bprocessed
THEN
nindex := nindex + 1;
atname.EXTEND;
atname (nindex) := vtname;
PIPE ROW (vlevel || ' => ' || vtname);
DBMS_OUTPUT.put_line ( ' **** nindex - atname( nindex) '
|| nindex
|| ' - '
|| atname (nindex)
DLOG('ADDING ',vTname); A LOGGING ATONOMUS PROCEDURE FOR DEBUG PURPOSE
END IF;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
FOR i IN 1 .. atname.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE('atname (i) ' ||atname (i));
END LOOP;
RETURN;
EXCEPTION
WHEN no_data_needed
THEN -- THIS EXCEPTION HAS TO BE THERE TO GET THE FUCTION WORKABLE
DBMS_OUTPUT.put_line (SQLERRM);
RETURN;
END get_child_tables;
/ -
Parent - child table issue wrt to count - SQL question
I have a scenario:
There are 2 tables (parent and child). lets say, case summary table and task level dimension table.
for every case id in case summary table, there would be multiple tasks in task level dim table with a flag indicator set to 1 for all tasks.
but while counting the number of cases active with flag indicator 1 (ofcourse when joining case summary table with task dimension table), for a case id only 1 instance of task needs to be accounted (even though it has more than one task , for counting active cases, the flag ind corresponding to a task in a case if set to 1 , then the case is considered active)..but while joining and taking count of case ids with flag indicator as 1, you get the count of every task row of a case which is incorrect logically. how to discard the rest of child records of a case in child table (task dimension table)?
I am not sure how to achieve this in sql query
Kindly help!
Case summary table
case id, busininess_unit, agent_name
1001, admin, Ram
1002, Finance, Sam
task table
case id, task_id,task_name, flag_indicator
1001, 1, 'New', 1
1001,2, 'Open',1
1001,3,'In progress',1
1002, 4, 'New', 1
(In fact task_id is not a big deal... even you can assume task id doesn't exist..only task name ... )
now my question... if my query should get the current active cases (ind=1); as per above it should essentially give 2... but my query gives me 4..you know the reason why.. but how do i get the correct count?
Thanks!may be you need just this:
select count(distinct case_id) from task
where indicator = 1;
If this is not what you are looking for, please elaborate and tell us the expected output and rest of the details as mentioned in FAQ Re: 2. How do I ask a question on the forums?: -
Parent Child tables to be displayed as nested table
I want to design a report on External DB tables that have a parent - child relationship.
The way I want the report is to show the child entries nested within each parent row and I want to have a
"collapse/hide" button on each row when clicked to toggle between collapsing/hiding all the child entries on a parent row.First U have to crate Extended View Object to your actual View obj.
Now take Page with Panel Splitter ,on First facet drag View obj as table and on second Facet Drag Extended View Obj as table.On page loading U have delete all rows from Extended View object.And then u have write bean code on button click to get current select rows from above view objct,and for Filter rows from Second View obj according to selection of rows from first view obj... -
SQL for Parent-Child Hierarchy
Please suggest which would be best way to achieve the below logic.
SQL to pick up parent child relationship within same table with a certain logic.
Example:
mod_product_number Product_Hierarchy
H555888 PH05678
H888987 H555888
H8889 H555888
H9955 H555888
H999999 H555888
P6666 H999999
P5555 H999999
Example: I expect the rows with H8889,H9955 & P6666 & P5555 to be sub-category values value for product hierarchy H555888.
If there are rows with H8888987 as Product_hierarchy, we will pull up those rows too for product hierarchy H555888.
The extra condition is we drill down only on 7 character mod_prod_number not on 5 character mod_prod_number. We pull out all sub category mod_prod_number for all distinct Product hierarchy.You can use Hierarchical Queries
See.. http://docs.oracle.com/cd/E11882_01/server.112/e10592/queries003.htm
select lpad(' ',2*(level-1)) || to_char(trim(t.mod_product_number)) prod,
SYS_CONNECT_BY_PATH(t.product_hierarchy, '/') "Path",
LEVEL
from temp_table t
start with trim(t.product_hierarchy) = 'PH05678'
connect by prior trim(t.mod_product_number) = trim(t.product_hierarchy);
. PROD Path LEVEL
1 H555888 /PH05678 1
2 H8889 /PH05678 /H555888 2
3 H888987 /PH05678 /H555888 2
4 H9955 /PH05678 /H555888 2
5 H999999 /PH05678 /H555888 2
6 P5555 /PH05678 /H555888 /H999999 3
7 P6666 /PH05678 /H555888 /H999999 3 -
Parent child tables - how to maintain RI
Here is my scenario:
In our model, we have parent child relationship between tables.
We are not sure how the parent tables are populated. If incremental update, it should be fine (assuming if needed rows will be inserted in the child table manually). If the tables are truncated and data is inserted again – that might be a problem since there exist relationship with child tables. What are the various options for handling such cases?
Option1: cascade delete
Option 2: ...?I'm not sure I understand the goal here...
- Are you trying to design a data model? If so, wouldn't the business and data requirements tell you whether you need to truncate and reload the parent table or whether you can do an incremental load? It wouldn't seem to make sense to design a data model with no understanding of how the model is going to be used.
- Are you trying to design a load process that works with an existing data model? If so, are you trying to design an incremental load? Or a load that involves a truncate and reload? Does the existing data model have foreign key constraints?
Specifying the Oracle version and a bit of information about the application (i.e. is this an OLTP application, a data warehouse, something else) would probably also be helpful.
Justin -
SubSelect Not filter data for Parent/Child hierarchy
I have data for my parent /child dimension like that
DimCust
Fact Sal
Customer ID
Parent ID
Customer Type
Product Id
Customer ID
Year
Sales
1
1
Retailer
4
1
2015
100
2
1
Retailer
4
2
2014
200
3
3
Retailer
4
3
2014
300
4
3
Retailer
4
4
2015
400
5
5
Retailer
4
5
2015
500
In my query,
I use sub select to filter
data for year 2014c and product id 4, when I got result
it’s missed the aggregation of customer id 1 and 4.
Even I try to pass in where clause it’s also not give correct result.
code,
with
set ba EXISTS([DIMCustomer].[Level 02].allmembers, [DIMCustomer].[Hierarchy].&[MyHierarchy],"factTable")
SELECT
[Measures].[Sales]
} ON 0,
[ba]on 1
FROM (SELECT ( { [CropYear].[CropYear].&[2014] } ) ON COLUMNS
FROM (SELECT ( { [DimProduct].[ProductID].[4] } ) ON COLUMNS
FROM [myCube]))
please help me on this, what is the best practices.
Regards,
ManishHi manishcal16PPS,
According to your description, you want to slice the fact data on Year 2014 and Product 4. Now you find the result missing the customer 1 and 4. Right?
In this scenario, based on your Fact Sal table, both customer 1 and 4 are on Year 2015. So when you filter the data, it will not show customer 1 and 4. It returns correct result. For filtering data, either using sub select or specifying slicer axis
can achieve your requirement.
Reference:
Specifying the Contents of a Slicer Axis (MDX)
Best Regards,
Simon Hou
TechNet Community Support -
Updating records for parent & child with integrity constraints
Hello, I haven't used oracle in a few years and now running a lab and need to make a few changes for testing. no production data at all.
What is the easiest way to change the parent and child tables? When I try to change the parent, oracle barks that the child is neglected, when i try to change the child first, then the parent is mad.
If I need to set up a trigger, what is the simplest form?
thanks much!Depends on what you want your data to look like. Since it's test, I would do what janeesh said. Disable the constraint on the tables, write a script to UPDATE all the necessary values in the parent and child table, and then re-enable the constraint.
I like the idea of setting the constraint to ENABLE VALIDATE afterwards to check the data in the tables. This verifies that all the updates you did comply with the constraint. Essentially this just checks to see if you hosed anything in either table. -
Sum within a self-contained parent-child table
I have two tables - a "key" table containing a multi-layer parent-child relationship, and an "amount" table containing the keys for the leaf nodes in the key table as well as numeric values (e.g. amounts).
I want a query that returns each row in the key table as well as the sum of the amount table's amounts for all of that key's leaf nodes (so the root node would have the sum of all of the amount values).
Here's what I mean - I have two tables, KEY and AMOUNT
KEY has two columns, key and parent_key; key and parent_key have a CONNECT BY relationship on parent_key = prior key (with parent_key null for the root):
KEY PARENT_KEY
0 null
1 0
2 0
3 0
1A 1
2A 2
2B 2
3A 3
3B 3
3C 3
1A1 1A
1A2 1A
2A1 2A
2A2 2A
2B1 2B
3A1 3A
3A2 3A
3C1 3C
3C2 3CAMOUNT has two columns, key and amount; key points to KEY.key, and amount is a value for that particular key
(note that all key values are leaf nodes in the KEY table)
KEY AMOUNT
1A1 1
1A2 2
2A1 3
2A2 4
2B1 5
3A1 6
3A2 7
3C1 8
3C2 9 What I want is a result that looks like this, where each key's amount is the sum of its eventual leaf keys' amounts
KEY AMOUNT
0 45
1 3
2 12
3 30
1A 3
2A 7
2B 5
3A 13
3B 0
3C 17
1A1 1
1A2 2
2A1 3
2A2 4
2B1 5
3A1 6
3A2 7
3C1 8
3C2 9For example, key 2A's value, 7, is the sum of the values of 2A1 and 2A2; key 3's value is the sum of 3A1, 3A2, 3C1, and 3C2.
Is there a way of doing this with a single query?
The idea I came up with is, do a select on KEY with a "CONNECT_BY_PATH key" column so each row includes a string containing the keys of all of its ancestors, and then do a join on AMOUNT with amount.key IN the CONNECT_BY_PATH column; however, with a larger amount of data, this takes quite a bit of time. Is there a faster / more obvious way of doing this?SQL> with key_tbl as (
2 select '0' key,null parent_key from dual union all
3 select '1','0' from dual union all
4 select '2','0' from dual union all
5 select '3','0' from dual union all
6 select '1A','1' from dual union all
7 select '2A','2' from dual union all
8 select '2B','2' from dual union all
9 select '3A','3' from dual union all
10 select '3B','3' from dual union all
11 select '3C','3' from dual union all
12 select '1A1','1A' from dual union all
13 select '1A2','1A' from dual union all
14 select '2A1','2A' from dual union all
15 select '2A2','2A' from dual union all
16 select '2B1','2B' from dual union all
17 select '3A1','3A' from dual union all
18 select '3A2','3A' from dual union all
19 select '3C1','3C' from dual union all
20 select '3C2','3C' from dual
21 ),
22 amount_tbl as (
23 select '1A1' key,1 amount from dual union all
24 select '1A2',2 from dual union all
25 select '2A1',3 from dual union all
26 select '2A2',4 from dual union all
27 select '2B1',5 from dual union all
28 select '3A1',6 from dual union all
29 select '3A2',7 from dual union all
30 select '3C1',8 from dual union all
31 select '3C2',9 from dual
32 )
33 select key,
34 nvl(sum(amount),0) amount
35 from (
36 select connect_by_root k.key key,
37 amount
38 from key_tbl k,
39 amount_tbl a
40 where a.key(+) = k.key
41 connect by k.parent_key = prior k.key
42 )
43 group by key
44 order by key
45 /
KEY AMOUNT
0 45
1 3
1A 3
1A1 1
1A2 2
2 12
2A 7
2A1 3
2A2 4
2B 5
2B1 5
KEY AMOUNT
3 30
3A 13
3A1 6
3A2 7
3B 0
3C 17
3C1 8
3C2 9
19 rows selected.
SQL> SY. -
How to create ddl for partitioning for a child table?
Hi folks,
I am new to the partitioning topic. I red some manuals and tutorials but I did not found exactly what I need. So I would ask for your help.
I have two tables.
The partitioning of the master table is clear:
create TABLE ASP_PARTITION_TABLE_MASTER
MASTER_ID VARCHAR2(20) NOT NULL
, TIMESTAMP DATE
, DATA VARCHAR2(20)
, CONSTRAINT ASP_PARTITION_TABLE_MASTE_PK PRIMARY KEY
MASTER_ID
USING INDEX
ENABLE
PARTITION BY RANGE (TIMESTAMP)
PARTITION PARTITION1 VALUES LESS THAN (TO_DATE('20090101','YYYYMMDD')) NOCOMPRESS
, PARTITION PARTITION2 VALUES LESS THAN (TO_DATE('20100101','YYYYMMDD')) NOCOMPRESS
, PARTITION PARTITION3 VALUES LESS THAN (TO_DATE('20110101','YYYYMMDD')) NOCOMPRESS
This table should be partitioned by a timestamp.
Now comes the difficulty:
I have a child table which has the master_id as foreign key. The slave table should also be partitioned by the timestamp - but this one occurs only in the master table.
CREATE TABLE ASP_PARTITION_TABLE_SLAVE
SLAVE_ID VARCHAR2(20) NOT NULL
, FK_MASTER_ID NUMBER(10)
, DATA1 VARCHAR2(20)
, DATA2 VARCHAR2(20)
, COLUMN1 VARCHAR2(20)
, CONSTRAINT ASP_PK_SLAVE PRIMARY KEY
SLAVE_ID
ENABLE
ALTER TABLE ASP_PARTITION_TABLE_SLAVE
ADD CONSTRAINT ASP_FK_MASTER_IS FOREIGN KEY
SLAVE_ID
REFERENCES ASP_PARTITION_TABLE_MASTER
MASTER_ID
ON DELETE CASCADE ENABLE;
How can I create such a range partition for the slave table?
PS: Currently we are using oracle 10.2 but we will upgrade to oracle 11g in near future.
Thanks in advance,
Andreas@sb92075:
seems if I should give more details:
the parent table is holding the master_id, the timestamp and plenty of general information which is valid for all children.
Each parent has between 5 and 50 children which contain different data items. So our child table is much bigger than the parent table.
Our selects are joining parent and child table filtered by the timestamp and some other indexed rows, so we are not saving the same timestamp redundantly.
@bluefrog
With the partitioning we would like to reach the following goals:
1. gain more performance (quicker response time)
2. get the ability to archive and drop partitions which are older than a specific timestamp. (We only need to keep the data of the last 1.5 years so we would like to drop the complete partition / tablespace instead of using a delete-statement which generates much load (transaction, archive, logging)).
Thank you for your links. I will have a look on it.
But due to the archiving issue we would also like split up the child table by the timestamp of the parent table.
Regards, Andreas
Maybe you are looking for
-
How to retrieve multiple data from table and represent it in jsp page
Hi The below JavaScript code is used to add row in the table when I want to add multiple row data into table for single entry no field. <html> function addRow() i++; var newRow = document.all("tblGrid").insertRow();
-
Cost element error while processing GR of Subcontracting sch.agreement
Hello All, While processing GR for a Subcontracting Sch. Agreement, the system gives the following error: Cost element 50050002 is not assigned to a cost component in CostCompStruct M1 Message no. MLCCS010 Diagnosis You have activated the actual cos
-
Webutil_file_transfer and webutil_db_local
Hello I'm trying to use WEBUTIL_FILE_TRANSFER.CLIENT_TO_DB to upload a file into a blob column in the database. While debugging, in the function WEBUTIL_FILE_TRANSFER.UploadInt the following line of code exists: if not WebUtil_DB_Local.openblob(spec1
-
Processing JMS messages in sequence one after another
This is my use case which I wan to implement in OSB. 1. I have a queue which will receive messages in huge numbers from a single sender. 2. I have a proxy which will read each message and process the message and send it out. In step 1 , I want each m
-
In my iPhone 4 the mute is getting on automatically dont know how to release the mute
In my iPhone 4 the mute is getting on automatically dont know how to release the mute