2011-03-03 59 views
4

是否可以通過JDBC在Oracle中執行直接加載INSERT?我目前使用批處理準備語句(通過Spring JDBC),有沒有辦法讓這些繞過NOLOGGING表上的重做日誌?Oracle通過JDBC直接加載INSERT?

這是Oracle 11g。

回答

2

在11gR2中引入了APPEND_VALUES提示,用於使用INSERT ... VALUES插入直接路徑。

沒有可用的11gR2實例來測試它是否適用於JDBC batch inserts。不過值得一試。

+0

謝謝,這很有用;不幸的是我在11.1 – Dmitri 2011-03-04 02:11:27

0

是否

insert /*+ append */ into desttab select * from srctab 

在JDBC不行?

+1

確實如此,但行的源數據庫 – Ronnis 2011-03-04 19:18:55

+0

@Ronnis之外,是啊......我已經按照這個帖子的關注。我在11gr2上,我可能會嘗試一下加里提到的'append_value'提示,但是這對Dmitri無助,(除非他進行升級)。有任何方法可以做很多事情來提高JDBC性能。但那不是問題。乾杯。 – 2011-03-04 20:01:07

3

直接路徑插入僅在insert into x as select * from y方案中可能。這可以使用jdbc來完成,沒問題。這不能通過插入和值來完成。當數據庫處於強制日誌記錄模式時,這也無法完成。大多數情況下,當備用數據庫處於連接狀態時,主數據庫將處於強制日誌記錄模式。

正如Gary Myers所說,自11gR2以來,就有了APPEND_VALUES提示。與「舊」附加提示一樣,它只能用於批量插入。

我希望這可以幫助, 羅納德。

+0

啊,我不知道這不適用於單個插入。 – Dmitri 2011-03-03 21:12:01

+0

另外不要忘記,每個塊都寫入插入....它用於BULK插入。 – 2011-03-04 06:28:21

0

用途:

INSERT /*+ APPEND_VALUES */ INTO table_name (column1, column2) values (?,?);