深入淺出undo記載03
這裡自己無意中做了個測試:之前修改undo表空間為手工管理
Sql>alter system set undo_management=manual scope=spfile
Sql>startup force
。。。。。
SQL> insert into xiaoyu.test03 select * from xiaoyu.test03;
insert into xiaoyu.test03 select * from xiaoyu.test03
ORA-01552: 非系統表空間 'USERS' 不能使用系統回退段
SQL> select * from v$rollname;
USN NAME
---------- ------------------------------
0 SYSTEM
……
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string undotbs_test
SQL> select * from v$version where rownum=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
之前網友說過系統表空間可以被用於非系統級事務,看來至少在oracle 10g中就已經不可用了,由於oracle中現在此時只有系統回滾段,事務無法執行。手工管理回滾表空間下,oracle預設不會建立回滾段和上線,而事務也不能佔用系統回滾段。不過自動管理模式下,回滾段會自動建立並上線,在10G自動管理模式下,手工建立的回滾段是無效的,而且也不會顯示在資料字典檢視中。
9I下undo_suppress_errors參數列示在AUM下手工建立回滾段是否返回出錯資訊,true為不返回出錯資訊,false返回出錯資訊,10g中該引數已經丟棄。
SQL> alter system set undo_management=auto scope=spfile;
System altered
SQL> show paramter undo;
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string undotbs_test
SQL> select * from v$rollname;
USN NAME
---------- ------------------------------
0 SYSTEM
13 _SYSSMU13$
14 _SYSSMU14$
15 _SYSSMU15$
16 _SYSSMU16$
17 _SYSSMU17$
18 _SYSSMU18$
19 _SYSSMU19$
20 _SYSSMU20$
21 _SYSSMU21$
22 _SYSSMU22$
11 rows selected
正常關閉資料庫undo表空間出現問題:
記得曾經有網友說過啟動資料庫時丟失了回滾段表空間的資料檔案,但是又沒有備份資訊,由於是undo表空間儲存的都是回滾段資訊,可以考慮重建undo表空間。
Sql>shutdown immediate;
物理刪除undo表空間所在資料檔案datafile 7
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 373293056 bytes
Fixed Size 1249080 bytes
Variable Size 234881224 bytes
Database Buffers 134217728 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 7 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 7: 'D:UNDOTBS_TEST02.DBF'
SQL> show parameter undo;
NAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
undo_management string
AUTO
undo_retention integer
900
undo_tablespace string
undotbs_test02
SQL> alter database datafile 7 offline drop;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
此時選擇新建undo表空間,切換undo表空間
SQL>create undo tablespace undotbso datafile ‘d:oracleprocduct10.2.0oradataxiaoyuundotbs01.dbf’ size 50M;
Sql> alter system set undo_tablespace=’undotbs’
SQL> drop tablespace undotbs_test02 including contents;
需要等待原undo表空間的回滾段中的事務全部提交,事務稱為非啟用後才能刪除原undo表空間,不然會出現下述錯誤資訊,可以檢視v$rollstat檢視的xact欄位看回滾段上活動的事務數量
drop tablespace undotbs_test02 including contents
ORA-30013: 還原表空間 ' undotbs_test02' 當前正在使用中
。
Undo表空間過大:
在oracle 9i開始選擇AUM管理時,通常undo表空間預設會選擇autoextentd on 自動擴充套件而導致undo表空間過度擴充套件而不能回收,佔用空間過多,可以考慮重建undo表空間,修改預設undo表空間,也可以在同平臺遷移資料庫時,考慮不遷移過大的undo表空間而選擇重建切換。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057009/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入淺出負載均衡負載
- 深入淺出FE(十四)深入淺出websocketWeb
- 深入淺出node讀書筆記筆記
- 深入淺出記憶體馬(一)記憶體
- 深入淺出Java記憶體模型Java記憶體模型
- 深入淺出Netty記憶體管理 PoolChunkNetty記憶體
- 深入淺出DPDK學習筆記——前言筆記
- Linux:深入淺出 Linux 共享記憶體Linux記憶體
- 淺讀-《深入淺出Nodejs》NodeJS
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出WebpackWeb
- 深入淺出HTTPHTTP
- mysqldump 深入淺出MySql
- 深入淺出——MVCMVC
- 深入淺出IO
- 深入淺出decorator
- ArrayList 深入淺出
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- 深入淺出 ZooKeeper
- 前端筆記之React(五)Redux深入淺出前端筆記ReactRedux
- VSCode For Web 深入淺出 -- 外掛載入機制VSCodeWeb
- Flutter | 深入淺出KeyFlutter
- 深入淺出 Laravel EchoLaravel
- 深入淺出理解ReduxRedux
- 深入淺出 Laravel MacroableLaravelMac
- flutter ScopedModel深入淺出Flutter
- 反射的深入淺出反射
- 《深入淺出webpack》有感Web
- 深入淺出Spring MVCSpringMVC
- 深入淺出Tomcat系列Tomcat
- [譯] 深入淺出 SVGSVG
- SSL/TLS 深入淺出TLS
- Tomcat深入淺出(一)Tomcat
- 深入淺出:HTTP/2HTTP
- 深入淺出Spark JoinSpark
- JVM深入淺出 -- Java記憶體分配機制JVMJava記憶體
- 深入淺出redux學習Redux