教你如何重建Oracle数据库的回滚段求解

教你如何重建Oracle数据库的回滚段求解,第1张

1、将数据关闭 svrmgrl >Shutdown abort 2、修改初始化参数文件 $ vi $Oracle_HOME/dbs/init< sid >ora 添加以下参数 rollback_segments=(system) _corrupted_rollback_segments=(r01,r02,r03,r04) _allow_resetlogs_corruption=ture 3、重新装载数据库svrmgrl >Startup mount 4、从数据库的控制文件中将回滚段表空间rbs的数据文件离线并去掉。 svrmgrl >recover database using backup controlfile; ---- 此时屏幕上可能会出现: ORA_00280 Change #### for thread# is in sequence# specify log:[< RET > for suggestedAUTOfrom logsourcecancel] 输入cancel(不要输入其他命令) svrmgrl >alter database open resetlogs; 5、 重建新的回滚段 ---- 将旧回滚段及回滚表空间删除。 svrmgrl >connect internal svrmgrl >create rollback segment ro tablespace system; svrmgrl >alter rollback segment ro online; svrmgrl >create tablespace rbs datafile ##/##/rbs01dbf’ size ##k; svrmgrl >create rollback segment r01 tablespace rbs; svrmgrl >create rollback segment r02 tablespace rbs; svrmgrl >create rollback segment r03 tablespace rbs; svrmgrl >create rollback segment r04 tablespace rbs; svrmgrl >alter rollback segment r01 online; svrmgrl >alter rollback segment r02 online; svrmgrl >alter rollback segment r03 online; svrmgrl >alter rollback segment r04 online; svrmgrl >Shutdown abort $ vi $ORACLE_HOME/dbs/init< sid >ora rollback_segments=(r01,r02,r03,r04) 将参数_corrupted_rollback_segment _allow_resetlogs_corruption=true去掉 svrmgrl >Startup normal

报错信息是说package中的数据不对,时期关键点在于没有找到envisiontools,也就是说你现有的数据库上,envision用户下,tools这个包体的内容可能有过变动(或者先关内容有过变动,变动后数据库找不到目标所以导致失败),因为这个导致的失败。

至于你说的,表或视图不存在,因为前面的日志中有drop的字样,个人认为可能是drop掉后,没有重新建立,所以导致的,这个可能要一点一点查了。

Oracle DML(数据库 *** 作语言)如下:

一、添加数据:

语法:insert into 表名(列名…) values(值…);

实例代码如下:

二、复制数据:

语法: insert into 表名(列名…) values(值…);

示例代码:

注意事项:

--Oracle数据库中字符串类型使用的是单引号(‘’), mysql中的字符串可以使用单引号和双引号。

--Oracle数据库没有自增长的语句,要实现序列排序需要借助序列对象。

--在 Oracle 数据库中,一个 insert 语句就只能够插入一条数据。

三、复制数据:

语法:insert into 表名 select 列名1,列名2 from 表名; 复制数据的时候,两张表的字段数量和类型必须要相同。

示例代码:

四、修改数据:

语法:update 表名 set 列1=值1, 列2=值2, …where 条件;

示例代码:

参考资料:

百度百科--DML

就三条回滚了

第二条:

INSERT INTO nn values('abc','aaa');

第三条:

INSERT INTO nn values('def','ddd');

第四条:

INSERT INTO nn values('ghi','ggg');

因为create table想回滚也回滚不了

当上边这条未提交,直接回滚的话,就相当于数据库没有写入

execute执行后

可以回滚

commit提交后

不可以回滚

其实oracle提交数据是分两步 *** 作的,第一步execute执行,第二步commit提交。对应的pl\sql也是要先点execute执行,执行后再点commit提交。

但是

commit提交后

可以用闪回查询恢复原来的数据

因为oracle会将近期的数据保存到快照中

如:

select

from

table_1

as

of

timestamp

to_timestamp('20080606

20:00:00','yyyymmdd

hh24:mi:ss');

这里'20080606

20:00:00'就是你想恢复数据到哪个时间状态

table_1是数据库的表名

这样查询到的数据就是执行更新 *** 作之前的数据

如果执行了数据库恢复 *** 作,日志序列号会归零。你可以这样查

select from v$log;

看sequence#这一列。

至于回滚不容易看吧,那是事务级别的。

以上就是关于教你如何重建Oracle数据库的回滚段求解全部的内容,包括:教你如何重建Oracle数据库的回滚段求解、Oracle数据库重新回滚数据的时候,报错,回滚失败。再重启就出现报错ora-00942,请大神!、Oracle中有哪些DML *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9601661.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存