SYS模式下测试的限制

        由于SYS用户的权限比较大,为此常喜欢在SYS用户下做实验。但是,后来发现,SYS用户也有诸多限制。


限制一:DROP之后的表不会保存在recyclebin里面。查了一下技术文档,“The recycle bin functionality is only available for non-system, locally managed tablespaces.”

SQL> DROP TABLE TEST01;

表已删除。

SQL> SHOW RECYCLEBIN;
SQL> SELECT * FROM USER_RECYCLEBIN;

未选定行

SQL> SHOW USER;
USER 为 "SYS"
SQL> SHOW RECYCLEBIN;
SQL> select * from dba_recyclebin;

未选定行

限制二:不能对在该用户模式下建立的表进行压缩。

SQL> create table t (id int);

表已创建。

SQL> begin
  2  for i in 1..10 loop
  3  insert into t
  4  select i from dual;
  5  end loop;
  6  end;
  7  /

PL/SQL 过程已成功完成。

SQL> alter table t enable row movement;

表已更改。

SQL> alter table t shrink space;
alter table t shrink space
*
第 1 行出现错误:
ORA-10635: Invalid segment or tablespace type

      至于原因,后来查了一下,表收缩有两个前提条件,一是启动行移动,二是表所在的表空间的段空间管理模式为AUTO。而SYS用户所在SYSTEM表空间的段空间管理模式为MANUAL。也因为这样,SYS模式下不能调用dbms_space.space_usage();

SQL>  select tablespace_name ,segment_space_management from dba_tablespaces where tablespace_name ='SYSTEM';

TABLESPACE_NAME                SEGMEN
------------------------------ ------
SYSTEM                         MANUAL

限制三:不能对SYS用户下的表创建触发器;

SQL> create table t as
  2  select * from dba_objects;

表已创建。

SQL> create or replace trigger tr after update on t
  2  for each row
  3  begin
  4  null;
  5  end;
  6  /
create or replace trigger tr after update on t
                          *
第 1 行出现错误:
ORA-04089: 无法对 SYS 拥有的对象创建触发器


SQL> show user;
USER 为 "SYS"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值