`

一个快照过旧的例子

 
阅读更多

一.窗口1,以sysdba登录,创建一个小的UNDO 表空间,并将系统的UNDO表空间设置为该空间.
SQL> create undo tablespace undotbs_small datafile
2 'e:/oracle/product/10.2.0/oradata/undotbs_small.dbf' size 1m
3 autoextend off;

SQL> alter system set undo_tablespace=undotbs_small scope=memory;

系统已更改。

SQL> select bytes/1024/1024,maxbytes/1024/1024 from dba_data_files where tablespace_name='UNDOTBS_SMALL';

BYTES/1024/1024 MAXBYTES/1024/1024
--------------- ------------------
1 0

二.窗口2,创建表,并插入一行数据
SQL> connect test/test
已连接。
SQL> create table personnel(pid number(10),name varchar2(30));

表已创建。

SQL> insert into personnel(1,'这是插入数据');
SQL> commit;

提交完成。

三.窗口3,创建serializable事务,并读取第一行数据
SQL> connect test/test
已连接。
SQL> set transaction isolation level serializable;

事务处理集。

SQL> select * from personnel where pid=1;

PID NAME
---------- ------------------------------
1 这是插入数据

四.回到窗口2,执行多次更新
SQL> begin
2 for i in 1..10000 loop
3 update personnel set pid=i,name='这是更改数据';
4 commit;
5 end loop;
6 end;
7 /

PL/SQL 过程已成功完成。

五.窗口3,再查询数据
SQL> /
select * from personnel where pid=1
*
第 1 行出现错误:
ORA-01555: 快照过旧: 回退段号 25 (名称为 "_SYSSMU25$") 过小

六.窗口1,再查询undo表空间的大小
SQL> select bytes/1024/1024,maxbytes/1024/1024 from dba_data_files where tablespace_name='UNDOTBS_SMALL';

BYTES/1024/1024 MAXBYTES/1024/1024
--------------- ------------------
1 0

仍然是1M,没有扩展

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics