Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

157

积分

0

好友

14

主题
1#
发表于 2012-8-10 08:54:03 | 查看: 4167| 回复: 1
本帖最后由 clevernby 于 2012-12-27 15:57 编辑

数据库版本11.2.0.3.1 Linux x86-64 2节点集群

首先创建任务并分配chunk,这个过程正常
  1. DECLARE
  2.   l_varTaskName  VARCHAR2(64) := 'correctdata';
  3.   l_nBlockNumber NUMBER := 585534;
  4. BEGIN
  5.   dbms_parallel_execute.create_task(l_varTaskName);
  6.   dbms_parallel_execute.create_chunks_by_rowid(task_name   => l_varTaskName
  7.                                               ,table_owner => 'USER'
  8.                                               ,table_name  => 'TABLE1'
  9.                                               ,by_row      => FALSE
  10.                                               ,chunk_size  => CEIL(l_nBlockNumber / 100));
  11. END;
复制代码
执行后查看dba_parallel_execute_tasks发现status为chunked

然后执行任务,该过程不正常
  1. DECLARE
  2.   l_nParallelDegree NUMBER := 8;
  3.   l_varTaskName     VARCHAR2(64) := 'correctdata';
  4.   l_varSQL          VARCHAR2(4000) := 'update /*+ ROWID(dda) */ USER.TABLE1 SET COL2=COL1 WHERE COL2 IS NULL and rowid between :start_id and :end_id';
  5. BEGIN
  6.   dbms_parallel_execute.run_task(task_name      => l_varTaskName
  7.                                 ,sql_stmt       => l_varSQL
  8.                                 ,language_flag  => DBMS_SQL.native
  9.                                 ,parallel_level => l_nParallelDegree);
  10. END;
复制代码
只花了3秒就结束了,《PL/SQL REF》文档中提到“This procedure returns only when all the chunks are processed”,显然时间不正常。
查看dba_parallel_execute_tasks发现status还是chunked.
  1. TASK_OWNER  TASK_NAME    CHUNK_TYPE   STATUS   TABLE_OWNER  TABLE_NAME  NUMBER_COLUMN   TASK_COMMENT    JOB_PREFIX     SQL_STMT                                             LANGUAGE_FLAG EDITION    APPLY_CROSSEDITION_TRIGGER     FIRE_APPLY_TRIGGER PARALLEL_LEVEL JOB_CLASS
  2. ----------- ------------ ------------ -------- ------------ ----------- --------------- --------------- -------------- ---------------------------------------------------- ------------- ---------- ------------------------------ ------------------ -------------- -----------------
  3. SYSTEM      correctdata  ROWID_RANGE  CHUNKED  USER         TABLE1                                      TASK$_8        update /*+ ROWID(dda) */ USER.TABLE1 SET COL2=COL1               1 ORA$BASE                                  TRUE                            8 DEFAULT_JOB_CLASS
复制代码
而视图dba_parallel_execute_chunks中显示所有chunked的status均为UNASSIGNED

该数据库job_queue_processes=1000

[ 本帖最后由 clevernby 于 2012-8-10 08:58 编辑 ]
2#
发表于 2012-8-10 10:03:33
问题已解决,SQL语句执行出错,但未提示

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 04:32 , Processed in 0.049910 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569