Hi, Dennis. Sorry that I can't answer all your questions as I'm just new to Oracle. Except with this > My question is why a user can see tables in ALL_TABLES that they can't > select? Is there a better way to do this? I thought about doing this from > DBA_TABLES, but was concerned about the different permutations of whether a > table was granted to a role, then granted to the users. I thought if the > user could see the table in ALL_TABLES, then the user would indeed have > access, but apparently it isn't that simple. Actually, ALL_TABLES is a data dictionary view(I hope you know data dictionary anyway) provided by the DBMS, it tells you all the tables' information on the system. But those tables listed here don't have to be accessable by you, with the priviledges managed in Oracle with priviledges and roles. What you misconcepted with ALL_TABLES would be USER_TABLES, the latter says all the tables you owned or created(this saying maybe not absolutely correct). I guess you'd better get some book or just the Docs from Oracle for some basic knowledge about Oracle. -- Learning Oracle http://kinzlaw.wordpress.com