set autotrace on is just estimate plan?
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/tuning-SQL-Plus.html

8.1.2 Execution Plan
The Execution Plan shows the SQL optimizer's query execution path. Execution Plan output is generated using EXPLAIN PLAN and DBMS_XPLAN.

Yes, it is possible to have a different actual plan. Example:
create table t1 (c1 number);
insert into t1 select 1 from dual connect by level &lt;= 100000;
insert into t1 values (2);
create index i1 on t1(c1);
variable B1 number
exec :B1 := 2;
set autotrace on
select * from t1 where c1 = :B1;

        C1
----------
         2

Execution Plan
----------------------------------------------------------
Plan hash value: 955340196

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      |   933 | 12129 |    59   (2)| 00:00:01 |
|*  1 |  INDEX FAST FULL SCAN| I1   |   933 | 12129 |    59   (2)| 00:00:01 |
-----------------------------------------------------------------------------

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

   1 - filter(&quot;C1&quot;=TO_NUMBER(:B1))

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)


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

But the actual plan was:
SQL&gt; set autotrace off
SQL&gt; select sql_id, sql_text from v$sql where sql_text = 'select * from t1 where c1 = :B1';

SQL_ID        SQL_TEXT
------------- ----------------------------------------
9677k5kzddy78 select * from t1 where c1 = :B1

SQL&gt; select * from table(dbms_xplan.display_cursor('9677k5kzddy78'));

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------
SQL_ID  9677k5kzddy78, child number 0
-------------------------------------
select * from t1 where c1 = :B1

Plan hash value: 1816312439

-------------------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |      |       |       |     1 (100)|          |
|*  1 |  INDEX RANGE SCAN| I1   |     1 |    13 |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------

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

   1 - access(&quot;C1&quot;=:B1)

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)


22 rows selected.