This was first published on https://blog.dbi-services.com/explain-plan-format (2018-01-24)
Republishing here for new followers. The content is related to the the versions available at the publication date

Explain Plan format

The DBMS_XPLAN format accepts a lot of options, which are not all documented. Here is a small recap of available information.

The minimum that is displayed is the Plan Line Id, the Operation, and the Object Name. You can add columns and/or sections with options, such as ‘rows’, optionally starting with a ‘+’ like ‘+rows’. Some options group several additional information, such ‘typical’, which is also the default, or ‘basic’, ‘all’, ‘advanced’. You can choose one of them and remove some columns, with ‘-‘, such as ‘typical -rows -bytes -cost -plan_hash -predicate -remote -parallel -partition -note’. Finally, from an cursor executed with plan statistics, you can show all execution statistics with ‘allstats’, and the last execution statistics with ‘allstats last’. Subsets of ‘allstats’ are ‘rowstats’, ‘memstats’, ‘iostats’, buffstats’.

Of course, the column/section is displayed only if the information is present.

This blog post shows what is display by which option, as of 12cR2, and probably with some missing combinations.

+plan_hash, or BASIC

PLAN_TABLE_OUTPUT
-----------------
Plan hash value: 1338588353
Plan hash value: is displayed by ‘basic +plan_hash’ or ‘typical’ or ‘all’ or ‘advanced’

+rows +bytes +cost +partition +parallel, or TYPICAL

-----------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                 | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop | TQ/Ins |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |          |   287 | 19516 |     5  (20)| 00:00:01 |       |       |        |      |            |
|   1 |  PX COORDINATOR           |          |       |       |            |          |       |       |        |      |            |
|   2 |   PX SEND QC (ORDER)      | :TQ10002 |   287 | 19516 |     5  (20)| 00:00:01 |       |       |  Q1,02 | P->S | QC (ORDER) |
|   3 |    SORT ORDER BY          |          |   287 | 19516 |     5  (20)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
|   4 |     PX RECEIVE            |          |   287 | 19516 |     4   (0)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
|   5 |      PX SEND RANGE        | :TQ10001 |   287 | 19516 |     4   (0)| 00:00:01 |       |       |  Q1,01 | P->P | RANGE      |
|*  6 |       HASH JOIN           |          |   287 | 19516 |     4   (0)| 00:00:01 |       |       |  Q1,01 | PCWP |            |
|   7 |        PX BLOCK ITERATOR  |          |    14 |   532 |     2   (0)| 00:00:01 |     1 |     1 |  Q1,01 | PCWC |            |
|   8 |         TABLE ACCESS FULL | EMP      |    14 |   532 |     2   (0)| 00:00:01 |     1 |     1 |  Q1,01 | PCWP |            |
|   9 |        BUFFER SORT        |          |       |       |            |          |       |       |  Q1,01 | PCWC |            |
|  10 |         PX RECEIVE        |          |    82 |  2460 |     2   (0)| 00:00:01 |       |       |  Q1,01 | PCWP |            |
|  11 |          PX SEND BROADCAST| :TQ10000 |    82 |  2460 |     2   (0)| 00:00:01 |       |       |        | S->P | BROADCAST  |
|  12 |           REMOTE          | DEPT     |    82 |  2460 |     2   (0)| 00:00:01 |       |       | LOOPB~ | R->S |            |
-----------------------------------------------------------------------------------------------------------------------------------

Rows or E-Rows: is displayed by ‘basic +rows’ or ‘typical’ or ‘all’ or ‘advanced’ Bytes or E-Bytes: is displayed by ‘basic +bytes’ or ‘typical’ or ‘all’ or ‘advanced’ Cost: is displayed by ‘basic +cost’ or ‘typical’ or ‘all’ or ‘advanced’ TmpSpc or E-Temp: is displayed by ‘basic +bytes’ or ‘typical’ or ‘all’ or ‘advanced’ Time or E-Time: is displayed by ‘typical’ or ‘all’ or ‘advanced’ Pstart/Pstop: is displayed by ‘basic +partition’ or ‘typical’ or ‘all’ or ‘advanced’ TQ/Ins, IN-OUT, PQ Distrib: is displayed by ‘basic +parallel’ or ‘typical’ or ‘all’ or ‘advanced’

The ‘A-‘ and ‘E-‘ prefixes are used when displaying execution statistics, to differentiate estimations with actual numbers

+alias

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$58A6D7F6
   8 - SEL$58A6D7F6 / EMP@SEL$1
  12 - SEL$58A6D7F6 / DEPT@SEL$1
Query Block Name / Object Alias: is displayed by ‘basic +alias’ or ‘typical +alias’ or ‘all’ or ‘advanced’

+outline

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      PQ_DISTRIBUTE(@"SEL$58A6D7F6" "DEPT"@"SEL$1" NONE BROADCAST)
      USE_HASH(@"SEL$58A6D7F6" "DEPT"@"SEL$1")
      LEADING(@"SEL$58A6D7F6" "EMP"@"SEL$1" "DEPT"@"SEL$1")
      FULL(@"SEL$58A6D7F6" "DEPT"@"SEL$1")
      FULL(@"SEL$58A6D7F6" "EMP"@"SEL$1")
      OUTLINE(@"SEL$1")
      OUTLINE(@"SEL$2")
      MERGE(@"SEL$1" >"SEL$2")
      OUTLINE_LEAF(@"SEL$58A6D7F6")
      ALL_ROWS
      DB_VERSION('12.2.0.1')
      OPTIMIZER_FEATURES_ENABLE('12.2.0.1')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */
Outline Data: is displayed by ‘basic +outline’ or ‘typical +outline’ or ‘all +outline’ or ‘advanced’

+peeked_binds

Peeked Binds (identified by position):
--------------------------------------

   1 - :X (VARCHAR2(30), CSID=873): 'x'
Peeked Binds: is displayed by ‘basic +peeked_binds’ or ‘typical +peeked_binds’ or ‘all +outline’ or ‘advanced’

+predicate

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

   6 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
Predicate Information: is displayed by ‘basic +predicate’ or ‘typical’ or ‘all’ or ‘advanced’

+column

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - INTERNAL_FUNCTION("DEPT"."DEPTNO")[22], "EMP"."EMPNO"[NUMBER,22], "EMP"."ENAME"[VARCHAR2,10],
       "EMP"."JOB"[VARCHAR2,9], "EMP"."MGR"[NUMBER,22], "EMP"."HIREDATE"[DATE,7], "EMP"."SAL"[NUMBER,22],
       "EMP"."COMM"[NUMBER,22], "DEPT"."DNAME"[VARCHAR2,14], "DEPT"."LOC"[VARCHAR2,13]
   2 - (#keys=0) INTERNAL_FUNCTION("DEPT"."DEPTNO")[22], "EMP"."EMPNO"[NUMBER,22], "EMP"."ENAME"[VARCHAR2,10],
       "EMP"."JOB"[VARCHAR2,9], "EMP"."MGR"[NUMBER,22], "EMP"."HIREDATE"[DATE,7], "EMP"."SAL"[NUMBER,22],
       "EMP"."COMM"[NUMBER,22], "DEPT"."DNAME"[VARCHAR2,14], "DEPT"."LOC"[VARCHAR2,13]
   3 - (#keys=1) INTERNAL_FUNCTION("DEPT"."DEPTNO")[22], "EMP"."EMPNO"[NUMBER,22], "EMP"."ENAME"[VARCHAR2,10],
       "EMP"."JOB"[VARCHAR2,9], "EMP"."MGR"[NUMBER,22], "EMP"."HIREDATE"[DATE,7], "EMP"."SAL"[NUMBER,22],
       "EMP"."COMM"[NUMBER,22], "DEPT"."DNAME"[VARCHAR2,14], "DEPT"."LOC"[VARCHAR2,13]
   4 - INTERNAL_FUNCTION("DEPT"."DEPTNO")[22], "EMP"."EMPNO"[NUMBER,22], "EMP"."ENAME"[VARCHAR2,10],
       "EMP"."JOB"[VARCHAR2,9], "EMP"."MGR"[NUMBER,22], "EMP"."HIREDATE"[DATE,7], "EMP"."SAL"[NUMBER,22],
       "EMP"."COMM"[NUMBER,22], "DEPT"."DNAME"[VARCHAR2,14], "DEPT"."LOC"[VARCHAR2,13]
Column Projection Information: is displayed by ‘basic +projection’ or ‘typical +projection’ or ‘all’ or ‘advanced’

+remote

Remote SQL Information (identified by operation id):
----------------------------------------------------

  12 - SELECT "DEPTNO","DNAME","LOC" FROM "DEPT" "DEPT" (accessing 'LOOPBACK' )
Remote SQL Information: is displayed by ‘basic +remote’ or ‘typical’ or ‘all’ or ‘advanced’

+metrics

Sql Plan Directive information:
-------------------------------

  Used directive ids:
    9695481911885124390
Sql Plan Directive information: is displayed by ‘+metrics’

+note

The Note section can show information about SQL Profiles, SQL Patch, SQL Plan Baseline, Outlines, Dynamic Sampling, Degree of Parallelism, Parallel Query, Parallel DML, Create Index Size, Cardinality Feedback, Rely Constraints used for transformation, Sub-Optimal XML, Adaptive Plan, GTT private statistics,…

Note
-----
   - Degree of Parallelism is 2 because of table property
   - dynamic statistics used: dynamic sampling (level=2)
   - 1 Sql Plan Directive used for this statement
   - this is an adaptive plan (rows marked '-' are inactive)
Note: is displayed by ‘basic +note’ or ‘typical’ or ‘all’ or ‘advanced’

+adaptive

---------------------------------------------------------------------------------------
|   Id  | Operation                              | Name         |Starts|E-Rows| A-Rows|
---------------------------------------------------------------------------------------
|     0 | SELECT STATEMENT                       |              |    1 |      |     0 |
|     1 |  HASH UNIQUE                           |              |    1 |    1 |     0 |
|  *  2 |   HASH JOIN SEMI                       |              |    1 |    1 |     0 |
|-    3 |    NESTED LOOPS SEMI                   |              |    1 |    1 |     7 |
|-    4 |     STATISTICS COLLECTOR               |              |    1 |      |     7 |
|  *  5 |      TABLE ACCESS FULL                 | DEPARTMENTS  |    1 |    1 |     7 |
|- *  6 |     TABLE ACCESS BY INDEX ROWID BATCHED| EMPLOYEES    |    0 |    1 |     0 |
|- *  7 |      INDEX RANGE SCAN                  | EMP_DEP_IX   |    0 |   10 |     0 |
|  *  8 |    TABLE ACCESS FULL                   | EMPLOYEES    |    1 |    1 |     1 |
---------------------------------------------------------------------------------------
Inactive branches of adaptive plan: is displayed by ‘+adaptive’

+report

Reoptimized plan:
-----------------
This cursor is marked for automatic reoptimization.  The plan that is
expected to be chosen on the next execution is displayed below.
Reoptimized plan: is displayed by ‘+report’

ALLSTATS

---------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                 | Name     | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem |  O/1/M   |
---------------------------------------------------------------------------------------------------------------------------
Starts: is displayed by ‘basic +rowstats’, ‘basic +allstats’ A-Rows: is displayed by ‘basic +rowstats’, ‘basic +allstats’ A-Time: is displayed by ‘typical +rowstats’, ‘basic +allstats’ Buffers, Reads, Writes: is displayed by ‘basic +buffstats’, ‘basic +iostats’, ‘basic +allstats’ OMem, 1Mem, Used-Mem, O/1/M, Used-Mem: is displayed by ‘basic +memstats’, ‘basic +allstats’ Max-Tmp,Used-Tmp is displayed by ‘basic +memstats’, ‘typical +allstats’

With summed stats, O/1/M and Max-Tmp are used for the headers. With last stats, Used-Mem and Used-Tmp.