• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

EDB to Oracle db link isolation level problem

 
Greenhorn
Posts: 2
  • Number of slices to send:
    Optional 'thank-you' note:
Hello!

I would need some help with isolation levels for db link between EDB and Oracle database. I've created a DB link from EDB to Oracle and we are pushing data to Oracle database.  I saw that default transaction isolation level for db link between EDB and Oracle is SERIALIZABLE (EDB -> Oracle db link docs). I see that there is another property for edb_dblink_oci parameter (default value od the property is SERIALIZABLE) which is SCROLL but I can't find which isolation level it uses. The problem that occurs when pushing data to Oracle DB is the exact one that is written in the link (

ORA-08177: can't serialize access for this transaction

).
The job has to send new data every 1 hour and with retry there is no guarantee that the job will finish in reasonable time and if I limit the number of retries, it's not possible to guarantee that all data will be pushed to Oracle DB.

Is it possible to change isolation level for db link to READ COMMITED?
 
Bartender
Posts: 217
7
  • Number of slices to send:
    Optional 'thank-you' note:
Yes, it seams that setting the isolation level to READ_COMMITTED should be the way to go.

From Foreign Data Wrapper for Oracle https://github.com/laurenz/oracle_fdw#foreign-server-options

Unfortunately Oracle's implementation of SERIALIZABLE is rather bad and causes serialization errors (ORA-08177) in unexpected situations, like inserts into the table.
Using READ COMMITTED transactions works around this problem, but there is a risk of inconsistencies. If you want to use it, check your execution plans if the foreign scan could be executed more than once.

 
Roland Mueller
Bartender
Posts: 217
7
  • Number of slices to send:
    Optional 'thank-you' note:
The same topic has been discussed 10 years ago http://www.pmsas.pr.gov.br/wp-content/?id=coderanch-1z0-809&exam=t/621777/databases/ORA-serialize-access-transaction#2842393.

As result two proposals were made:

(1) Handling of ORA-08177 by re-trying the transaction

The only cure for the ORA-08177 error is to rollback changes and re-run the entire business transaction. If there are no update collision on the next run, the transaction will finish.



(2) Adding ROWDEPENDENCIES to table in Oracle DB

This causes that the version of data in DB i.e. socalled System Change Number (SCN)  is handled on row level instead of table level (default). See also
Donald Burleson "Oracle rowdependencies tips" http://www.dba-oracle.com/t_row_scn_rowdependencies.htm

I guess doing this show decrease performance since more effort is needed to update data and do the additional checks.
 
Filip Bebek
Greenhorn
Posts: 2
  • Number of slices to send:
    Optional 'thank-you' note:
If someone will have the same problem like I did, I found a solution. Default ISOLATION_LEVEL for DB Link from EDB to Oracle is SERIALIZABLE because it's the most similar to Postgres REPEATABLE READ ISOLATION_LEVEL. The solution for that is that you set edb_dblink_oci.rescans parameter to SCROLL which will then change the ISOLATION_LEVEL to READ COMMITED. I made the change on session level, but it can be set at DB properties but DB restart is necessary.

To change it on session level, you should execute following command:



To check value AFTER the changing edb_dblink_oci.rescans properties:



To check the ISOLATION_LEVEL on Oracle DB on which DB Link points to execute the following command:



but be sure that you create transaction first (just do simple insert, select, update,...)

To read more about it:
https://www.enterprisedb.com/docs/epas/latest/reference/oracle_compatibility_reference/epas_compat_sql/21_create_public_database_link/#description
https://www.cybertec-postgresql.com/en/with-hold-cursors-and-transactions-in-postgresql/
https://www.oracle.com/technetwork/database/scrollable-cursor-131342.pdf
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |