undo管理
from
select
sql
undo
資料庫
環境
管理
数据库环境: SQL select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production PL/SQL Release 11.2.0.1.0 - Production
数据库环境:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
1. undo作用
登入後複製
undo数据也称为回滚数据,用户确保数据的一致性。主要用于回退事务、读一致性、事务恢复、闪回查询
登入後複製
回退事务:当执行DML操作修改数据时,undo数据被存放到undo段,而新数据则被存放到数据段中,如果事务操作存在问题,需要回退事务,用以取消事务变化。例如用户A执行对emp表,执行delete操作,即delete from emp where empno=‘1’,如果发现错误删除员工号 1,那么就可以通过执行rollback语句取消事务变化。当执行rollback命令时,数据库将undo段的undo数据empno是1的记录回写到数据段中。
登入後複製
读一致性:当用户检索数据时,oracle只能将已经commit的数据或者特定时间点的数据(select时间点)展示给用户。这样就可以确保数据的一致性。例如,当用户A执行update emp set sal=1 where empno=1时,(备注更新之前 sal是888)undo记录会被存放到回滚段中,而新数据则会存放数据段中,如果此时数据尚未提交,并且用户B执行select sal from emp where empno=1,此时用户B取得是undo数据888。
登入後複製
事务恢复:事务恢复是实例恢复的一部分,由oracle server 自动完成的,如果在数据库运行过程中出现实例失败(如断电),那么当重启数据库 时,后台进程smon(system monitor)会自动执行实例恢复,执行实例恢复时,oracle会重新做所有未应用的记录,回退未提交事务。
登入後複製
闪回查询:用户取的特定时间的数据库数据,用于9i,10g,11g等版本
登入後複製
2. undo重要参数
登入後複製
undo_management:该参数指定undo表空间管理方式,分别是auto和manager,默认是auto
登入後複製
undo_retention:该参数指定undo表空数据保留最大时间,默认是900s
登入後複製
undo_tablespace:该参数指定当前的undo表空间
登入後複製
SQL> show parameter undo
登入後複製
NAME TYPE VALUE
登入後複製
------------------------------------ ----------- ------------------------------
登入後複製
undo_management string AUTO
登入後複製
undo_retention integer 9000
登入後複製
undo_tablespace string UNDOTBS1
登入後複製
可以通过alter system set【参数名称】=【参数值】进行修改
登入後複製
例如:
登入後複製
登入後複製
SQL> alter system set undo_retention=9000;
登入後複製
System altered.
登入後複製
3. undo表空间
登入後複製
创建undo表空间:create undo tablespace 表空间名称 datafile '文件名称' size 文件大小;
登入後複製
例如:SQL> create undo tablespace undotbs04
登入後複製
datafile '/home/oracle/app/oracle/oradata/orcl/undotbs04.dbf'
登入後複製
size 50m;
登入後複製
修改undo表空间
登入後複製
a.为undo表空增加数据文件 alter tablespace 表空间名称 add datafile '文件名称' size 文件大小
登入後複製
例如:
登入後複製
登入後複製
SQL> alter tablespace undotbs04
登入後複製
add datafile '/home/oracle/app/oracle/oradata/orcl/undtbs04_01.dbf'
登入後複製
size 50m;
登入後複製
b.修改undo数据文件大小:alter database datafile '文件名称' resize 文件大小
登入後複製
SQL> alter database datafile '/home/oracle/app/oracle/oradata/orcl/undotbs04.dbf' resize 100M;
登入後複製
c.重命名undo数据文件
登入後複製
步骤1:表空间离线
登入後複製
SQL> alter tablespace undotbs04 offline;
登入後複製
步骤2:在操作系统层面重命名数据文件
登入後複製
[oracle@localhost orcl]$ mv undtbs04_01.dbf undotbs04_01.dbf;
登入後複製
步骤3:用alter tablespace重命名表空间对应的数据文件
登入後複製
SQL> alter tablespace undotbs04 rename datafile '/home/oracle/app/oracle/oradata/orcl/undtbs04_01.dbf' to
登入後複製
'/home/oracle/app/oracle/oradata/orcl/undotbs04_01.dbf';
登入後複製
步骤4:表空间在线
登入後複製
SQL> alter tablespace undotbs04 online;
登入後複製
删除undo表空间 :drop tablespace 表空间名称
登入後複製
SQL> drop tablespace undotbs04;
登入後複製
备注:数据文件并未真正被删除,需要手动删除
登入後複製
SQL> drop tablespace undotbs2 including contents;
登入後複製
备注:会级联删除数据文件
登入後複製
切换当前undo表空间:alter system set undo_tablespace='表空间名称'
登入後複製
create table t1(i int); insert into t1 values(1); insert into t1 values(2); commit; create table t2 rowdependencies as select * from t1;
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)