Reattempt of insert after a ORA-0001 unique constraint violation
Hi,
I'm inserting into a table. The primary key on this table is made up of the user id and a one-up transaction number. Unfortunately, I cannot change the design of this table.
Because I have to query the table to get the next transaction number before I insert into the table, I sometimes get a ORA-0001 (unique constraint violation) error because some other session grabbed the next transaction number and committed before I did.
To deal with this I retry the insert, that is, read the table again for the next tran number and insert. I allow for this up to 3 times. If after the third attempt I fail again, I rollback.
I'm seeing 3 records in the table.
So here are my questions: Do I need to rollback when I get the ORA-0001 error? I thought I wouldn't have to. If I do, why? The insert failed, how could the commit statement commit 3 records?
Thanks!
No, the userid and transaction numbers are not the same (combined) for each of the 3 rows.
Here is the logic to retry again when I get a ORA-0001:
PROCEDURE insert_record(
table1_rec_in IN table1%ROWTYPE,
tran_number OUT table1.trans_number%TYPE,
attempt_number IN PLS_INTEGER)
IS
next_tran_number table1.trans_number%TYPE;
BEGIN
SELECT NVL(MAX(trans_number), 0) + 1
INTO next_tran_number
FROM table1
WHERE userid = table1_rec_in.table1_userid;
INSERT INTO table1
(userid,
trans_number,
amount,
transdate)
VALUES
(table1_rec_in.userid,
next_tran_number,
table1_rec_in.amount,
SYSDATE);
tran_number := next_tran_number;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
IF attempt_number < 3
THEN
DECLARE
next_attempt_number PLS_INTEGER;
BEGIN
next_attempt_number := attempt_number + 1;
insert_record(
table1_rec_in,
tran_number,
next_attempt_number);
END;
ELSE
RAISE unable_to_insert_rec;
END IF;
WHEN OTHERS THEN
RAISE unable_to_insert_rec;
END;
I'm using recursion to try the insert again. Is this the source of my problems? I don't see it and can't reproduce it.
Similar Messages
-
Regarding ORA-00001: unique constraint violation error
Hi ,
This is Venkat. I am new to OWB.
When I run the mapping I am getting the ORA-00001: unique constraint violation error.
My loading type is Update/Insert.
My target table Primarykey is combination of 3 keys.
Please give me the suggestions. It is very urgent.
Thanks,
Venkat1) If you can disable/drop the indexes on the table, you can load the data and then do a SQL query grouping by the PK/UI to show which rows have a count > 1 i.e. the duplicates.
2) If you can't alter the target table, perhaps create a dummy copy of the table without pk/indexes and load to that and then do above query.
3) Run the mapping via the debugger and set a breakpoint just before your target table and examine the data to see if you can spot the duplicates.
4) Put a deduplicator into the mapping (just before target table), this may allow you to load data but doesn't solve the real problem as to why you have duplicates.
Si -
ORA-00001 - unique constraint violation when upgrading 10g EUL
Hi,
I am trying to upgrade my Discoverer 4i to Discoverer 10g.
When I log into 10g, it prompts me to upgrade the EUL. After making the right back up of my 4i EUL, I continue with the upgrade.
During the upgrade, I am hit with this error:
Database error: ORA-00001 unique constraint (EUL_HRMS.EUL5_FOL_UK_1) violated.
I understand that this happens when user tries to insert an already existing value into a column defined as unique. However, I am not sure on how to resolve it.
Can anyone please advice.
Thanks in advance!
Regards,
Harpreet SidhuHi Rod,
I've run the queries and these are the results. Each query returned one row.
1. SELECT FROM EUL_HRMS.EUL5_DOC_FOLDERS*
FOL_ID 100057
FOL_NAME ROOT
FOL_DEVELOPER_KEY ROOT
FOL_DESCRIPTION
FOL_EU_ID 100000
FOL_PARENT_ID
FOL_USER_PROP2
FOL_USER_PROP1
FOL_ELEMENT_STATE 0
FOL_CREATED_BY EUL_HRMS
FOL_CREATED_DATE 19-Jun-09
FOL_UPDATED_BY EUL_HRMS
FOL_UPDATED_DATE 19-Jun-09
NOTM 0
2. SELECT EU_ID, EU_SECURITY_MODEL, EU_USE_PUB_PRIVS, EU_ROLE_FLAG
FROM EUL_HRMS.EUL5_EUL_USERS
WHERE EU_USERNAME = 'PUBLIC'
EU_ID 3000
EU_SECURITY_MODEL 0
EU_USE_PUB_PRIVS 1
EU_ROLE_FLAG 0
Thanks! -
ORA-00001 Unique constraint Violation Error
We are upgrading our NW BW 7.01 java server to 7.3 and during the Downtime phase of the Installer, while running the Offline Migration, we are getting an error "EP-KM-BC: Unique Constraint Violation error: ORA-000001". Unknown Object# (12xxxxxx) does not exist. We have one CI and two DI. Any help would be greatly appreciated.
Hi Anil,
You need to clear the data from the table
1. SHD_AP_PROPVALUE
2. SHD_KMC_AP_PROP
3. SHD_AP_MC
Repeat the phase and also follow the sapnote
1873288 - RUN_OFFLINE_MIGRATION phase fails during SAP NetWeaver migration
Also paste the logs of RUN_OFFLINE_MIGRATION phase.
With Regards
Ashutosh Chaturvedi -
ORA-00001 unique constraint violation updating row
Hi Folks,
Using oracle application express version 3.1.2.00.02 to update one column in a table ORA-00001: unique constaint (BI_ADS.FCV_UK) violated error is returned. This is strange as the column being updated has no constraint on it.
We have had a trace done on the database action and it is a normal UPDATE statement.
You can run this UPDATE statement directly against the database with no errors.
When using APEX the error is returned.
Some rows update OK and a few rows will not.
There are no sequences involved.
Thanks
BrianIt turns out the form is stripping the time off the date column (constraint column) and this is causing the unique contraint violation. Any one had any dealings with times not being updated with a date column from a form??
-
Hi everybody
I can't understand why my data pump import execution with parameter TABLE_EXISTS_ACTION=TRUNCATE returned ORA-00001 (unique constraint violation), while importing schema tables from a remote database where the source tables have the same unique constraints as the corresponding ones on the target database.
Now my question is "If the table would be truncated, why I get unique constraint violation when inserting records from a table where the same unique constraint is validated?
Here are the used parameter file content and the impdp logfile.
parfile
{code}
DIRECTORY=IMPEXP_LOG_COLL2
CONTENT=DATA_ONLY
NETWORK_LINK=PRODUCTION
PARALLEL=1
TABLE_EXISTS_ACTION=TRUNCATE
EXCLUDE=STATISTICS
{code}
logfile
{code}
Import: Release 10.2.0.1.0 - Production on Gioved� 22 Ottobre, 2009 15:33:44
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connesso a: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
FLASHBACK automatically enabled to preserve database integrity.
Starting "IMPEXP"."PROVA_REFRESH_DBCOLL": impexp/********@dbcoll SCHEMAS=test_pump LOGFILE=test_pump.log parfile=refresh_dbcoll.par JOB_NAME=prova_refresh_dbcoll
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 523 MB
ORA-31693: Table data object "TEST_PUMP"."X10000000_TRIGGER" failed to load/unload and is being skipped due to error:
ORA-00001: unique constraint (TEST_PUMP.SYS_C00726627) violated
ORA-31693: Table data object "TEST_PUMP"."X10000000_BASIC" failed to load/unload and is being skipped due to error:
ORA-00001: unique constraint (TEST_PUMP.SYS_C00726625) violated
Job "IMPEXP"."PROVA_REFRESH_DBCOLL" completed with 2 error(s) at 15:34:04
{code}
Thank you
Bye AlessandroI forgot to read the last two lines of the documentation about TABLE_EXISTS_ACTION where it says:
"TRUNCATE cannot be used on clustered tables or over network links."
So it seems that it ignored the clause for the use of NETWORK_LINK and unreasonably opted for an APPEND action instead of throwing an error to highlight the conflicting parameters in the used configuration.
Bye Alessandro -
ORA-00001 - Unique Constraint error in Oracle forms 6i
Hi,
I am using Forms 6i. I have an issue while inserting records into a custom table. Below is the functionality.
When I check the check box, and press the 'APPROVE' button, the record gets inserted into the custom table. But while inserting I am getting 'ora-00001-unique constraint violated error'.
But the custom table doesn't have any data in it. (So the inserting record should not be a duplicate record).
Any suggestions would be of great help.
Thanks
DeeptiIs it a sql statement that is performing the insert, or are you using the native data block DML functionality in your form? Secondly have you identified candidate columns that could be causing your issue?
If you are using sql statement have you debugged to comfirm that you are not firing the same block of code more that once, and that if it is required to execute multiple times are you incrementing the sequence values that should be unique.
Regards
Q -
Unique constraint violation on version enabled table
hi!
we're facing a strange problem with a version enabled table that has an unique constraint on one column. if we rename an object stored in the table (the name-attribute of the object is the one that has a unique constraint on the respective column) and rename it back to the old name again, we get an ORA-00001 unique constraint violation on the execution of an update trigger.
if the constraint is simply applied as before to the now version enabled table, I understand that this happens, but shouldn't workspace manager take care of something like that when a table with unique constraints is version enabled? (the documentation also says that) because taking versioning into account it's not that we try to insert another object with the same name, it's the same object at another point in time now getting back it's old name.
we somewhat assume that to be a pretty standard scenario when using versioned data.
is this some kind of bug or do we just miss something important here?
more information:
- versioning is enabled on all tables with VIEW_WO_OVERWRITE and no valid time support
- database version is 10.2.0.1.0
- wm installation output:
ALLOW_CAPTURE_EVENTS OFF
ALLOW_MULTI_PARENT_WORKSPACES OFF
ALLOW_NESTED_TABLE_COLUMNS OFF
CR_WORKSPACE_MODE OPTIMISTIC_LOCKING
FIRE_TRIGGERS_FOR_NONDML_EVENTS ON
NONCR_WORKSPACE_MODE OPTIMISTIC_LOCKING
NUMBER_OF_COMPRESS_BATCHES 50
OWM_VERSION 10.2.0.1.0
UNDO_SPACE UNLIMITED
USE_TIMESTAMP_TYPE_FOR_HISTORY ON
- all operations are done on LIVE workspace
any help is appreciated.
EDIT: we found out the following: the table we are talking about is the only table where the unique constraint is left. so there must have been a problem during version enabling. on another oracle installation we did everything the same way and the unique constraint wasn't left there, so everything works fine.
regards,
Andreas Schilling
Message was edited by:
aschillinghi!
we're facing a strange problem with a version enabled table that has an unique constraint on one column. if we rename an object stored in the table (the name-attribute of the object is the one that has a unique constraint on the respective column) and rename it back to the old name again, we get an ORA-00001 unique constraint violation on the execution of an update trigger.
if the constraint is simply applied as before to the now version enabled table, I understand that this happens, but shouldn't workspace manager take care of something like that when a table with unique constraints is version enabled? (the documentation also says that) because taking versioning into account it's not that we try to insert another object with the same name, it's the same object at another point in time now getting back it's old name.
we somewhat assume that to be a pretty standard scenario when using versioned data.
is this some kind of bug or do we just miss something important here?
more information:
- versioning is enabled on all tables with VIEW_WO_OVERWRITE and no valid time support
- database version is 10.2.0.1.0
- wm installation output:
ALLOW_CAPTURE_EVENTS OFF
ALLOW_MULTI_PARENT_WORKSPACES OFF
ALLOW_NESTED_TABLE_COLUMNS OFF
CR_WORKSPACE_MODE OPTIMISTIC_LOCKING
FIRE_TRIGGERS_FOR_NONDML_EVENTS ON
NONCR_WORKSPACE_MODE OPTIMISTIC_LOCKING
NUMBER_OF_COMPRESS_BATCHES 50
OWM_VERSION 10.2.0.1.0
UNDO_SPACE UNLIMITED
USE_TIMESTAMP_TYPE_FOR_HISTORY ON
- all operations are done on LIVE workspace
any help is appreciated.
EDIT: we found out the following: the table we are talking about is the only table where the unique constraint is left. so there must have been a problem during version enabling. on another oracle installation we did everything the same way and the unique constraint wasn't left there, so everything works fine.
regards,
Andreas Schilling
Message was edited by:
aschilling -
ORA-00001:Unique Constraint while inserting 2 similar records from source
Hi,
in TEST1 there are records:
10 20 ABC
10 20 DEF
I amt trying to insert into TEST which has CODE as Primary Key.
declare
type cur is ref cursor;
cur_t cur;
type v_t is table of TEST%rowtype;
tab v_t;
v_act_cnt_str VARCHAR2(4000);
v_act_cnt NUMBER:=0;
BEGIN
v_act_cnt_str:=' SELECT COUNT(*) '||' FROM TEST '||' WHERE '||'('||CODE||')'||' IN '||'('||'SELECT '||CODE||' FROM TEST1'||')';
DBMS_OUTPUT.PUT_LINE('The Actual Count String is'||v_act_cnt_str);
EXECUTE IMMEDIATE v_act_cnt_str INTO v_act_cnt;
open cur_t for select * from TEST1 ORDER BY ROWNUM;
loop
fetch cur_t bulk collect into tab limit 10000;
if v_act_cnt=0 THEN
forall i in 1..tab.count
insert into TEST values tab(i);
commit;
ELSE
v_merge_act_str :=
'MERGE INTO TEST '||
' DEST' || ' USING TEST1 '||
' SRC' || ' ON (' || DEST.CODE=SRC.CODE || ')' ||
' WHEN MATCHED THEN ';
first_str := 'UPDATE ' || ' SET ' ||
'DEST.NAME=SRC.NAME,DEST.DEPT_NAME=SRC.DEPT_NAME;
execute immediate v_merge_act_str || first_str;
v_merge_act_str := '';
first_str := '';
commit;
END IF;
end loop;
END;
ITS GIVING ERROR as:
ORA-00001: unique constraint (PK_TEST1) violated
Any help will be needful for me
Edited by: user598986 on Sep 22, 2009 4:20 AM
Edited by: user598986 on Sep 22, 2009 4:22 AMYour code makes absolutely no sense whatsover. The whole point of MERGE is that it allows us to conditionally apply records from a source table as inserts or updates to a target table. So why have you coded two separate statements? And why are you using such horrible dynamic SQL?
Sorry to unload on you, but you seem to have your code unnecessarily complicated, and that it turn makes it unnecessarily harder to debug. As an added "bonus" this approach will also perform considerably slower than a single MERGE statement. SQL is all about set operations. Don't do anything procedurally which can be done in a set.
Cheers, APC
blog: http://radiofreetooting.blogspot.com -
Error while adding Image: ORA-00001: unique constraint
Dear all,
I have an error while adding images to MDM I can´t explain. I want to add 7231 images. About 6983 run fine. The rest throws this error.
Error: Service 'SRM_MDM_CATALOG', Schema 'SRMMDMCATALOG2_m000', ERROR CODE=1 ||| ORA-00001: unique constraint (SRMMDMCATALOG2_M000.IDATA_6_DATAID) violated
Last CMD: INSERT INTO A2i_Data_6 (PermanentId, DataId, DataGroupId, Description_L3, CodeName, Name_L3) VALUES (:1, :2, :3, :4, :5, :6)
Name=PermanentId; Type=9; Value=1641157; ArraySize=0; NullInd=0;
Name=DataId; Type=5; Value=426458; ArraySize=0; NullInd=0;
Name=DataGroupId; Type=4; Value=9; ArraySize=0; NullInd=0;
Name=Description_L3; Type=2; Value=; ArraySize=0; NullInd=0;
Name=CodeName; Type=2; Value=207603_Img8078_gif; ArraySize=0; NullInd=0;
Name=Name_L3; Type=2; Value=207603_Img8078.gif; ArraySize=0; NullInd=0;
Error: Service 'SRM_MDM_CATALOG', Schema 'SRMMDMCATALOG2_m000', ERROR CODE=1 ||| ORA-00001: unique constraint (SRMMDMCATALOG2_M000.IDATA_6_DATAID) violated
Last CMD: INSERT INTO A2i_Data_6 (PermanentId, DataId, DataGroupId, Description_L3, CodeName, Name_L3) VALUES (:1, :2, :3, :4, :5, :6)
Name=PermanentId; Type=9; Value=1641157; ArraySize=0; NullInd=0;
Name=DataId; Type=5; Value=426458; ArraySize=0; NullInd=0;
Name=DataGroupId; Type=4; Value=9; ArraySize=0; NullInd=0;
Name=Description_L3; Type=2; Value=; ArraySize=0; NullInd=0;
Name=CodeName; Type=2; Value=207603_Img8085_gif; ArraySize=0; NullInd=0;
Name=Name_L3; Type=2; Value=207603_Img8085.gif; ArraySize=0; NullInd=0;
I checked all data. There is no such dataset in the database. Can anybody give me a hint how to avoid this error.
One thing I wonder: The PermanentId is allways the same but I can´t do anything here.
BR
Roman
Edited by: Roman Becker on Jan 13, 2009 12:59 AMHi Ritam,
For such issues, can you please create a new thread or directly email the author rather than dragging back up a very old thread, it is unlikely that the resolution would be the same as the database/application/etc releases would most probably be very different.
For now I will close this thread as unanswered.
SAP SRM Moderators. -
ORA-00001: unique constraint
Hi,
I disabled the primary key of the table to which I insert the data like this :
INSERT INTO TABLE_X
select * from table_1 UNION ALL
select * from table_2 ;
but I receive this error :
ORA-00001: unique constraint TABLE_X.PK violated
Why ? It is already disabled.
thank you.
Message was edited by:
user522961
Message was edited by:
user522961
Message was edited by:
user522961Is it possible you kept the index when disabling the primary key?
YAS@11G>create table t as select object_id from all_objects where rownum<=10;
Table created.
YAS@11G>alter table t add constraint PK_T primary key(object_id);
Table altered.
YAS@11G>alter table t disable constraint pk_t;
Table altered.
YAS@11G>insert into t select * from t;
10 rows created.
YAS@11G>rollback;
Rollback complete.
YAS@11G>alter table t enable constraint pk_t;
Table altered.
YAS@11G>alter table t disable constraint pk_t keep index;
Table altered.
YAS@11G>insert into t select * from t;
insert into t select * from t
ERROR at line 1:
ORA-00001: unique constraint (YAS.PK_T) violated -
ORA-00001: unique constraint (REMEDY.SYS_C001727
Hi: I have a simple table with a primary key (ENTRYID). All other fields are just fields with no constraints. When I try to insert records, for some records I get the above error. The table does not already have this record.
INSERT INTO REMEDY.VITALEXCEPTION (ENTRYID, CUSTID, DEVICENAME, INTERFACE, EXCEPTION, DURATION, TIME)
VALUES ('jvis2rspm01.S0/0/0_FMS:65999591 NA:3836400887 TERM:cmny83bbf/20351BDU1182798445', 'fxms', 'jvis2rspm01', 'S0/0/0_FMS:65999591 NA:3836400887 TERM:cmny83bbf/20351', 'BDU', 5476, 1182792934);
INSERT INTO REMEDY.VITALEXCEPTION (ENTRYID, CUSTID, DEVICENAME, INTERFACE, EXCEPTION, DURATION, TIME)
ERROR at line 1:
ORA-00001: unique constraint (REMEDY.SYS_C001727) violated
Could someone help.
Thanks
Rayhi,
can you post the table structure?
I suspect that ENTRYID has lesser length than the actual value and in effect the value has been truncated for some reason.
The primary key value is too long, maybe creating a surrogate key would help.
J -
ORA-00001 - Unique Constraint on R5TRANSLINES
Hello,
I get the following error when i am inserting into R5TRANSLINES "2009-06-23 14:44:51,698 DEBUG [com.dstm.mp.MPDBException] **!!Error Code:|1|, Msg:|ORA-00001: unique constraint (REMPLOY.R5PRIK_TRL) violated"
I have a flex trigger in the system which is envoked when inserting parts into my warehouse:
Declare
cursor c_palletparts( pallet varchar2) is
select obj_part from r5objects
where
obj_parent = pallet;
v_pallet varchar2(255);
v_evtcode varchar2(255);
v_transcode varchar2(255);
v_line number :=0;
v_store varchar2(255);
v_trltype varchar2(4);
v_trlrtype varchar2(4);
v_trlio number;
v_bin VARCHAR2(15);
v_binin VARCHAR2(15);
ncounter number;
cur_message varchar2(200);
begin
select trl_part, trl_trans, trl_line into v_pallet, v_transcode, v_line from r5translines
where rowid = :rowid;
select count(*) into ncounter from r5objects where obj_code = v_pallet and obj_class = 'PALLET';
if ncounter = 1 then
select trl_part, trl_trans, trl_line, trl_store, trl_type, trl_rtype, trl_io, trl_bin into v_pallet, v_transcode, v_line, v_store, v_trltype, v_trlrtype, v_trlio, v_binin
from r5translines
where trl_trans = v_transcode
and trl_line = v_line;
IF v_trlrtype = 'RECV' THEN
update r5objects set obj_store = v_store where obj_code = v_pallet;
UPDATE R5PROPERTYVALUES SET PRV_VALUE = v_store WHERE prv_code = v_pallet||'#*' AND PRV_PROPERTY = 'RMP231' AND PRV_RENTITY = 'OBJ';
END IF;
-- update r5parts set par_byasset = '+' where par_code = v_pallet;
for r_palletparts in c_palletparts(v_pallet) loop
IF v_trlrtype = 'I' then
select count(*) into ncounter from r5stock
where sto_part = r_palletparts.obj_part
and sto_store = v_store
and sto_part_org = '*';
IF ncounter = 0 then
INSERT INTO R5STOCK (STO_PART, STO_STORE, STO_STOCKTAKE, STO_QTY, STO_CONSIGNMENT, STO_PART_ORG, STO_PRICETYPE, STO_ONDEMAND, STO_REPAIRQTY, STO_VENDORQTY, STO_SHOPQTY, STO_REPAIRTYPE, STO_REPSTOCKMETHOD, STO_REPAUTOASSIGN, STO_LABELDEFAULT)
VALUES (r_palletparts.obj_part, v_store, SYSDATE, 1, '-', '*', 'A', '-', 0, 0, 0, '-', '-', '-', 0);
END IF;
select count(*) into ncounter from r5binstock
where bis_part = r_palletparts.obj_part
and bis_store = v_store
and bis_part_org = '*';
IF ncounter = 0 then
INSERT INTO R5BINSTOCK(BIS_PART, BIS_STORE, BIS_BIN, BIS_LOT, BIS_QTY, BIS_PART_ORG, BIS_REPAIRQTY)
VALUES (r_palletparts.obj_part, v_store, '*', '*', 1, '*', 0);
END IF;
select min(bis_bin) into v_bin from r5binstock
where bis_part = r_palletparts.obj_part
and bis_store = v_store
and bis_part_org = '*';
update r5binstock set bis_qty = 1 where bis_part = r_palletparts.obj_part
and bis_store = v_store
and bis_bin = v_bin;
else
update r5objects set obj_store = v_store where obj_code = r_palletparts.obj_part;
-- UPDATE R5PROPERTYVALUES SET PRV_VALUE = v_store WHERE prv_code = r_palletparts.obj_part||'#*' AND PRV_PROPERTY = 'RMP231' AND PRV_RENTITY = 'OBJ';
IF r_palletparts.obj_part NOT IN ('X') THEN
cur_message := r_palletparts.obj_part||'|'||v_trltype||'|'||v_store||'|'||ncounter;
-- raise_application_error(-20000,cur_message);
END IF;
v_bin := v_binin;
end if;
v_line := v_line + 1;
insert into r5translines
(trl_trans,trl_type, trl_rtype, trl_line, trl_date,
trl_part, trl_lot, trl_bin, trl_store, trl_price,
trl_qty, trl_io, trl_part_org)
values
(v_transcode, v_trltype, v_trlrtype, v_line, sysdate,
r_palletparts.obj_part, '*', v_bin, v_store, 0,
1, v_trlio, '*' );
end loop;
end if;
Exception
when no_data_found then
Null;
end;
Can someone please tell me how to make this key unique.
Many Thanks
ChrisHi,
You can create rule for truncate using below:
BEGIN
DBMS_RULE_ADM.CREATE_RULE(
rule_name => 'TRUNCATE_RULE',
condition => '(:ddl.get_object_owner() = ''HR'' AND ' ||
':ddl.get_object_name() = ''TEST'') AND ' ||
':ddl.get_command_type() = ''TRUNCATE TABLE'' ');
END;
Thanks,
Reena -
I have a stored proc which runs every night. The stored proc is giving a unique constraint violation.
(Error) ORA-00001: unique constraint (WHSE_DBA.PK_DELPHI_TRANS_FACT) violated.
Any idea about how to debug this.I want to create an error table on the stored proc shown below. I know I have to add something in the exceptions. Can anyone give me the commands and where to add it.
CREATE OR REPLACE PROCEDURE WHSE_DBA.DM_LD_DELPHI_TRANS_FACT
IS
-- VARIABLE DECLARATIONS
LAST_LOAD_DATE DATE;
INSERTCOUNT NUMBER:=0;
-- LOGGING VARIABLES AND CONSTANTS
TARGETTABLE CONSTANT VARCHAR2(20):='DELPHI_TRANS_FACT';
MSGUNKNOWNERR CONSTANT VARCHAR2(20):='Error';
NBRIGNOREERR CONSTANT NUMBER:=12541;
DEFDATE CONSTANT DATE:='01-OCT-2006';
ERRDESCRIPTION VARCHAR2(255);
V_DELPHI_TRANS_TOTAL NUMBER;
V_DELPHI_TRANS_FACT_TOTAL NUMBER;
BEGIN
-- LOOK UP LAST LOADED RECORD
SELECT NVL(MAX(SNAPSHOT_DATE),DEFDATE)
INTO LAST_LOAD_DATE
FROM DELPHI_TRANS_FACT;
-- * LOAD ALL DIMENSION TABLES
-- BUDGET_YR_DIMENSION
INSERT INTO BUDGET_YR_DIMENSION (BUDGET_YEAR, SNAPSHOT_DATE)
(SELECT DISTINCT BUD_YR, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM BUDGET_YR_DIMENSION
WHERE BUDGET_YEAR=OUTER.BUD_YR));
-- EFF_DATE_DIMENSION
INSERT INTO EFF_DATE_DIMENSION (PAID_FIS_YEAR, PAID_QTR, EFFECTIVE_DATE, SNAPSHOT_DATE)
(SELECT DISTINCT CVT_DATE_TO_FISCAL_YEAR(EFF_DT), PD_QTR, EFF_DT, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM EFF_DATE_DIMENSION
WHERE EFFECTIVE_DATE=OUTER.EFF_DT));
-- PROC_DATE_DIMENSION
INSERT INTO PROC_DATE_DIMENSION (PROCESS_DATE, SNAPSHOT_DATE)
(SELECT DISTINCT PROC_DT, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM PROC_DATE_DIMENSION
WHERE PROCESS_DATE=OUTER.PROC_DT));
-- ORG_DIMENSION
INSERT INTO ORG_DIMENSION (ORG,COST_CTR,SNAPSHOT_DATE)
(SELECT DISTINCT ORG, CC_CD, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM ORG_DIMENSION
WHERE ORG=OUTER.ORG));
-- BPAC DIMENSION
INSERT INTO BPAC_DIMENSION (BPAC, AFC_CD, PE_CODE, SNAPSHOT_DATE)
(SELECT DISTINCT BPAC, AFC_CD, PE, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM BPAC_DIMENSION
WHERE BPAC=OUTER.BPAC));
-- FUND DIMENSION
INSERT INTO FUND_DIMENSION (FUND,APPROP_CD,LIM_CD,SNAPSHOT_DATE)
(SELECT DISTINCT FUND, APPROP_CD, APPLIM_CD, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM FUND_DIMENSION
WHERE FUND=OUTER.FUND));
-- OBJ_CD_DIMENSION
INSERT INTO OBJ_CD_DIMENSION (OBJ_CD,SNAPSHOT_DATE)
(SELECT DISTINCT OC_CD, SYSDATE
FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM OBJ_CD_DIMENSION
WHERE OBJ_CD=OUTER.OC_CD));
-- GLA DIMENSION
INSERT INTO GLA_DIMENSION (GLA_CD,SNAPSHOT_DATE)
(SELECT DISTINCT GLA, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM GLA_DIMENSION
WHERE GLA_CD=OUTER.GLA));
-- PROJECT_TASK_DIMENSION
INSERT INTO PROJECT_TASK_DIMENSION (PROJECT_NO,TASK_NO,SNAPSHOT_DATE)
(SELECT DISTINCT PROJ_NBR, TASK_NBR, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM PROJECT_TASK_DIMENSION
WHERE PROJECT_NO=OUTER.PROJ_NBR
AND TASK_NO=OUTER.TASK_NBR));
-- TRANS_DESC_DIMENSION
INSERT INTO TRANS_DESC_DIMENSION (DESCRIPTION,SNAPSHOT_DATE)
(SELECT DISTINCT DESCR, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM TRANS_DESC_DIMENSION
WHERE DESCRIPTION=OUTER.DESCR
AND OUTER.DESCR IS NOT NULL));
-- SUPPLIER_DIMENSION
INSERT INTO SUPPLIER_DIMENSION (SUPPLIER_NAME, SNAPSHOT_DATE)
(SELECT DISTINCT VENDOR_NAME, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM SUPPLIER_DIMENSION
WHERE SUPPLIER_NAME=OUTER.VENDOR_NAME));
-- DELPHI_INV_DIMENSION
INSERT INTO DELPHI_INV_DIMENSION (INVOICE_NO, SNAPSHOT_DATE)
(SELECT DISTINCT INV_NO, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM DELPHI_INV_DIMENSION
WHERE INVOICE_NO=OUTER.INV_NO));
-- DELPHI_PO_DIMENSION
INSERT INTO DELPHI_PO_DIMENSION (PO_NO, SNAPSHOT_DATE)
(SELECT DISTINCT PO_NO, SYSDATE FROM DELPHI_TRANS OUTER
WHERE NOT EXISTS
(SELECT 1
FROM DELPHI_PO_DIMENSION
WHERE PO_NO=OUTER.PO_NO));
-- TEMPORARILY DISABLE KEY FOR FASTER LOADING
DB_MISC.PRO_EXE_DDL('ALTER TABLE DELPHI_TRANS_FACT DISABLE CONSTRAINT PK_DELPH_TRANS_FACT');
-- MOVE DATA INTO TABLE
INSERT INTO DELPHI_TRANS_FACT (BPAC_KEY, ORG_KEY, FUND_KEY, OBJ_CD_KEY, GLA_KEY,
EFF_DATE_KEY, PROC_DATE_KEY, PROJECT_TASK_KEY, BUDGET_YR_KEY, DELPHI_TRANS_DESC_KEY,
BALANCE, COMMIT_AMT, UDO_AMT, AEU_AMT, AEP_AMT, OBLIGATION_AMT, SNAPSHOT_DATE,
SUPPLIER_KEY, DELPHI_INV_KEY, DELPHI_PO_KEY)
(SELECT BPAC_KEY, ORG_KEY, FUND_KEY, OBJ_CD_KEY, GLA_KEY, EFF_DATE_KEY, PROC_DATE_KEY,
PROJECT_TASK_KEY, BUDGET_YR_KEY, TRANS_DESC_KEY, SUM(BAL), SUM(COMMIT_AMT), SUM(UDO_AMT),
SUM(AEU_AMT), SUM(AEP_AMT), SUM(OBLIGATION_AMT), MAX(SYSDATE), SUPPLIER_KEY, DELPHI_INV_KEY,
DELPHI_PO_KEY
FROM BPAC_DIMENSION, ORG_DIMENSION, FUND_DIMENSION, OBJ_CD_DIMENSION, GLA_DIMENSION,
EFF_DATE_DIMENSION, PROC_DATE_DIMENSION, PROJECT_TASK_DIMENSION, BUDGET_YR_DIMENSION,
TRANS_DESC_DIMENSION, DELPHI_TRANS, SUPPLIER_DIMENSION, DELPHI_INV_DIMENSION, DELPHI_PO_DIMENSION
WHERE DELPHI_TRANS.SNAPSHOT_DATE>LAST_LOAD_DATE
-- JOIN WITH BPAC_DIMENSION
AND DELPHI_TRANS.BPAC=BPAC_DIMENSION.BPAC
-- JOIN WITH ORG_DIMENSION
AND DELPHI_TRANS.ORG = ORG_DIMENSION.ORG
-- JOIN WITH FUND_DIMENSION
AND DELPHI_TRANS.FUND = FUND_DIMENSION.FUND
-- JOIN WITH OBJ_CD_DIMENSION
AND DELPHI_TRANS.OC_CD=OBJ_CD_DIMENSION.OBJ_CD
-- JOIN WITH GLA_DIMENSION
AND DELPHI_TRANS.GLA=GLA_DIMENSION.GLA_CD
-- JOIN WITH EFF_DATE_DIMENSION
AND DELPHI_TRANS.EFF_DT=EFF_DATE_DIMENSION.EFFECTIVE_DATE
-- JOIN WITH PROC_DATE_DIMENSION
AND DELPHI_TRANS.PROC_DT=PROC_DATE_DIMENSION.PROCESS_DATE
-- JOIN WITH PROJECT_TASK_DIMENSION
AND (DELPHI_TRANS.PROJ_NBR=PROJECT_TASK_DIMENSION.PROJECT_NO
AND DELPHI_TRANS.TASK_NBR=PROJECT_TASK_DIMENSION.TASK_NO)
-- JOIN WITH BUDGET_YR_DIMENSION
AND DELPHI_TRANS.BUD_YR=BUDGET_YR_DIMENSION.BUDGET_YEAR
-- JOIN WITH TRANS_DESC_DIMENSION
AND DELPHI_TRANS.DESCR=TRANS_DESC_DIMENSION.DESCRIPTION
-- JOIN WITH SUPPLIER_DIMENSION
AND DELPHI_TRANS.VENDOR_NAME=SUPPLIER_DIMENSION.SUPPLIER_NAME
-- JOIN WITH DELPHI_PO_DIMENSION
AND DELPHI_TRANS.PO_NO=DELPHI_PO_DIMENSION.PO_NO
-- JOIN WITH DELPHI_INV_DIMENSION
AND DELPHI_TRANS.INV_NO=DELPHI_INV_DIMENSION.INVOICE_NO
GROUP BY BPAC_KEY, ORG_KEY, FUND_KEY, OBJ_CD_KEY, GLA_KEY, EFF_DATE_KEY, PROC_DATE_KEY,
PROJECT_TASK_KEY, BUDGET_YR_KEY,TRANS_DESC_KEY, SUPPLIER_KEY, DELPHI_INV_KEY, DELPHI_PO_KEY);
-- COUNT AFFECTED RECORDS
INSERTCOUNT:=0+SQL%ROWCOUNT;
-- RE-ENABLE KEY CONSTRAINT
DB_MISC.PRO_EXE_DDL('ALTER TABLE DELPHI_TRANS_FACT ENABLE VALIDATE CONSTRAINT PK_DELPH_TRANS_FACT');
-- STORE RESULTS OF OPERATION
IF INSERTCOUNT>0 THEN
DB_MISC.LOGFAILURE_EX('none', 'none', INSERTCOUNT||' new records loaded successfully.', TARGETTABLE, 'DM_LD_DELPHI_TRANS_FACT', FALSE);
END IF;
--- COMPARE BALANCE TOTAL FROM DELPHI_TRANS TABLE AND DELPHI_TRANS_FACT TABLE
SELECT SUM(BAL) INTO V_DELPHI_TRANS_TOTAL
FROM DELPHI_TRANS ;
SELECT SUM(BALANCE) INTO V_DELPHI_TRANS_FACT_TOTAL
FROM DELPHI_TRANS_FACT ;
VALIDATE_LOAD(V_DELPHI_TRANS_TOTAL,V_DELPHI_TRANS_FACT_TOTAL);
-- EXCEPTION HANDLING ROUTINES * * * * * * * * * * * * * * * * * * * * * *
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
IF SQLCODE!=NBRIGNOREERR THEN
ERRDESCRIPTION:=SQLERRM;
-- CALL ROUTINE TO PROCESS ERROR
DB_MISC.LOGFAILURE_EX('none', 'none', ERRDESCRIPTION, TARGETTABLE, 'DM_LD_DELPHI_TRANS_FACT', TRUE);
COMMIT;
END IF;
-- END EXCEPTION HANDLING ROUTINES * * * * * * * * * * * * * * * * * * * * * *
END -
ORA-00001 UNIQUE CONSTRAINT ERROR ON SYS.WRH$_SQLTEXT_PK?
/u01/app/oracle/admin/bill02/bdump/bill02_m000_10074.trc
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /u01/app/oracle/product/10.1.0
System name: SunOS
Node name: bill02
Release: 5.9
Version: Generic_117171-17
Machine: sun4u
Instance name: bill02
Redo thread mounted by this instance: 1
Oracle process number: 55
Unix process pid: 10074, image: oracle@bill02 (m000)
*** 2005-10-27 02:03:14.682
*** ACTION NAME:(Auto-Flush Slave Action) 2005-10-27 02:03:14.667
*** MODULE NAME:(MMON_SLAVE) 2005-10-27 02:03:14.667
*** SERVICE NAME:(SYS$BACKGROUND) 2005-10-27 02:03:14.667
*** SESSION ID:(519.24807) 2005-10-27 02:03:14.667
*** KEWROCISTMTEXEC - encountered error: (ORA-00001: unique constraint (SYS.WRH$_SQLTEXT_PK) violated
*** SQLSTR: total-len=570, dump-len=240,
STR={INSERT INTO wrh$_sqltext (sql_id, dbid, sql_text, command_type, snap_id, ref_count) SELECT /*+ ordered use_nl(s1) index(s1) */ sie.sqlid_kewrsie, :dbid, s1.sql_fulltext, }
*** KEWRAFM1: Error=13509 encountered by kewrfteh
How to fix?
Thanks!Have you tried searching Metalink? A unique constraint violation on a SYS table by MMON will almost certainly require Oracle Support's assistance to resolve. Something rather deep inside Oracle has done something wrrong.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC
Maybe you are looking for
-
cup 8.6, cucm 7.13 , jabber 9.2 client. all been working ok until recently we lost cti deskphone control. No apparent changes to configuration. her is some output from problem report: Failed to register with CUCM [error: eInvalidSt
-
I'm Still having problems with my contact form, can someone look at it and help me?
http://www.alpenawebdesigns.com when I try and submit my contact form I get a 404 error something about a port 80 (I'm using port 21) I use Godaddy as a host and this contact form works in another program http://www.bayviewdropincenter.org can someon
-
405 - ICM_HTTP_INTERNAL_ERROR in CRM Mobile Sales
Hi Experts, We deployed a CRM Mobile Sales 1.2 in Windows Mobile simulator. When we try to login to CRM Mobile Application, it is keep on checking for initial data in the simulator, then we checked in the session monitoring for any errors, we found t
-
Hi, I am thinking of getting myself a blackberry, however I keep reading that this divice is called curve 9300 3G and in my country it is called Curve 9300 is this the same phone? http://www.mobitel.si/telefoni-in-naprave/aparati.aspx here is a link
-
Hi All I have the following fields contract-number,action_amount,work_order_amnt and i'm trying to create cell sum for change in contract number on both the amount fields, but for some reason its only giving the cell sum on only one of the two fields