>>> Access to the SYSTEM table-space does not grant access to any user data.
"Access", here, is a loaded term. Everyone that has permission to create objects has, at least
indirect "access" to the SYSTEM tablespace. This is because whenever anyone does DDL (Data-Definition Language) commands (CREATE, ALTER, DROP), you are affecting the SYSTEM tablespace. Additionally, all users have read access to objects in the SYSTEM tablespace by virtue of SELECT statements against data dictionary objects.
Now, when you mention accessing
user data that resides in the SYSTEM tablespace, this disobeys another presciption:
user data should not reside in the SYSTEM tablespace. User data should reside in application tablespaces besides tablespaces for SYSTEM data-dictionary objects, rollback segments, and temporary objects.
Given that provision, one cannot access application tables only via permissions granted explicitly 1) to that user, 2) to a role to which that user is a member, or 3) to PUBIC.
>>> ...SYSTEM table-space is used to store system catalogue/metadata.
Correct.
>>> PUBLIC, by default, does not provide a user any permissions (SELECT, DELETE, UPDATE) on user data.
Incorrect. If I issue the command, "GRANT SELECT, DELETE, UPDATE on <some table> TO PUBLIC;" then certainly anyone that can connect to the database can SELECT, DELETE, or UPDATE data in <some table>.
>>> Permissions to user data must be explicitly granted to a role to gain access.
Incorrect. As I mentioned above, a user that does not own an object can have privileges via either 1) specific GRANTs to that user, 2) GRANTs to a role in which the user is a member or 3) GRANTs to PUBLIC;
Let us know if you have additional questions.
![[santa] [santa] [santa]](/data/assets/smilies/santa.gif)
Mufasa
(aka Dave of Sandy, Utah, USA)
[I can provide you with low-cost, remote Database Administration services: see our website and contact me via
www.dasages.com]