The value of object_alias is either null or matches the regular expression"[^"]+"@"[^"]+"$, the following SQL statement does not return a record (at least I never encountered one):
select count(*) from v$sql_plan where not regexp_like(object_alias, '"[^"]+"@"[^"]+"$');
The second part (after the @, which is enclosed in "…") seems to correspond to a qblock name.
select
object_alias,
--
-- If not using an alias in the SQL statement, the first part of the object alias
-- is equal to the object_name. Note, that object_name can also refer to an index
-- in which case othe first part of the object alias is null:
regexp_replace(object_alias, '^"([^"]+)"@"[^"]+"$', '\1') object_alias_part_1,
object_name,
--
-- Often, the second part of the object alias is equal to the qblock_name (
-- especially if qblock_name is not using the hash-semantics (SEL$12EC7C91):
regexp_replace(object_alias, '^"[^"]+"@"([^"]+)"$', '\1') object_alias_part_2,
qblock_name,
-- -----
object_type,
operation
-- v$sql_plan.*
from
v$sql_plan;