ORA-02067: transaction or savepoint rollback required
Now, on the other side (the remote side), there was an error encountered, but there were already some statements executed successfully.
Now you will need to perform a rollback before you can do a select on the calling side, or you will get this error.
-- First we create some test users SQL> drop user test1 cascade; User dropped. SQL> drop user test2 cascade; SQL> create user test1 identified by test1; User created. SQL> create user test2 identified by test2; User created. SQL> grant create session, create table, create trigger, create procedure, create database link to test1, test2; Grant succeeded. SQL> alter user test1 quota unlimited on system; User altered. SQL> alter user test2 quota unlimited on system; User altered.Now we connect to test 2 (remote user) and create a table
SQL> conn test2/test2@XE Connected. SQL> create table test2_tab(n number); Table created. SQL> insert into test2_tab values(1); 1 row created. SQL> commit; Commit complete.In order to demonstrate this error, we create a trigger on the newly created table, but make sure the trigger fails. In our case, we assign a character to a number field:
create or replace trigger test2_tab_bir before insert on test2_tab for each row begin :new.n := 'a'; end; / Trigger created.Connect to test1, create database link
SQL> conn test1/test1@XE Connected. SQL> SQL> create database link test2 connect to test2 identified by test2 using 'XE'; Database link created.Now we will create a procedure which will first do a successful dml, after that a dml that fails due to the incorrect trigger:
create or replace procedure p is begin -- first do a statement that executes ok update test2_tab@test2 set n=2; -- next statement will fail because of the invalid trigger insert into test2_tab@test2 values(1); end; / Procedure created.Call the procedure, it will fail:
SQL> exec p BEGIN p; END; * ERROR at line 1: ORA-02055: distributed update operation failed; rollback required ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at "TEST2.TEST2_TAB_BIR", line 2 ORA-04088: error during execution of trigger 'TEST2.TEST2_TAB_BIR' ORA-02063: preceding 3 lines from TEST2 ORA-06512: at "TEST1.P", line 4 ORA-06512: at line 1Now we have a failed distributed transaction, you need to rollback, else you will get the error when selecting ANY table/view
SQL> select sysdate from dual;
select sysdate from dual
*
ERROR at line 1:
ORA-02067: transaction or savepoint rollback required
-- also happens when oracle itself calls another select recursively (notice the ORA-00604)
SQL> select * from user_2pc_pending;
select * from user_2pc_pending
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02067: transaction or savepoint rollback required
Welcome to our forum for Oracle error: ORA-02067 Add your own message
At the moment there are no forum messages. You can add your own question.
Add your message
Ask Your Question
If you need more information about this particular error message, you can leave a forum message.
We are replying to this message whenever we have some spare time, so please do not consider this as a private 'solve my critical issue asap' service.
Should you need professional Oracle Assistance to make your project a success, please have a look at our consultancy services.
Spam Protection
In order to prevent automatic generation of messages, we are asking for a validation code. This code is unique and is generated every time a new message is asked.
If you do not enter the validation correctly, your message will not be recorded.
Forum Rules
Please be polite, do not USE ALL UPPERCASE, no insults, violance or any other threats.
