请帮我解决这个问题:
它是一个文件上传系统(Classic ASP + VB6 Com +):用户将txt文件上传到Oracle DB。现在问题是系统在将数据上传到包含一些记录的表中时会挂起(大约500,000行,大小约40MB,不是很大)。如果我截断表格,则上传将成功完成。
上传逻辑:它读取文件,一次发送1000条记录到服务器,VB使用UPDATEBATCH通过ODBC提交插入。问题是它只提交前1000条记录。如果IIS中的ASP超时设置是默认的90秒,则会出现ASP超时消息错误。我将设置增加到更大的数字(9000),然后在插入前1000条记录后挂起。但是,这只发生在PROD上。我将表结构和数据从PROD复制到DEV,然后上传了相同的文件,它在DEV上工作正常。
这是表创建脚本:
CREATE TABLE TableA
(
ID NUMBER(12) NOT NULL,
ColA NUMBER(12) NOT NULL,
ColB NUMBER(5) NOT NULL,
ColC CHAR(2 BYTE),
ColD VARCHAR2(2000 BYTE)
....
)
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 25
STORAGE (
INITIAL 24K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
非常感谢任何建议/帮助
答案 0 :(得分:0)
跟踪在服务器上执行更新的会话并查看相应的等待事件。
可以通过设置10046事件来跟踪会话,同时连接到此会话并在开始加载过程之前。
alter session set events '10046 trace name context forever, level 12"
这将在服务器上创建可以分析的跟踪文件。这些文件存储在服务器上,因此您的DBA需要允许您访问这些文件。还存在其他选项,例如使用ASH,但无论如何,您的DBA应该知道此选项。