Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调优插入到Oracle数据库中_Oracle - Fatal编程技术网

调优插入到Oracle数据库中

调优插入到Oracle数据库中,oracle,Oracle,关于插入Oracle数据库的一个问题…我有一个代码示例(如下),这段代码将500条记录插入数据库..但插入500条记录需要3分钟..据我所知,表中有索引,服务器是全新的,速度非常快,我做了一些关于网络速度的测试,一切正常,所以我怀疑我的“插入代码”不是很好…有没有一种方法像“加速”插入,或者我忽略了其他东西…所以任何建议都是好的…谢谢 这是“插入”代码示例: myQuery = " INSERT INTO AGR3PL_LINE (IDOC_NUM, SEG_NUM, LINN02, WMLI

关于插入Oracle数据库的一个问题…我有一个代码示例(如下),这段代码将500条记录插入数据库..但插入500条记录需要3分钟..据我所知,表中有索引,服务器是全新的,速度非常快,我做了一些关于网络速度的测试,一切正常,所以我怀疑我的“插入代码”不是很好…有没有一种方法像“加速”插入,或者我忽略了其他东西…所以任何建议都是好的…谢谢

这是“插入”代码示例:

 myQuery = " INSERT INTO AGR3PL_LINE (IDOC_NUM, SEG_NUM, LINN02, WMLI02, CATN02, LQTY02, IUNT02, TOWT02, WUOM02, DTDR02, ORDL02, LOCN02, DEXP02, DPRO02, NOTS02, " +
                                          " PNUM05, PDES05, PTYP05, PCLS05, IUNT05, SUNT05, PUNT05, ISCF05, SPCF05, SHLU05, SHLF05, CSHL05, BATC05, BARC05, ANAC05, WTSU05, WTBU05, CWIT05, DFSS05) " +
                                          " VALUES (" + Lidoc_num + ",'" +
                                                        SEG_NUM_L + "'," +
                                                        (!dr_art_line.Table.Columns.Contains("LineNumber") || dr_art_line["LineNumber"].ToString().Length <= 0 ? 0 : dr_art_line["LineNumber"]) + "," +
                                                        WMLI02 + ",'" +
                                                        (!dr_art_line.Table.Columns.Contains("ItemNumber") || dr_art_line["ItemNumber"].ToString().Length <= 0 ? string.Empty : dr_art_line["ItemNumber"]) + "','" +
                                                        QuantityInIssueUnit_value + "','" +
                                                        QuantityInIssueUnit_uom + "'," +
                                                        QuantityInSecondaryUnit.ToString().Replace(",", ".") + ",'" +
                                                        WUOM02 + "','" +
                                                        DeliveryDate + "'," +
                                                        (!dr_art_line.Table.Columns.Contains("OrderLine") || dr_art_line["OrderLine"].ToString().Length <= 0 ? 0 : dr_art_line["OrderLine"]) + ",'" +
                                                        (!dr_art_line.Table.Columns.Contains("LotNumber") || dr_art_line["LotNumber"].ToString().Length <= 0 ? string.Empty : dr_art_line["LotNumber"]) + "','" +
                                                        ExpirationDate + "','" +
                                                        DateOfProduction + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("Notes") || dr_art_line["Notes"].ToString().Length <= 0 ? string.Empty : dr_art_line["Notes"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("ItemCode") || dr_art_line["ItemCode"].ToString().Length <= 0 ? string.Empty : dr_art_line["ItemCode"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("Description") || dr_art_line["Description"].ToString().Length <= 0 ? string.Empty : dr_art_line["Description"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("ItemType") || dr_art_line["ItemType"].ToString().Length <= 0 ? string.Empty : dr_art_line["ItemType"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("ItemClass") || dr_art_line["ItemClass"].ToString().Length <= 0 ? string.Empty : dr_art_line["ItemClass"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("IssueUnit") || dr_art_line["IssueUnit"].ToString().Length <= 0 ? string.Empty : dr_art_line["IssueUnit"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("StockUnit") || dr_art_line["StockUnit"].ToString().Length <= 0 ? string.Empty : dr_art_line["StockUnit"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("PurchaseUnit") || dr_art_line["PurchaseUnit"].ToString().Length <= 0 ? string.Empty : dr_art_line["PurchaseUnit"]) + "'," +
                                                        IssueToStockConversionFactor.ToString().Replace(",", ".") + "," +
                                                        StockToPurchaseConversionFactor.ToString().Replace(",", ".") + ",'" +
                                                        (!dr_art_line.Table.Columns.Contains("ShelfLifeUnit") || dr_art_line["ShelfLifeUnit"].ToString().Length <= 0 ? 0 : dr_art_line["ShelfLifeUnit"]) + "'," +
                                                        (!dr_art_line.Table.Columns.Contains("ShelfLife") || dr_art_line["ShelfLife"].ToString().Length <= 0 ? 0 : dr_art_line["ShelfLife"]) + "," +
                                                        (!dr_art_line.Table.Columns.Contains("CustomerShelfLife") || dr_art_line["CustomerShelfLife"].ToString().Length <= 0 ? 0 : dr_art_line["CustomerShelfLife"]) + "," +
                                                        MandatoryLot + ",'" +
                                                        (!dr_art_line.Table.Columns.Contains("BarcodeIssueUnit") || dr_art_line["BarcodeIssueUnit"].ToString().Length <= 0 ? string.Empty : dr_art_line["BarcodeIssueUnit"]) + "','" +
                                                        (!dr_art_line.Table.Columns.Contains("BarcodeStockUnit") || dr_art_line["BarcodeStockUnit"].ToString().Length <= 0 ? string.Empty : dr_art_line["BarcodeStockUnit"]) + "'," +
                                                        WeightIssueUnit.ToString().Replace(",", ".") + "," +
                                                        gros_un.ToString().Replace(",", ".") + "," +
                                                        cat_item + ",'" +
                                                        (!dr_art_line.Table.Columns.Contains("DefaultStockStatus") || dr_art_line["DefaultStockStatus"].ToString().Length <= 0 ? string.Empty : dr_art_line["DefaultStockStatus"]) + "')";  
myQuery=“插入AGR3PL行(IDOC\u NUM、SEG\u NUM、LINN02、WMLI02、CATN02、LQTY02、IUNT02、TOWT02、WOUM02、DTDR02、ORDL02、LOCN02、DEXP02、DPRO02、NOTS02,”+
PNUM05、PDES05、PTYP05、PCLS05、IUNT05、SUNT05、PUNT05、ISCF05、SPCF05、SHLU05、SHLF05、CSHL05、BATC05、BARC05、ANAC05、WTSU05、WTBU05、CWIT05、DFSS05+
“值(“+Lidoc_num+”,”+
SEG_NUM_L+“,”+

(!dr_art_line.Table.Columns.Contains(“LineNumber”)| | dr_art_line[“LineNumber”].ToString().Length如果您在等待事件运行时查看了等待事件,并且没有什么明显的变化,那么最好的方法就是跟踪会话。您可以在那里找到答案。有几种跟踪会话的方法。我使用的方法(假设我不需要登录触发器来立即启用它)是:

1) 查找会话的spid
从v$session s、v$process p中选择spid,其中s.paddr=p.addr和s.sid='&sid';

2) 启用oradebug跟踪(作为sysdba)
oradebug setospid和spid
oradebug事件10046永远跟踪名称上下文,级别12

3) 查找跟踪文件(检查diag目录。跟踪文件的名称中将包含spid)-在linux中,通常“ls-lrt”会将其显示为显示列表中的最后一个文件之一

4) 如果要汇总内容,可以在跟踪文件上运行tkprof。如果需要原始详细信息,请查看“.trc”文件(它将显示所有发生的事情、时间以及发生的顺序)

5) 禁用跟踪(如果会话未注销)
oradebug setospid和spid
oradebug event 10046 trace name context off

可能是因为您的代码,请尝试在控制台(标准输出)中打印生成的所有插入。如果与使用DB时一样慢,那么必须优化插入生成如果类型是CLOB,那会更好吗?我只是问,也许,我从来没有和CLOB合作过……你有什么例子吗?