![](/img/trans.png)
[英]How can I upgrade docker container with Oracle 12c to Oracle 19c?
[英]OracleBulkCopy: different behavior between Oracle 12c and 19c
從官方 Oracle 論壇交叉發布:
我正在將數據從 SQLite 數據庫傳輸到具有完全托管的 ODP.NET 4.122.19.1 的 Oracle 數據庫。 到目前為止, 12c一直運行良好,但在寫入 Oracle 19c時出現錯誤“ ORA-39822 :當前事務中不允許新的直接路徑操作。”
程序流程基本上是這樣的(為簡潔起見省略了細節):
using (var transaction = oracleConnection.BeginTransaction())
{
foreach (var dataTable in dataTables) // dataTables is a collection of - well, DataTables
{
using (var bulkCopy = new OracleBulkCopy(oracleConnection))
{
bulkCopy.WriteToServer(dataTable);
}
}
transaction.Commit();
}
當嘗試編寫第二個 DataTable 時,我得到了上述錯誤,這很容易解釋:我想我應該為每個 DataTable 啟動一個新事務。 因為我希望整個傳輸是一個全有或全無的操作,所以我猶豫要相應地更改代碼。 那么 - Oracle 19c 中是否有任何設置可以重新啟用我在 Oracle 12c 中看到的行為?
來自 Oracle 的 Alex Keh 確認每個WriteToServer()
調用都必須在其自己的Transaction
內,因此程序流程必須是:
foreach (var dataTable in dataTables)
{
using (var bulkCopy = new OracleBulkCopy(connection))
{
using (var transaction = connection.BeginTransaction())
{
bulkCopy.WriteToServer(dataTable);
transaction.Commit();
}
}
}
在這里討論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.