Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-08177:tidak dapat membuat serial akses untuk transaksi ini

Anda menggunakan transaksi serial yang menunggu beberapa transaksi lain mengunci tabel yang sama ke ROLLBACK .

Jika transaksi lain ini tidak melakukan rollback tetapi melakukan, Anda akan mendapatkan kesalahan ini.

Skenarionya seperti berikut:

  1. Alice membuka sesi browsernya yang memanggil DELETE FROM TABLE1 WHERE Version = 'v1'

    • Bob membuka sesinya yang memanggil DELETE FROM TABLE1 WHERE Version = 'v1' setelah Alice melakukannya tetapi sebelum dia berkomitmen.

    Bob transaksi menunggu sejak Alice mengunci baris dengan Version = 'v1'

    • Alice melakukan transaksinya

    • Bob transaksi gagal dengan Cannot serialize access

Untuk mengatasinya, setel TRANSACTION ISOLATION LEVEL untuk READ COMMITTED :

transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)

Dalam hal ini, Bob kueri akan diterbitkan kembali setelah Alice melakukan perubahannya, seolah-olah Bob transaksi dimulai setelah Alice salah satunya dilakukan.

Perbarui

Bisakah Anda memposting jejak koneksi Anda?

Untuk melakukannya, jalankan perintah ini segera setelah menghubungkan:

(New OracleCommand("ALTER SESSION SET SQL_TRACE=TRUE", connection, transaction)).ExecuteNonQuery();

, lalu cari di $ORACLE_HOME\admin\udump untuk *.trc fresh yang baru berkas




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prosedur Tersimpan Musim Semi - hasil yang kembali dari prosedur selalu kosong

  2. Mendeklarasikan &Mengatur Variabel dalam Pernyataan Pilih

  3. Bagaimana cara membuat urutan Oracle yang dimulai dengan nilai maksimal dari sebuah tabel?

  4. Dimana Patch saya?

  5. Buat Pengguna Oracle Baru dan Berikan Hak Istimewa:Sintaks dan Contoh