ITPub博客

首页 > 数据库 > Oracle > oracle 12c 使用as sysdba方式登录数据库后的Schema变化

oracle 12c 使用as sysdba方式登录数据库后的Schema变化

原创 Oracle 作者:SnowDBA 时间:2015-01-30 17:23:10 0 删除 编辑

该实验参考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
Enter password:

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-06-21

  • 博文量
    223
  • 访问量
    1633618