How do I get the DDL used to create function based index?
You can use DBMS_METADATA package.


  The DBMS_METADATA package provides a way for you to retrieve metadata
  from the database dictionary as XML or creation DDL and to submit the
  XML to re-create the object.


For details: Oracle Documentation
DBMS_METADATA

SQL&gt; create table fbi_tab(
  2  a number,
  3  b number,
  4  c number
  5  );

Table created.

SQL&gt; create index idx on fbi_tab(a+b*(c-1),a,b);

Index created.


SQL&gt; select dbms_metadata.get_ddl('INDEX','IDX','HR') from dual;

DBMS_METADATA.GET_DDL('INDEX','IDX','HR')
--------------------------------------------------------------------------------

  CREATE INDEX "HR"."IDX" ON "HR"."FBI_TAB" ("A"+"B"*("C"-1), "A", "B")
  PCTF


SQL&gt;