1最简单的是,先删除1个日志,然后在新的路径下创建一个日志,直到所有的日志都重新创建完成即可完成迁移。删除前先备份。
2再有一个方法,先关闭数据库,把日志拷贝新的位置,然后修改初始化参数,再启动数据库。(推荐这种方法,因为能保留重做信息)
第二种方法的实施步骤(仅供参考)
1
关闭数据库,shutdown
immediate;
2
把日志拷贝到新的位置
3
启动数据库到mount状态,startup
mount;
4
修改初始化参数,Alter
database
rename
file
‘c:\test\redo01log’
to
‘d:\test\redo01log’;
5
启动数据库,alter
database
open;
1关闭数据库shutdown
2使用os 命令将redo log files 拷贝到新的位置
mv /u01/app/oracle/oradata/MYNEWDB/onlinelog/o1_mf_1_89y70t1b_log /home/o1_mf_1_89y70t1b_testlog
3启动数据库,只装载,不打开。
CONNECT / as SYSDBA
STARTUP MOUNT
4重命名redo log member
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/MYNEWDB/onlinelog/o1_mf_1_89y70t1b_log' TO '/home/o1_mf_1_89y70t1b_testlog';
5打开数据库
alter database open;
6确认是否已经切换到新的位置
SQL select from v$logfile;
rows will be truncated
GROUP# STATUS TYPE MEMBER
如果在对数据库进行 *** 作的时候,一般情况写是将数据拿到缓冲区中进行 *** 作,除非你修改一条记录就commit一次,那么如果出现问题,那么缓冲区的数据还在,包括已经修改的数据和没有修改的数据。这样,如果贸然的commit,那么没有修改的数据也会提交到数据库中,这样就出现了错误数据。redo一次就是不管是否修改的数据都重新修改一次,直到没有故障发生时才commit。
个人意见,仅供参考
严重鄙视写代码不带注释
不那么明显的影响是, 由于频繁的io,会潜在的使数据库变慢。
明显的影响是,比如说你只有2组redo。第一组写满了,写第二组。但这时第一组的状态仍然是active的,要等到第一组redo里面记录的 *** 作全都提交了,才会变成inactive的。如果还有未提交的数据,那么第一组redo是不能被覆盖的。然后呢。。。 如果第二组日志这时也写满了,又不能去覆盖第一组,那么所有的数据库 *** 作都会hang在那里。你的客户如果耐心不好,就要砸电脑了。
夸张的影响是,如果你的数据库hang在那里的时候,发生了什么特殊的问题,导致系统进程出了故障,crash也不是不可能的。
以上就是关于oracle数据库迁移redo log的方式有哪些全部的内容,包括:oracle数据库迁移redo log的方式有哪些、如何重新配置redo log的位置、书上说:“数据库所做的修改在故障发生时可能还在缓冲区,尚未写进数据库,所以要redo”如何理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)