Search notes:

Oracle: V$SQLAREA

select
  to_char(sum(sharable_mem  ) / 1024/1024, '999,999')   total_sharable_mem_mb,
  to_char(sum(persistent_mem) / 1024/1024, '999,999')   total_persistent_mem_mb,
  to_char(sum(runtime_mem   ) / 1024/1024, '999,999')   total_runtime_mem_mb
from
  v$sqlarea;
Github repository oracle-patterns, path: /Installed/dynamic-performance-views/sql/area/memory-usage.sql

ADDRESS and SQL_ID identify records in V$SQLAREA uniquely

sql_id is unique in v$sqlarea and thus identifies a record in v$sqlarea.
--
--  sql_id is unique in v$sqlarea:
--
select
  count(*),
  sql_id
from
  v$sqlarea
group by
  sql_id
order by
  count(*) desc;
Github repository oracle-patterns, path: /Installed/dynamic-performance-views/sql/area/sql_id-unique.sql
The value of address also uniquely identifies a record in v$sqlarea:
select
   count(*),
   address
from
   v$sqlarea
group by
   address
order by
   count(*) desc;
Github repository oracle-patterns, path: /Installed/dynamic-performance-views/sql/area/address-unique.sql

Joining with DBA_USERS

The value of parsing_user_id can be joined with dba_users. This allows to get a rough (!) estimation of what SQL statements a user has recently executed.
select
-- sql.last_active_time,
   round((sysdate - sql.last_active_time) * 24*60*60) last_active_secs_ago,
-- sql.first_load_time,
   sql.sql_id,
   sql.sql_text,
   sql.executions,
   sql.parse_calls,
   sql.last_load_time,
   sql.*
from
   v$sqlarea   sql                                        join
   dba_users   usr on sql.parsing_user_id = usr.user_id
where
   usr.username = user
order by
   sql.last_active_time desc
;
Github repository oracle-patterns, path: /Installed/dynamic-performance-views/sql/area/parsed-by-user.sql

See also

v$sql and difference between v$sql and v$sqlarea.
Columns plan_hash_value and full_plan_hash_value
dbms_shared_pool.sizes
Oracle Dynamic Performance Views

Index