There is nothing that automatically tracks this, but its easy to implement, for example:
SQL> create or replace
2 procedure MYPROC is
3 s timestamp := localtimestamp;
4 x int;
5 begin
6 select count(*)
7 into x
8 from dba_objects;
9
10 dbms_output.put_line('elapsed = '||(localtimestamp-s));
11 end;
12 /
Procedure created.
SQL>
SQL> set serverout on
SQL> exec myproc
elapsed = +000000000 00:00:00.122000000
PL/SQL procedure successfully completed.
Check out
https://github.com/OraOpenSource/Logger for an instrumentation layer for your code.
To track SQL statements, and their plans, you can use AWR or examine V$SQLSTATS and/or V$SQLPLAN, but that's a large topic. So much so we've got a whole book on it
http://docs.oracle.com/database/121/TGSQL/toc.htm