oracle数据回滚(oracle 数据库回滚)

虚拟屋 2022-12-20 17:05 编辑:admin 298阅读

1. oracle 数据库回滚

undo表空间用于事务回滚。

2. oracle数据回滚超过一天

一定要在commit之前,原窗口执行rollback就可以回退到set transaction read only之前的状态。但要慎用,任何操作之前记得用savepoint并且不要轻易commit

3. oracle数据回滚指定时间报快照过旧

Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。

1.数据库后备是由构成Oracle数据库的物理文件的操作系统后备所组成。当介质故障时进行数据库恢复,利用后备文件恢复毁坏的数据文件或控制文件。

2.每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与 Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可 形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。

3.回滚段用于存储正在进行的事务(为未提交的事务)所修改值的老值,该信息在数据库恢复过程中用于撤消任何非提交的修改。

4.控制文件,一般用于存储数据库的物理结构的状态。控制文件中某些状态信息在实例恢复和介质恢复期间用于引导Oracle。

4. oracle数据回滚语句 as of

1.设置默认表空间:

在Oracle数据库中创建用户(使用CREATE USER语句)时,如果不指定表空间,则默认的临时表空间时TEMP,默认的永久表空间时SYSTEM,这样旧导致应用系统与Oracle系统竞争使用SYSTEM表空间,会极大的影响Oracle系统的执行效率。为此,Oracle建议将非SYSTEM表空间设置为应用系统的默认永久表空间,并且将非TEMP临时表空间设置为应用系统的临时表空间。这样有利于数据库管理员根据应用系统的运行情况适时调整默认表空间和临时表空间。

更改默认临时表空间需要使用ALTER DATABASE DEFAULT TEMPRORY TABLESPACE语句,更改默认永久表空间需要使用ALTER DATABASE DEFAULT TABLESPACE语句。

2.例如:将临时表空间temp_1设置为默认的临时表空间。

3.例如:将表空间tbs_example设置为默认的永久表空间。

4.更改表空间的状态:

表空间有只读和可读写两种状态,若设置某个表空间为只读状态,则用户就不能够对该表空间的数据进行DML操作(INSERT、UPDATE和DELETE),但对某些对象的删除操作还是可以进行的,比如,索引和目录就可以被删除掉;若设置某个表空间为可读写状态,则用户旧可以对表空间的数据进行任何正常的操作,这也是表空间的默认状态。

设置表空间为只读状态,可以保证表空间数据的完整性。通常在进行数据库的备份、恢复及历史数据的完整性保护时,可将指定的表空间设置成只读状态。但设置表空间为只读并不是可以随意进行的,必须满足三个条件:

1、该表必须为ONLINE状态。

2、该表空间不能包含任何回滚段。

3、改表空间不能在归档模式下。

更改表空间的读写状态需要使用ALTER TABLESPACE...READ|ONLY READ WRITE语句

5.例如:修改tbs_test_3 表空间为只读状态。

6.例如:修改tbs_test_3 表空间为可读写状态。

5. oracle数据回滚什么意思

1、如果你是想修改数据库里的字段并保存的话,可以使用:select t.*,t.rowid from tablename t where。。。点击查询结果 上面的 有个小锁头的 按钮,变成开的就可以 ,编辑结果了,编辑后,点击 红钩的 按钮,以及页面上面的 确认保存更改数据的按钮(就是 有个绿色的小箭头,下面有个小圆柱--对应的红色的小箭头 是回滚按钮,不保存你的修改到数据库)。确认后,数据修改成功,并保存到数据库。 适合修改少量数据,且此操作不锁表,既操作同时不影响其他对表的查询修改等。

2、update语句update tablename set 字段1=值,字段2=值 where 。。 合适批量修改,锁表。

3、也可将表中的数据用SQL的语句整理好,插入新建的临时表,truncate原来的表的数据,再将临时表的数据插回原表。

6. oracle数据回滚后还会造成锁表吗

Oracle数据库的体系结构包括四个方面:数据库的物理结构、逻辑结构、内存结构及进程。

1. 物理结构

物理数据库结构是由构成数据库的操作系统文件所决定,Oracle数据库文件包括:

数据文件(Data File)

数据文件用来存储数据库中的全部数据,例如数据库表中的数据和索引数据.通常以为*.dbf格式,例如:userCIMS.dbf 。

日志文件(Redo Log File)

日志文件用于记录数据库所做的全部变更(如增加、删除、修改)、以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。

控制文件(Control File)

每个Oracle数据库都有相应的控制文件,它们是较小的二进制文件,用于记录数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。用于打开、存取数据库。名字通常为Ctrl*ctl 格式,如Ctrl1CIMS.ctl。

配置文件

配置文件记录Oracle数据库运行时的一些重要参数,如:数据块的大小,内存结构的配置等。名字通常为init*.ora 格式,如:initCIMS.ora 。

2 逻辑结构

Oracle数据库的逻辑结构描述了数据库从逻辑上如何来存储数据库中的数据。逻辑结构包括表空间、段、区、数据块和模式对象。数据库的逻辑结构将支配一个数据库如何使用系统的物理空间.模式对象及其之间的联系则描述了关系数据库之间的设计.

一个数据库从逻辑上说是由一个或多个表空间所组成,表空间是数据库中物理编组的数据仓库,每一个表空间是由段(segment)组成,一个段是由一组区(extent)所组成,一个区是由一组连续的数据库块(database block)组成,而一个数据库块对应硬盘上的一个或多个物理块。一个表空间存放一个或多个数据库的物理文件(即数据文件).一个数据库中的数据被逻辑地存储在表空间上。

表空间(tablespace)

Oracle数据库被划分为一个或多个称为表空间的逻辑结构,它包括两类表空间,System表空间和非System表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。。

一个表空间包含许多段,每个段有一些可以不连续的区组成,每个区由一组连续的数据块组成,数据块是数据库进行操作的最小单位。

每个表空间对应一个或多个数据文件,每个数据文件只能属于一个表空间。

数据库块(database block)

数据库块也称逻辑块或ORACLE块,它对应磁盘上一个或多个物理块,它的大小由初始化参数db-block-size(在文件init.ora中)决定,典型的大小是2k。Pckfree 和pctused 两个参数用来优化数据块空间的使用。

区(extent)

区是由一组连续的数据块所组成的数据库存储空间分配的逻辑单位。

段(segment)

段是一个或多个不连续的区的集合,它包括一个表空间内特定逻辑结构的所有数据,段不能跨表空间存放。Oracle数据库包括数据段、索引段、临时段、回滚段等。

模式对象(schema object)

Oracle数据库的模式对象包括表、视图、序列、同意词、索引、触发器、存储.过程等,关于它们将重点在后面章节介绍。

3.Oracle Server系统进程与内存结构

当在计算机服务器上启动Oracle数据库后,称服务器上启动了一个Oracle实例(Instance)。ORACLE 实例(Instance)是存取和控制数据库的软件机制,它包含系统全局区(SGA)和ORACLE进程两部分。SGA是系统为实例分配的一组共享内存缓冲区,用于存放数据库实例和控制信息,以实现对数据库中数据的治理和操作。

进程是操作系统中一个极为重要的概念。一个进程执行一组操作,完成一个特定的任务.对ORACLE数据库治理系统来说,进程由用户进程、服务器进程和后台进程所组成。

当用户运行一个应用程序时,系统就为它建立一个用户进程。服务器进程处理与之相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的ORACLE请求服务。

为了提高系统性能,更好地实现多用户功能,ORACLE还在系统后台启动一些后台进程,用于数据库数据操作。

系统进程的后台进程主要包括:

SMON 系统监控进程:(system monitor)负责完成自动实例恢复和回收分类(sort)表空间。

PMON 进程监控进程:(PRocess monitor)实现用户进程故障恢复、清理内存区和释放该进程所需资源等。

DBWR 数据库写进程:数据库缓冲区的治理进程。

在它的治理下,数据库缓冲区中总保持有一定数量的自由缓冲块,以确保用户进程总能找到供其使用的自由缓冲块。

LGWR 日志文件写进程:是日志缓冲区的治理进程,负责把日志缓冲区中的日志项写入磁盘中的日志文件上。每个实例只有一个LGWR进程。

ARCH 归档进程:(archiver process)把已经填满的在线日志文件拷贝到一个指定的存储设备上。仅当日志文件组开关(switch)出现时,才进行ARCH操作。ARCH不是必须的,而只有当自动归档可使用或者当手工归档请求时才发出。

RECO 恢复进程:是在具有分布式选项时使用的一个进程,主要用于解决引用分布式事务时所出现的故障。它只能在答应分布式事务的系统中出现。

LCKn 封锁进程:用于并行服务器系统,主要完成实例之间的封锁。

内存结构(SGA)

SGA是Oracle为一个实例分配的一组共享内存缓冲区,它包含该实例的数据和控制信息。SGA在实例启动时被自动分配,当实例关闭时被收回。数据库的所有数据操作都要通过SGA来进行。

SGA中内存根据存放信息的不同,可以分为如下几个区域:Buffer Cache:存放数据库中数据库块的拷贝。它是由一组缓冲块所组成,这些缓冲块为所有与该实例相链接的用户进程所共享。缓冲块的数目由初始化参数DB_BLOCK_BUFFERS确定,缓冲块的大小由初始化参数DB_BLOCK_SIZE确定。大的数据块可提高查询速度。它由DBWR操作。

b. 日志缓冲区Redo Log Buffer:存放数据操作的更改信息。它们以日志项(redo entry)的形式存放在日志缓冲区中。当需要进行数据库恢复时,日志项用于重构或回滚对数据库所做的变更。日志缓冲区的大小由初始化参数LOG_BUFFER确定。大的日志缓冲区可减少日志文件I/O的次数。后台进程LGWR将日志缓冲区中的信息写入磁盘的日志文件中,可启动ARCH后台进程进行日志信息归档。

c. 共享池Shared Pool:包含用来处理的SQL语句信息。它包含共享SQL区和数据字典存储区。共享SQL区包含执行特定的SQL语句所用的信息。数据字典区用于存放数据字典,它为所有用户进程所共享。

7. oracle数据回滚指定时间

启动的时候无所谓先后,关闭的话

1.首先是关闭监听(让远程客户端无法再连进来);

2.发出一个系统检查点,让数据文件和控制文件的系统修改号统一;(alter system checkpoint;)

3.shutdown immediate & shutdown transactional;

如果是比较繁忙的数据库,可能正在执行的事务很多,发出关闭命令,会出现回滚的情况,这有可能会等很长时间,一般可以在2步骤之前先杀掉这些会话,可以在数据库里面杀,也可以在系统级别杀(如果是linux、unix系统的话) 例如:

ps -ef |grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -9