欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入
oracle数据库是个多用户系统。为了保证数据库系统的安全,oracle数据库管理系统配制了良好的安全机制。例如,每一个oracle数据库都有一个用户表,它记载着每一个用户的有关信息,一旦用户进入系统,oracle系统会通过这张表来检查用户的合法性。又如,oracle系统通过合理分配用户的权限来管理用户。通常,oracle将用户分为三类,即dba、resouce和connect三类角色,使不同的用户的权限各不相同。
在创建数据库时,系统自动建立了两个用户,即sys和system用户,且授给这两个用户db权限,由于dba具有最高权限,建议将它们的口令及时修改,以免个别用户以dba角色进入系统,有意无意地给系统造成损害。
除了sys、system用户外,其余用户都要一一建立,建立用户的方法如下:
假设要建的用户名为rsxt,口令为rspass;默认的表空间为user,临时表空间为temp,表空间限额为3m,其余默认,则可用下面方法创建新用户:
1. sqldba>create user rsxt identified by rspass
2. default tablespace user
3. temporary tablespace temp
4. quota 3m on user;
请注意,该用户建立后,还要及时授权,否则像上述刚刚建成的用户,则一无所为,甚至都不能连接数据库。对一般用户,通常授予connect和resource角色权限,命令如下:
sqldba>grant connect,resource to rsxt;
对于一个有着许多用户的数据库系统,我们可以通过下述方法来了解数据库的用户情况。
1.对于非dba用户
对于非dba用户,有两条命令,即:
(1)sql>select*from all-users;
(2)sql>select*from user-users;
其中,从user-users表中,可以了解到该用户的默认表空间和临时表空间等信息。
2.对于dba用户
对于dba用户,有三条命令,即:
(1)sqldba>select*from all-users;
(2)sqldba>select*from user-users;
(3)sqldba>select*from dba-users;
其中,从dba-users中,可以了解到所有用户的详细信息,因而该命令对于数据库管理员来说是很有用的。
关于非dba用户的信息
由于dba用户具有最高权限,为安全起见,只有oracle系统管理员才授予dba权限,大多数用户均为非dba用户。尽管相应的权限少了,但是从oracle数据字典中,还是可以得到 很多关于非dba用户的有用信息。
我们可以采用下述方法来了解有关非dba用户的信息。
1.sql>select*from user-users;
可以查看该用户的默认表空间,临时表空间和用户创建时间。
2.sql>select*from user-tables;
可以查看该用户创建的所有表的详细信息,由于列名较多,一屏看不了几个表。
如果仅仅想查看用户所建表的表名,可以用下面的命令:
sql>select table-name from user-tables;
3.sql〉select*from user-views;
可以查看该用户所创建的视图,包括创建视图的文本。
同样,如果仅仅想查看用户所建视图的视图名,可以用下面的命令:
sql>select view-name from user-views;
4.sql>select*from user-tablespaces;
可以查看该用户可存取的表空间的信息。
5.sql>select tablespace-name,sum(bytes),sum(blocks)
from user-free-space group by tablespace-name;
可以查看该用户可存取的表空间的剩余空间。
6.sql>select *from user-ts-quotas;
可以查看该用户的表空间的份额。
7.sql>select *from user-role-privs;
可以查看该用户被授予的角色。
8.sql>select *from user-sys-privs;
可以查看该用户的系统权限及能否再授予其它用户的权限。
9.sql>select *from user-tab-privs-recd;
可以查看该用户能访问其它用户的表、视图等的对象权限。
10.sql>select *from user-tab-privs-made;
可以查看该用户授予其它用户的表、视图等的对象权限。
