0

请帮助我解决这个问题:

它是一个文件上传系统(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;

非常感谢任何建议/帮助

4

1 回答 1

0

跟踪在服务器上进行更新的会话并查看相应的等待事件。

可以通过设置 10046 事件来跟踪会话,同时连接到此会话并在开始加载过程之前。

alter session set events '10046 trace name context forever, level 12"

这将在服务器上创建可以分析的跟踪文件。这些文件存储在服务器上,因此您的 DBA 需要授予您对这些文件的访问权限。其他选项也存在,例如使用 ASH,但您的 DBA 无论如何都应该知道这个选项。

于 2012-08-18T20:18:28.780 回答