Wednesday 8 April 2020

ACFS Error - ORA-15032: not all alterations performed || ORA-15477: cannot communicate with the volume driver


  • 2 nodes RAC installed on SLES 12 SP5 OS  Kernal 4.12.14-120-default  , While creating ACFS volume we found error  on command prompt. Due to bug we are unable to create ACFS volume. 
Please find details below.


SQL> !uname -r
4.12.14-120-default

SQL> !uname -a
Linux suse1 4.12.14-120-default #1 SMP Thu Nov 7 16:39:09 UTC 2019 (fd9dc36) x86_64 x86_64 x86_64 GNU/Linux

SQL> set lines 200
SQL> select NAME,COMPATIBILITY,DATABASE_COMPATIBILITY,STATE from v$asm_diskgroup;

NAME                           COMPATIBILITY                                                DATABASE_COMPATIBILITY                                       STATE
------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ -----------
ACFS                           12.1.0.0.0                                                   12.1.0.0.0                                                   MOUNTED
FRA                            12.1.0.0.0                                                   12.1.0.0.0                                                   MOUNTED
DATA                           12.1.0.0.0                                                   12.1.0.0.0                                                   MOUNTED
CRS                            12.1.0.0.0                                                   12.1.0.0.0                                                   MOUNTED

SQL>
SQL> select volume_name,volume_device from v$asm_volume;

no rows selected

SQL> alter diskgroup ACFS add volume volume1 size 9g;
alter diskgroup ACFS add volume volume1 size 9g
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15477: cannot communicate with the volume driver


SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
grid@suse1:/u01> asmcmd
ASMCMD> volcreate -G ACFS -s 9G SHAREDVOL1
ORA-15032: not all alterations performed
ORA-15477: cannot communicate with the volume driver (DBD ERROR: OCIStmtExecute)
ASMCMD>

( We will apply patch and upload blogs soon )

Thursday 2 April 2020

PT - Hints using Join Method examples

JOIN Methods

  • Joins Methods
  1. USE_NL ( Nested loop)
  2. USE_HASH (hash join methods)
  3. USE_MERGE (merge join methods)

/*+ USE_NL(EMP) */ 


SQL> SELECT /*+ USE_NL(EMP) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND EMP_NO=630;

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       630 BHBBDMIC NREB        Sales


Execution Plan
----------------------------------------------------------
Plan hash value: 4081233386

----------------------------------------------------------------------------------------
| Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |         |     1 |    36 |     3   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |         |     1 |    36 |     3   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    23 |     2   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    13 |     1   (0)| 00:00:01 |
|*  5 |    INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("EMP_NO"=630)
   5 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          5  consistent gets
          0  physical reads
          0  redo size
        695  bytes sent via SQL*Net to client
        608  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL>

############################################################

/*+ USE_NL(EMP) */   

SQL>  SELECT /*+ USE_NL(EMP) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND DEPT.DEPT_NO=10


Execution Plan
----------------------------------------------------------
Plan hash value: 1706465873

------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |         |   113 |  4068 |     4   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                        |         |   113 |  4068 |     4   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID        | DEPT    |     1 |    13 |     1   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN                 | DEPT_PK |     1 |       |     0   (0)| 00:00:01 |
|   4 |   TABLE ACCESS BY INDEX ROWID BATCHED| EMP     |   113 |  2599 |     3   (0)| 00:00:01 |
|*  5 |    INDEX RANGE SCAN                  | DEPT_IX |   113 |       |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("DEPT"."DEPT_NO"=10)
   5 - access("EMP"."DEPT_NO"=10)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
         22  consistent gets
          0  physical reads
          0  redo size
       4812  bytes sent via SQL*Net to client
        685  bytes received via SQL*Net from client
          9  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        113  rows processed


SQL>

#################################################################################

/*+ LEADING (DEPT) USE_NL(EMP) */


SQL> SELECT /*+ LEADING (DEPT) USE_NL(EMP) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND EMP_NO=630;

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       630 BHBBDMIC NREB        Sales


Execution Plan
----------------------------------------------------------
Plan hash value: 1668757792

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     1 |    36 |    10   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |        |     1 |    36 |    10   (0)| 00:00:01 |
|   2 |   NESTED LOOPS               |        |     7 |    36 |    10   (0)| 00:00:01 |
|   3 |    TABLE ACCESS FULL         | DEPT   |     7 |    91 |     3   (0)| 00:00:01 |
|*  4 |    INDEX UNIQUE SCAN         | EMP_PK |     1 |       |     0   (0)| 00:00:01 |
|*  5 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    23 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("EMP_NO"=630)
   5 - filter("DEPT"."DEPT_NO"="EMP"."DEPT_NO")


Statistics
----------------------------------------------------------
          1  recursive calls
          2  db block gets
         24  consistent gets
          0  physical reads
          0  redo size
        695  bytes sent via SQL*Net to client
        608  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL>

#################################################################################

/*+ LEADING (EMP) USE_NL(EMP) */ 

SQL> SELECT /*+ LEADING (EMP) USE_NL(EMP) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND DEPT.DEPT_NO=10
113 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2375772551

------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |         |   113 |  4068 |     4   (0)| 00:00:01 |
|*  1 |  HASH JOIN                           |         |   113 |  4068 |     4   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID BATCHED| EMP     |   113 |  2599 |     3   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN                  | DEPT_IX |   113 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS BY INDEX ROWID        | DEPT    |     1 |    13 |     1   (0)| 00:00:01 |
|*  5 |    INDEX UNIQUE SCAN                 | DEPT_PK |     1 |       |     0   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   3 - access("EMP"."DEPT_NO"=10)
   5 - access("DEPT"."DEPT_NO"=10)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          6  consistent gets
          0  physical reads
          0  redo size
       4812  bytes sent via SQL*Net to client
        685  bytes received via SQL*Net from client
          9  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        113  rows processed


SQL>

#################################################################################

/*+ USE_HASH(DEPT) */


SQL> SELECT /*+ USE_HASH(DEPT) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND EMP_NO=630;

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       630 BHBBDMIC NREB        Sales


Execution Plan
----------------------------------------------------------
Plan hash value: 300184293

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     1 |    36 |     5   (0)| 00:00:01 |
|*  1 |  HASH JOIN                   |        |     1 |    36 |     5   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    23 |     2   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN         | EMP_PK |     1 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS FULL          | DEPT   |     7 |    91 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   3 - access("EMP_NO"=630)


Statistics
----------------------------------------------------------
          1  recursive calls
          2  db block gets
         11  consistent gets
          0  physical reads
          0  redo size
        695  bytes sent via SQL*Net to client
        608  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL>



#################################################################################


 /*+ USE_HASH(DEPT) */ 


SQL> SELECT /*+ USE_HASH(DEPT) */    EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND EMP_NO BETWEEN 630 AND 649;

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       630 BHBBDMIC NREB        Sales
       649 GFGGXWADB ERQPA      Sales
       632 ZAYEY MQKDN          Sales
       633 VYXNIUTPE SZABML     Sales
       634 ZRPLO WIIJCEE        Sales
       635 FNTAMOSA GKSDYNDFH   Sales
       636 UGVRWYU JIFNV        Sales
       637 ZDZYA ROKMN          Sales
       638 QWFLXKS TXAFNBXQ     Sales
       639 CDIJZAFS IELKDO      Sales
       640 OHRDAIMZYU MBOQ      Sales

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       641 QBYUFOE WMTHK        Sales
       642 MYAOCG ZNGHA         Sales
       643 AFMNHMSMN TQXPDCN    Sales
       644 TGVLD FUNKBF         Sales
       645 PXIRVC QLSKHNX       Sales
       646 ORIEORIVX RQOBFUYV   Sales
       647 SOMQC BRPOBCJJQ      Sales
       648 VCJMRT GQGFCABY      Sales
       631 VQILI ACXTZ          Sales

20 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 963559778

-------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |         |    17 |   612 |     6  (17)| 00:00:01 |
|   1 |  MERGE JOIN                           |         |    17 |   612 |     6  (17)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID         | DEPT    |     7 |    91 |     2   (0)| 00:00:01 |
|   3 |    INDEX FULL SCAN                    | DEPT_PK |     7 |       |     1   (0)| 00:00:01 |
|*  4 |   SORT JOIN                           |         |    17 |   391 |     4  (25)| 00:00:01 |
|   5 |    TABLE ACCESS BY INDEX ROWID BATCHED| EMP     |    17 |   391 |     3   (0)| 00:00:01 |
|*  6 |     INDEX RANGE SCAN                  | EMP_PK  |    17 |       |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
       filter("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   6 - access("EMP_NO">=630 AND "EMP_NO"<=649)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
       1398  bytes sent via SQL*Net to client
        619  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
         20  rows processed

SQL>

#################################################################################

 /*+ LEADING(EMP) USE_HASH(DEPT) */   

SQL> SELECT /*+ LEADING(EMP) USE_HASH(DEPT) */        EMP_NO,ENAME,DNAME   FROM EMP, DEPT WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND EMP_NO BETWEEN 630 AND 649;

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       630 BHBBDMIC NREB        Sales
       631 VQILI ACXTZ          Sales
       632 ZAYEY MQKDN          Sales
       633 VYXNIUTPE SZABML     Sales
       634 ZRPLO WIIJCEE        Sales
       635 FNTAMOSA GKSDYNDFH   Sales
       636 UGVRWYU JIFNV        Sales
       637 ZDZYA ROKMN          Sales
       638 QWFLXKS TXAFNBXQ     Sales
       639 CDIJZAFS IELKDO      Sales
       640 OHRDAIMZYU MBOQ      Sales

    EMP_NO ENAME                DNAME
---------- -------------------- ----------------------
       641 QBYUFOE WMTHK        Sales
       642 MYAOCG ZNGHA         Sales
       643 AFMNHMSMN TQXPDCN    Sales
       644 TGVLD FUNKBF         Sales
       645 PXIRVC QLSKHNX       Sales
       646 ORIEORIVX RQOBFUYV   Sales
       647 SOMQC BRPOBCJJQ      Sales
       648 VCJMRT GQGFCABY      Sales
       649 GFGGXWADB ERQPA      Sales

20 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3860232458

-----------------------------------------------------------------------------------------------
| Id  | Operation                            | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |        |    17 |   612 |     6   (0)| 00:00:01 |
|*  1 |  HASH JOIN                           |        |    17 |   612 |     6   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID BATCHED| EMP    |    17 |   391 |     3   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN                  | EMP_PK |    17 |       |     2   (0)| 00:00:01 |
|   4 |   TABLE ACCESS FULL                  | DEPT   |     7 |    91 |     3   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   3 - access("EMP_NO">=630 AND "EMP_NO"<=649)


Statistics
----------------------------------------------------------
          1  recursive calls
          2  db block gets
         12  consistent gets
          0  physical reads
          0  redo size
       1398  bytes sent via SQL*Net to client
        619  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         20  rows processed

SQL>

######################################################################

/*+ USE_MERGE(JOBS) */  


SQL>  SELECT /*+ USE_MERGE(JOBS) */        EMP_NO,ENAME,DNAME,JOB_NAME   FROM EMP, DEPT, JOBS WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND JOBS.JOB_CODE = EMP.JOB_CODE


879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2759725659

-----------------------------------------------------------------------------------------
| Id  | Operation                     | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |         |   879 | 51861 |    11  (10)| 00:00:01 |
|*  1 |  HASH JOIN                    |         |   879 | 51861 |    11  (10)| 00:00:01 |
|   2 |   TABLE ACCESS FULL           | DEPT    |     7 |    91 |     3   (0)| 00:00:01 |
|   3 |   MERGE JOIN                  |         |   879 | 40434 |     8  (13)| 00:00:01 |
|   4 |    TABLE ACCESS BY INDEX ROWID| JOBS    |    23 |   414 |     2   (0)| 00:00:01 |
|   5 |     INDEX FULL SCAN           | JOBS_PK |    23 |       |     1   (0)| 00:00:01 |
|*  6 |    SORT JOIN                  |         |   879 | 24612 |     6  (17)| 00:00:01 |
|   7 |     TABLE ACCESS FULL         | EMP     |   879 | 24612 |     5   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   6 - access("JOBS"."JOB_CODE"="EMP"."JOB_CODE")
       filter("JOBS"."JOB_CODE"="EMP"."JOB_CODE")


Statistics
----------------------------------------------------------
          1  recursive calls
          4  db block gets
         38  consistent gets
          0  physical reads
          0  redo size
      33712  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
        879  rows processed


SQL>

PT - Hints Using ORDERED and LEADING Examples

Using ORDERED and LEADING Hints

  • Join Order
  1. Ordered
  2. Leading

SQL>  SELECT /*+ FULL(E) FULL(D) */ E.EMP_NO, E.ENAME,  D.DNAME FROM EMP E, DEPT D WHERE E.DEPT_NO = D.DEPT_NO
879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 615168685

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |   879 | 31644 |     8   (0)| 00:00:01 |
|*  1 |  HASH JOIN         |      |   879 | 31644 |     8   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| DEPT |     7 |    91 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMP  |   879 | 20217 |     5   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("E"."DEPT_NO"="D"."DEPT_NO")


Statistics
----------------------------------------------------------
        108  recursive calls
          4  db block gets
        191  consistent gets
          0  physical reads
          0  redo size
      33392  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          9  sorts (memory)
          0  sorts (disk)
        879  rows processed


ORDERED 

SQL>  SELECT /*+ ORDERED FULL(E) FULL(D) */ E.EMP_NO, E.ENAME,  D.DNAME FROM EMP E, DEPT D WHERE E.DEPT_NO = D.DEPT_NO
879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 1123238657

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |   879 | 31644 |     8   (0)| 00:00:01 |
|*  1 |  HASH JOIN         |      |   879 | 31644 |     8   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| EMP  |   879 | 20217 |     5   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| DEPT |     7 |    91 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("E"."DEPT_NO"="D"."DEPT_NO")


Statistics
----------------------------------------------------------
          5  recursive calls
          4  db block gets
         24  consistent gets
          0  physical reads
          0  redo size
      33350  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        879  rows processed



LEADING

Here Leading table is DEPT

SQL>  SELECT /*+ LEADING(DEPT) FULL(EMP) FULL(DEPT) FULL(JOBS) */        EMP_NO,ENAME,DNAME,JOB_NAME FROM   DEPT, EMP, JOBS WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND JOBS.JOB_CODE = EMP.JOB_CODE
879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 371351835

----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |   879 | 51861 |    11   (0)| 00:00:01 |
|*  1 |  HASH JOIN          |      |   879 | 51861 |    11   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL | JOBS |    23 |   414 |     3   (0)| 00:00:01 |
|*  3 |   HASH JOIN         |      |   879 | 36039 |     8   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| DEPT |     7 |    91 |     3   (0)| 00:00:01 |
|   5 |    TABLE ACCESS FULL| EMP  |   879 | 24612 |     5   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("JOBS"."JOB_CODE"="EMP"."JOB_CODE")
   3 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")


Statistics
----------------------------------------------------------
         57  recursive calls
         17  db block gets
        174  consistent gets
          0  physical reads
       1988  redo size
      33815  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          8  sorts (memory)
          0  sorts (disk)
        879  rows processed


SQL>

LEADING

Here EMP table is leading

SQL> SELECT /*+ LEADING(EMP) FULL(EMP) FULL(DEPT) FULL(JOBS) */        EMP_NO,ENAME,DNAME,JOB_NAME FROM   DEPT, EMP, JOBS WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND JOBS.JOB_CODE = EMP.JOB_CODE
879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 495423756

----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |   879 | 51861 |    11   (0)| 00:00:01 |
|*  1 |  HASH JOIN          |      |   879 | 51861 |    11   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL | DEPT |     7 |    91 |     3   (0)| 00:00:01 |
|*  3 |   HASH JOIN         |      |   879 | 40434 |     8   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| EMP  |   879 | 24612 |     5   (0)| 00:00:01 |
|   5 |    TABLE ACCESS FULL| JOBS |    23 |   414 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")
   3 - access("JOBS"."JOB_CODE"="EMP"."JOB_CODE")


Statistics
----------------------------------------------------------
          9  recursive calls
          6  db block gets
         35  consistent gets
          0  physical reads
          0  redo size
      33715  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        879  rows processed



LEADING


Leading tables are EMPDEPT and JOBS

SQL> SELECT /*+ LEADING(EMP DEPT JOBS) FULL(EMP) FULL(DEPT) FULL(JOBS) */        EMP_NO,ENAME,DNAME,JOB_NAME   FROM DEPT, EMP, JOBS WHERE  DEPT.DEPT_NO = EMP.DEPT_NO AND JOBS.JOB_CODE = EMP.JOB_CODE
SQL>
879 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2955934646

----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |   879 | 51861 |    11   (0)| 00:00:01 |
|*  1 |  HASH JOIN          |      |   879 | 51861 |    11   (0)| 00:00:01 |
|   2 |   TABLE ACCESS FULL | JOBS |    23 |   414 |     3   (0)| 00:00:01 |
|*  3 |   HASH JOIN         |      |   879 | 36039 |     8   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| EMP  |   879 | 24612 |     5   (0)| 00:00:01 |
|   5 |    TABLE ACCESS FULL| DEPT |     7 |    91 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("JOBS"."JOB_CODE"="EMP"."JOB_CODE")
   3 - access("DEPT"."DEPT_NO"="EMP"."DEPT_NO")


Statistics
----------------------------------------------------------
          9  recursive calls
          6  db block gets
         34  consistent gets
          0  physical reads
          0  redo size
      33718  bytes sent via SQL*Net to client
       1246  bytes received via SQL*Net from client
         60  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        879  rows processed

SQL>