
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 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)