Solved

ORA-30926 on Merge script

Posted on 2009-04-09
3
969 Views
Last Modified: 2013-12-18
ORA-30926: unable to get a stable set of rows in the source tables

Hello everyone I am back. i am getting a ORA-30926 on the below merge script. I had this working but for some reason I am getting this now. I have looked all over the web and I can not figure out why. Can some please give me some direction on what might be going on?


Any help would be great.
MERGE INTO TEST.CONTCT D
USING         (select WHOLENAME, FIRST_NAME, LAST_NAME, ADUSERNAME, EMAIL, PHONENUMBER, LOCATION1, DEPARTMENT, COMPANY, STATUS, LOCATION_L7
               from (
                      SELECT P7.WHOLENAME, P7.FIRST_NAME, P7.LAST_NAME, P7.ADUSERNAME, P7.EMAIL, P7.PHONENUMBER, 
                             P7.LOCATION1, P7.DEPARTMENT, P7.COMPANY, P7.STATUS,L7."LOCATION" AS LOCATION_L7,
                             row_number() over(partition by P7.ADUSERNAME order by P7.ADUSERNAME) AS RN
                       FROM LNOTES_EXP P7, TEST.LOCM1 L7
                       WHERE L7.LOCATION_NAME = P7.LOCATION1
                       AND P7.ADUSERNAME is not null
                     )
                where RN = 1
              ) P
ON  
           (UPPER(P.ADUSERNAME) = D.CONTACT_NAME)
WHEN MATCHED THEN
              UPDATE
              SET  
                              D.FULL_NAME = P.WHOLENAME,                            
                              D.FIRST_NAME = P.FIRST_NAME,
                              D.LAST_NAME = P.LAST_NAME,
                              D.EMAIL = P.EMAIL,
                              D.CONTACT_PHONE = P.PHONENUMBER,
                              D."LOCATION" = P.LOCATION_L7 ,                                  
                              D.DEPT_NAME = P.DEPARTMENT ,
                              D.COMPANY  = 'EMG',
                              D.ACTIVE  = DECODE(UPPER(P.STATUS),'ACTIVE','Y','N')
WHEN NOT MATCHED THEN 
              INSERT
              (D.FULL_NAME, D.CONTACT_NAME, D.USER_ID, D.FIRST_NAME, D.LAST_NAME, D.OPERATOR_ID,
               D.EMAIL, D.CONTACT_PHONE  ,D."LOCATION", D.DEPT_NAME, D.COMPANY,
               D.ACTIVE)
               VALUES
              (P.WHOLENAME, UPPER(P.ADUSERNAME), UPPER(P.ADUSERNAME), P.FIRST_NAME, P.LAST_NAME, P.ADUSERNAME, P.EMAIL, 
               P.PHONENUMBER, P."LOCATION_L7", P.DEPARTMENT, 'EMG', DECODE(UPPER(P.STATUS),'ACTIVE','Y','N'));
                 
COMMIT;

Open in new window

0
Comment
Question by:rleni59
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 16

Accepted Solution

by:
Milleniumaire earned 250 total points
ID: 24106933
This is usually caused by attempting to perform multiple updates of the same row in the destination table:

    ORA-30926: unable to get a stable set of rows in the source tables
        Cause: A stable set of rows could not be got because of large dml
               activity or a non-deterministic where clause.
       Action: Remove any non-deterministic where clauses and reissue the dml.

It is possible, though, to aggregate the results in an inline view in the USING clause.
0
 
LVL 18

Assisted Solution

by:sventhan
sventhan earned 250 total points
ID: 24106945
0
 
LVL 1

Author Comment

by:rleni59
ID: 24112974
The final solution was to create a unique index on the LNOTES_EXP table. Once created it worked. Pretty much what the article was saying.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Configuring and using Oracle Database Gateway for ODBC Introduction First, a brief summary of what a Database Gateway is.  A Gateway is a set of driver agents and configurations that allow an Oracle database to communicate with other platforms…
Shell script to create broker configuration file using current broker Configuration, solely for purpose of backup on Linux. Script may need to be modified depending on OS-installation. Please deploy and verify the script in a test environment.
Via a live example, show how to take different types of Oracle backups using RMAN.
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.
Suggested Courses

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question