4 Replies Latest reply: Aug 19, 2012 5:43 AM by APC RSS

    what is means ? /*+ ROWID (dda) */

    685216
      Hi everyone

      i'm tested to DBMS_PARALLEL_EXECUTE of 11gR2 NF

      refer to link
      http://docs.oracle.com/cd/E11882_01/appdev.112/e10577/d_parallel_ex.htm
      http://www.oracle-base.com/articles/11g/dbms_parallel_execute_11gR2.php


      I saw ' /*+ ROWID (dda) */ ' to the many blogs and the document.

      *' /*+ ROWID (dda) */ ' hint is correct or incorrect ??*

      I think, " /*+ ROWID(t) */ " is right


      example :

      DECLARE
      l_sql_stmt VARCHAR2(32767);
      BEGIN
      l_sql_stmt := 'UPDATE /*+ ROWID (dda) */ test_tab t
      SET t.num_col = t.num_col + 10
      WHERE rowid BETWEEN :start_id AND :end_id';

      DBMS_PARALLEL_EXECUTE.run_task(task_name => 'test_task',
      sql_stmt => l_sql_stmt,
      language_flag => DBMS_SQL.NATIVE,
      parallel_level => 10);
      END;
      /
        • 1. Re: what is means ? /*+ ROWID (dda) */
          sb92075
          Taerang wrote:
          Hi everyone

          i'm tested to DBMS_PARALLEL_EXECUTE of 11gR2 NF

          refer to link
          http://docs.oracle.com/cd/E11882_01/appdev.112/e10577/d_parallel_ex.htm
          http://www.oracle-base.com/articles/11g/dbms_parallel_execute_11gR2.php


          I saw ' /*+ ROWID (dda) */ ' to the many blogs and the document.

          *' /*+ ROWID (dda) */ ' hint is correct or incorrect ??*

          I think, " /*+ ROWID(t) */ " is right


          example :

          DECLARE
          l_sql_stmt VARCHAR2(32767);
          BEGIN
          l_sql_stmt := 'UPDATE /*+ ROWID (dda) */ test_tab t
          SET t.num_col = t.num_col + 10
          WHERE rowid BETWEEN :start_id AND :end_id';

          DBMS_PARALLEL_EXECUTE.run_task(task_name => 'test_task',
          sql_stmt => l_sql_stmt,
          language_flag => DBMS_SQL.NATIVE,
          parallel_level => 10);
          END;
          /
          what does EXPLAIN PLAN show for both hints?
          • 2. Re: what is means ? /*+ ROWID (dda) */
            Peter Gjelstrup
            Hi that is an optimizer hint, alright.


            But strange that recent versions of Oracle docs refer to it, siince last version where it was documented was 9.2:

            http://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5104


            Regards
            Peter
            • 3. Re: what is means ? /*+ ROWID (dda) */
              rp0428
              >
              I saw ' /*+ ROWID (dda) */ ' to the many blogs and the document.

              ' /+ ROWID (dda) / ' hint is correct or incorrect ??

              I think, " /*+ ROWID(t) */ " is right
              >
              Neither is right anymore. When the hint was available (prior to 10gr1) the element in the parentheses had to be the table name or alias. The examples shown in the doc are incorrect that use 'dda' when that is not an alias or the name of a table.

              The ROWID hint was deprecated when Oracle 10gr1 was introduced and apparently the docs were not updated.
              http://docs.oracle.com/cd/B13789_01/server.101/b10752/whatsnew.htm
              >
              Additional Deprecated Optimizer Hints

              The AND_EQUAL, HASH_AJ, MERGE_AJ, NL_AJ, HASH_SJ, MERGE_SJ, NL_SJ, EXPAND_GSET_TO_UNION, ORDERED_PREDICATES, ROWID, and STAR hints have been deprecated and should not be used.
              • 4. Re: what is means ? /*+ ROWID (dda) */
                APC
                Good detective work!

                Cheers, APC