该实验参考12官方文档手册中的Current Schema When Connecting As SYSDBA
当用户被赋予sysdba权限后,使用 as sysdba方式登录数据库会进入SYS schema,而不是该用户的schema。甚至无法看到刚刚创建的表,需要制定该用户的schema。处于SYS schema状态下创建表也会创建到SYSTEM表空间下。
1,创建一个用户snow,赋予connect,resource,sysdba权限并指定users为默认表空间。
create user snow identified by snow default tablespace users;
grant connect,resource,sysdba to snow;
conn snow/snow
create table snow_test1(name varchar2(10));
select owner,table_name,tablespace_name from dba_tables where table_name='SNOW_TEST1';
OWNER TABLE_NAME TABLESPACE_NAME
-------------------- -------------------- --------------------
SNOW SNOW_TEST1 USERS
2,snow用户使用sysdba方式登录,由于现在处于sys schema下,看不到刚刚创建的表了
conn snow as sysdba
select * from snow_test1;
select * from snow_test1
*
ERROR at line 1:
ORA-00942: table or view does not exist
3,重新创建一个用户lily,使用 as sysdba方式创建表,看看会创建到users表空间还是system表空间?
conn / as sysdba
create user lily identified by lily;
grant sysdba to lily;
只有sysdba,没有connect也是无法创建session的
conn lily/lily
ERROR:
ORA-01045: user LILY lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
@ >conn / as sysdba
Connected.
grant connect,resource to lily;
注意此次登录时没有指定as sysdba,和登录时指定as sysdba是不同的
conn lily/lily
create table lily_test1(name varchar2(10));
conn lily/lily as sysdba
select * from lily_test1;
select * from lily_test1
*
ERROR at line 1:
ORA-00942: table or view does not exist
select * from lily.lily_test1;
no rows selected
SYS@OCM12C >select owner,table_name,tablespace_name from dba_tables where table_name='LILY_TEST1';
OWNER TABLE_NAME TABLESPACE_NAME
-------------------- -------------------- --------------------
LILY LILY_TEST1 USERS
注意:如果使用conn lily/lily as sysdba登录数据库后创建表,会创建在system表空间下
conn lily/lily as sysdba
create table lily_test1(name varchar2(10));
select owner,table_name,tablespace_name from dba_tables where table_name='LILY_TEST1';
OWNER TABLE_NAME TABLESPACE_NAME
-------------------- -------------------- --------------------
SYS LILY_TEST1 SYSTEM
SYSDBA属于管理权限,有别于其他权限。在显示赋予用户时,该信息被记录在密码文件中,在试图v$pwfile_users中可以查看到该设置。
如果在密码文件中ENTRIES参数设置的太小,导致新用户想要赋予SYSDBA用户时会报错,可以通过重建密码文件并且适当扩大ENTRIES来解决。
SYS@OCM12C >select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS SYSBA SYSDG SYSKM CON_ID
---------- ----- ----- ----- ----- ----- ----- ----------
SYS TRUE TRUE FALSE FALSE FALSE FALSE 0
SYSDG FALSE FALSE FALSE FALSE TRUE FALSE 0
SYSBACKUP FALSE FALSE FALSE TRUE FALSE FALSE 0
SYSKM FALSE FALSE FALSE FALSE FALSE TRUE 0
SNOW TRUE FALSE FALSE FALSE FALSE FALSE 0
LILY TRUE FALSE FALSE FALSE FALSE FALSE 0
TOME TRUE TRUE FALSE FALSE FALSE FALSE 0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29047826/viewspace-1421210/
,如需转载,请注明出处,否则将追究法律责任。