From:Steve Adams
Date:24-Oct-2000 11:02
Subject:   ACCESS$

ACCESS$ records the access permissions needed by a dependent object on its parent objects. You can interpret most of the values of the TYPES columns by looking at TABLE_PRIVILEGE_MAP. The main ones are:

     3 = DELETE
     6 = INSERT
     9 = SELECT
    10 = UPDATE
    12 = EXECUTE
    13 = VIEW
However, the last one is omitted from TABLE_PRIVILEGE_MAP because it is only used internally and cannot be audited.

In the case of INSERT, UPDATE and REFERENCES some users may only have the required permission on a subset of columns. The COLUMNS field of ACCESS$ contains the bitmap of columns for which a column grant is needed in these cases, but is NULL if columns are not (or in the case of VIEW cannot be) accessed in these ways.

I've posted this question a few different times, but no one seems to be able to answer it for me. I was wondering with your internals background if you might have some insight into this:

I've been hacking at the sys.access$ table and am still struggling with understanding what its exact purpose is. There is no description of this table anywhere that I can locate (including sql.bsq). All I can tell you about it from some experiments are:

If you create a view that performs a SELECT COL1,COL2,COL3 FROM SINGLE_TABLE the "columns" column of access$ populates with a bitmap of sorts where each column used in the view is indicated by a bit being set.

If you create a view that references two or more tables, this column of access$ is null.

If you create a stored procedure that performs an insert or update that one or more operations, the "columns" column of access$ will populate with a similar bitmap as described above in the view. Although since this column populates whether 1 table is accessed or multiple tables, I'm not sure how it's marking the bits in this case.

Any ideas?