product_user_profile arrow, pointing to the table (to the left): The system user gets a private synonym that points to the table, and not the
view. This prevents the system user from being constrained by the view and allows him or her to see everything.
product_user_profile arrow, pointing to the view (to the right): PUPBLD creates a public synonym named product_user_profile that points to the product_profile view. This is what SQL*Plus queries against when a user logs on.
product_profile arrow: This is also a public synonym and also points to the product_profile view.
sqlplus_product_profile table: This table contains command and role restrictions for SQL*Plus users. Prior to the release of Oracle8i (i.e., prior to 8.1.5), this table was named product_profile. Database users are not granted access to this table. Only the system user can see it.
product_profile view: This view is written in such a way as to return only those rows from the sqlplus_product_profile table that apply to the user who queries it. SELECT access on this view is granted to public. This allows a product such as SQL*Plus to query the product user profile for a given user without having to have access to the underlying table.