undo管理

Jun 07, 2016 pm 03:28 PM
from select sql undo pangkalan data persekitaran mengurus

数据库环境: 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作用

Salin selepas log masuk
undo数据也称为回滚数据,用户确保数据的一致性。主要用于回退事务、读一致性、事务恢复、闪回查询
Salin selepas log masuk
    回退事务:当执行DML操作修改数据时,undo数据被存放到undo段,而新数据则被存放到数据段中,如果事务操作存在问题,需要回退事务,用以取消事务变化。例如用户A执行对emp表,执行delete操作,即delete from emp where empno=‘1’,如果发现错误删除员工号 1,那么就可以通过执行rollback语句取消事务变化。当执行rollback命令时,数据库将undo段的undo数据empno是1的记录回写到数据段中。
Salin selepas log masuk
    读一致性:当用户检索数据时,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。         
Salin selepas log masuk
    事务恢复:事务恢复是实例恢复的一部分,由oracle server 自动完成的,如果在数据库运行过程中出现实例失败(如断电),那么当重启数据库 时,后台进程smon(system monitor)会自动执行实例恢复,执行实例恢复时,oracle会重新做所有未应用的记录,回退未提交事务。
Salin selepas log masuk
    闪回查询:用户取的特定时间的数据库数据,用于9i,10g,11g等版本
Salin selepas log masuk
2.  undo重要参数
Salin selepas log masuk
 undo_management:该参数指定undo表空间管理方式,分别是auto和manager,默认是auto
Salin selepas log masuk
undo_retention:该参数指定undo表空数据保留最大时间,默认是900s
Salin selepas log masuk
undo_tablespace:该参数指定当前的undo表空间
Salin selepas log masuk
SQL> show parameter undo 
Salin selepas log masuk
NAME				     TYPE	 VALUE
Salin selepas log masuk
------------------------------------ ----------- ------------------------------
Salin selepas log masuk
undo_management 		     string	 AUTO
Salin selepas log masuk
undo_retention			     integer	 9000
Salin selepas log masuk
undo_tablespace 		     string	 UNDOTBS1
Salin selepas log masuk
可以通过alter system set【参数名称】=【参数值】进行修改
Salin selepas log masuk
例如:
Salin selepas log masuk
Salin selepas log masuk
SQL> alter system set undo_retention=9000;

Salin selepas log masuk
System altered.
Salin selepas log masuk
3. undo表空间
Salin selepas log masuk
创建undo表空间:create undo tablespace 表空间名称 datafile '文件名称' size 文件大小;
Salin selepas log masuk
例如:SQL> create undo tablespace undotbs04 
Salin selepas log masuk
         datafile '/home/oracle/app/oracle/oradata/orcl/undotbs04.dbf' 
Salin selepas log masuk
          size 50m;
Salin selepas log masuk
修改undo表空间
Salin selepas log masuk
a.为undo表空增加数据文件 alter tablespace 表空间名称 add  datafile '文件名称'  size 文件大小
Salin selepas log masuk
例如:
Salin selepas log masuk
Salin selepas log masuk
SQL>  alter tablespace undotbs04 
Salin selepas log masuk
           add datafile  '/home/oracle/app/oracle/oradata/orcl/undtbs04_01.dbf'
Salin selepas log masuk
            size 50m;
Salin selepas log masuk
b.修改undo数据文件大小:alter database datafile '文件名称' resize 文件大小
Salin selepas log masuk
SQL> alter database datafile '/home/oracle/app/oracle/oradata/orcl/undotbs04.dbf' resize 100M;
Salin selepas log masuk
c.重命名undo数据文件
Salin selepas log masuk
步骤1:表空间离线
Salin selepas log masuk
SQL> alter tablespace undotbs04 offline; 
Salin selepas log masuk
步骤2:在操作系统层面重命名数据文件
Salin selepas log masuk
[oracle@localhost orcl]$ mv undtbs04_01.dbf undotbs04_01.dbf;
Salin selepas log masuk
步骤3:用alter tablespace重命名表空间对应的数据文件
Salin selepas log masuk
SQL> alter tablespace undotbs04 rename datafile '/home/oracle/app/oracle/oradata/orcl/undtbs04_01.dbf' to 
Salin selepas log masuk
     '/home/oracle/app/oracle/oradata/orcl/undotbs04_01.dbf';
Salin selepas log masuk
步骤4:表空间在线
Salin selepas log masuk
SQL> alter tablespace undotbs04 online;
Salin selepas log masuk
删除undo表空间 :drop tablespace 表空间名称
Salin selepas log masuk
SQL> drop tablespace undotbs04;
Salin selepas log masuk
备注:数据文件并未真正被删除,需要手动删除
Salin selepas log masuk
SQL> drop tablespace undotbs2 including contents;
Salin selepas log masuk
备注:会级联删除数据文件
Salin selepas log masuk
切换当前undo表空间:alter system set undo_tablespace='表空间名称'
Salin selepas log masuk
create table t1(i int);
insert into t1 values(1);
insert into t1 values(2);
commit;
create table t2 rowdependencies as select * from t1;
Salin selepas log masuk

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apr 17, 2024 pm 02:57 PM

Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate?

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Mar 27, 2024 pm 09:39 PM

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data?

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Apr 17, 2024 pm 12:09 PM

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik?

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak

Apr 09, 2024 pm 12:36 PM

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Mar 27, 2024 pm 05:21 PM

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP

See all articles