ORACLE数据库管理-启动取消TX-recover

实验目的,设置隐藏参数,全部offline undo segments,对宕机时未提交事务得影响。

1 存在事务未提交得情况下,shutdown abort。

2 修改参数文件undo_management='MANUAL' ROLLBACK_SEGMENTS='SYSTEM'.


1 创建普通用户test
CREATE USER TEST IDENTIFIED BY "123";
GRANT CONNECT,RESOURCE ,UNLIMITED TABLESPACE TO TEST;
CREATE TABLESPACE TEST DATAFILE '/u01/test01.dbf' SIZE 200m;
2 创建测试表test01
SQL> connect test/123
Connected.
SQL> 
SQL> 
SQL> show user
USER is "TEST"
SQL> 
create table test01 tablespace TEST as select OBJECT_ID,OBJECT_NAME  FROM DBA_OBJECTS WHERE ROWNUM<1;
3 产生大量的事务,不提交。
SQL> insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
insert into TEST01 VALUES(1,'123');
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
1 row created.

SQL> 
4 查询到online的 rollback segments。
SQL> SET LINES 120
SQL> COL SEGMENT_NAME FOR A30
SQL> SELECT SEGMENT_NAME,STATUS FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   STATUS
------------------------------ ----------------
SYSTEM                         ONLINE
_SYSSMU1_762089623$            ONLINE
_SYSSMU2_3062791661$           ONLINE
_SYSSMU3_1499641855$           ONLINE
_SYSSMU4_3564003469$           ONLINE
_SYSSMU5_1728379857$           ONLINE
_SYSSMU6_965511687$            ONLINE
_SYSSMU7_2247632671$           ONLINE
_SYSSMU8_437891266$            ONLINE
_SYSSMU9_3215744559$           ONLINE
_SYSSMU10_2925533193$          ONLINE

11 rows selected.

5 模拟异常宕机
SQL> shutdown abort
ORACLE instance shut down.
SQL> 
6 编写参数文件,添加参数
undo_management='MANUAL'
rolback_segments='SYSTEM'

7 启动数据库
[oracle@vm01 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 15 03:10:57 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8620080 bytes
Variable Size             838862800 bytes
Database Buffers          352321536 bytes
Redo Buffers                8155136 bytes
SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

Beginning crash recovery of 1 threads
2020-01-15T03:11:37.536856-08:00
Started redo scan
2020-01-15T03:11:37.620105-08:00
Completed redo scan
 read 338 KB redo, 37 data blocks need recovery
2020-01-15T03:11:37.621080-08:00
Started redo application at
 Thread 1: logseq 35, block 55666, offset 0
2020-01-15T03:11:37.621355-08:00
Recovery of Online Redo Log: Thread 1 Group 2 Seq 35 Reading mem 0
  Mem# 0: /u01/oradata/prodpri/redo02.log
2020-01-15T03:11:37.623343-08:00
Completed redo application of 0.02MB
2020-01-15T03:11:37.724668-08:00
Completed crash recovery at
 Thread 1: RBA 35.56343.16, nab 56343, scn 0x00000000004c5c90
 37 data blocks read, 37 data blocks written, 338 redo k-bytes read
数据库未出现TX-RECOVER字眼。

8 查看表test数据。
SQL> select count(1) from test01;

  COUNT(1)
----------
         0


上述同样操作使用update语句
SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      MANUAL
undo_retention                       integer     900
undo_tablespace                      string
SQL> SELECT SEGMENT_NAME,STATUS FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   STATUS
------------------------------ ----------------
SYSTEM                         ONLINE
_SYSSMU1_762089623$            OFFLINE
_SYSSMU2_3062791661$           OFFLINE
_SYSSMU3_1499641855$           OFFLINE
_SYSSMU4_3564003469$           OFFLINE
_SYSSMU5_1728379857$           OFFLINE
_SYSSMU6_965511687$            OFFLINE
_SYSSMU7_2247632671$           OFFLINE
_SYSSMU8_437891266$            OFFLINE
_SYSSMU9_3215744559$           OFFLINE
_SYSSMU10_2925533193$          OFFLINE

SEGMENT_NAME                   STATUS
------------------------------ ----------------
_SYSSMU21_567861045$           OFFLINE
_SYSSMU22_2686851961$          OFFLINE
_SYSSMU23_94587328$            OFFLINE
_SYSSMU24_2584993644$          OFFLINE
_SYSSMU25_2795507501$          OFFLINE
_SYSSMU26_762234276$           OFFLINE
_SYSSMU27_123628667$           OFFLINE
_SYSSMU28_3444433565$          OFFLINE
_SYSSMU29_3470449870$          OFFLINE
_SYSSMU30_51700156$            OFFLINE

21 rows selected.

[oracle@vm01 dbs]$ sqlplus test/123

SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 15 03:22:25 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Wed Jan 15 2020 03:21:47 -08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> update test01 set object_id=10;

24 rows updated.

SQL> update test01 set object_id=10;
update test01 set object_id=10
       *
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system tablespace 'TEST';


SQL> select object_id from test01;

 OBJECT_ID
----------
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1

 OBJECT_ID
----------
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1

 OBJECT_ID
----------
         1
         1

SQL> create undo tablespace undotbs3 datafile '/u01/undo3.dbf' size 20M;

Tablespace created.
[oracle@vm01 trace]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 15 03:27:04 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> shutdown     
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 

编辑参数文件
[oracle@vm01 dbs]$ vi initprodpri.ora 

prodpri.__data_transfer_cache_size=0
prodpri.__db_cache_size=419430400
prodpri.__inmemory_ext_roarea=0
prodpri.__inmemory_ext_rwarea=0
prodpri.__java_pool_size=16777216
prodpri.__large_pool_size=33554432
prodpri.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
prodpri.__pga_aggregate_target=486539264
prodpri.__sga_target=721420288
prodpri.__shared_io_pool_size=33554432
prodpri.__shared_pool_size=201326592
prodpri.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/prodpri/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/oradata/prodpri/control01.ctl','/u01/oradata/prodpri/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/oradata/prodpri','/u01/oradata'
*.db_name='prodpri'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodpriXDB)'
*.local_listener='LISTENER_PRODPRI'
*.log_archive_dest_1='LOCATION=/u01/arch/prodpri'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=1147m
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names='prodpri,boss,app'
*.undo_tablespace='UNDOTBS3'
#*.undo_management='manual'
#*.rollback_segments='system'

~
~SQL> create spfile from pfile;

File created.

SQL> startup 
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8620080 bytes
Variable Size             838862800 bytes
Database Buffers          352321536 bytes
Redo Buffers                8155136 bytes
Database mounted.
Database opened.
SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS3
SQL> 
SQL> select object_id from test.test01;

 OBJECT_ID
----------
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1

 OBJECT_ID
----------
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1

 OBJECT_ID
----------
         1
         1

24 rows selected.

SQL> 
SQL> SELECT SEGMENT_NAME,STATUS FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   STATUS
------------------------------ ----------------
SYSTEM                         ONLINE
_SYSSMU1_762089623$            OFFLINE
_SYSSMU2_3062791661$           OFFLINE
_SYSSMU3_1499641855$           OFFLINE
_SYSSMU4_3564003469$           OFFLINE
_SYSSMU5_1728379857$           OFFLINE
_SYSSMU6_965511687$            OFFLINE
_SYSSMU7_2247632671$           OFFLINE
_SYSSMU8_437891266$            OFFLINE
_SYSSMU9_3215744559$           OFFLINE
_SYSSMU10_2925533193$          OFFLINE

SEGMENT_NAME                   STATUS
------------------------------ ----------------
_SYSSMU21_567861045$           OFFLINE
_SYSSMU22_2686851961$          OFFLINE
_SYSSMU23_94587328$            OFFLINE
_SYSSMU24_2584993644$          OFFLINE
_SYSSMU25_2795507501$          OFFLINE
_SYSSMU26_762234276$           OFFLINE
_SYSSMU27_123628667$           OFFLINE
_SYSSMU28_3444433565$          OFFLINE
_SYSSMU29_3470449870$          OFFLINE
_SYSSMU30_51700156$            OFFLINE
_SYSSMU31_2649638259$          ONLINE

SEGMENT_NAME                   STATUS
------------------------------ ----------------
_SYSSMU32_2716343464$          ONLINE
_SYSSMU33_3120567609$          ONLINE
_SYSSMU34_964871371$           ONLINE
_SYSSMU35_628768198$           ONLINE
_SYSSMU36_2298171139$          ONLINE
_SYSSMU37_1733129179$          ONLINE
_SYSSMU38_981763433$           ONLINE
_SYSSMU39_3475643199$          ONLINE
_SYSSMU40_3809481662$          ONLINE

31 rows selected.

SQL> 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值