教程
你说:
很简单的
你说:
特别是用了RMAN以后
Catherine(在北京)说:
现在怎么做
你说:
先把standby的昨天晚上起来的那个数据库停了
Catherine(在北京)说:
ok
你说:
停了?
Catherine(在北京)说:
还没完,怎么这么慢
你说:
shutdown immediate?
Catherine(在北京)说:
是的
你说:
还没停?
你说:
不管他了,shutdown abort好了
你说:
反正也不要这个库了
Catherine(在北京)说:
停了
Catherine(在北京)说:
现在呢
你说:
你是要把redo改为1M吗?
Catherine(在北京)说:
是的
Catherine(在北京)说:
怎么改?
你说:
你先作restore吧,待会儿再改
你说:
在standby上
你说:
$ORACLE_HOME/bin/rman target /
Catherine(在北京)说:
继续
你说:
sorry
你说:
先要mount数据库
你说:
还是得先改redo
Catherine(在北京)说:
是改主库的啰
你说:
改redo要到primary上改
你说:
对
Catherine(在北京)说:
怎么改,快点呀
你说:
你简单些用图形界面改吧
你说:
算了算了
你说:
还是命令行吧
你说:
等会儿
你说:
你先select * from v$log
Catherine(在北京)说:
孙鹏的机器服务名都没配置,命令行吧
你说:
select * from v$logfile;
你说:
看一下当前的group#和member
Catherine(在北京)说:
当前group是8
你说:
是8,9,10三个是吧
你说:
行那就加1,2,3三组1M的
Catherine(在北京)说:
member: /global/oradata/ctsdb/redo08.log
你说:
等会儿,我告诉你SQL
Catherine(在北京)说:
是
你说:
ALTER DATABASE
ADD LOGFILE GROUP 1
('/global/oradata/ctsdb/redo01.log') SIZE 1024K
你说:
ALTER DATABASE
ADD LOGFILE GROUP 2
('/global/oradata/ctsdb/redo02.log') SIZE 1024K
你说:
ALTER DATABASE
ADD LOGFILE GROUP 3
('/global/oradata/ctsdb/redo03.log') SIZE 1024K
你说:
这样就加了三组
Catherine(在北京)说:
加好了
Catherine(在北京)说:
然后呢
你说:
三组都加完了?
Catherine(在北京)说:
是
你说:
然后作alter system archive log current;
你说:
要让新加的redo成为current的,才可以删除老的redo
你说:
select group#,status from v$log;
你说:
可以看现在各个组的redo的状态
Catherine(在北京)说:
8是active, 9,10 是inactive
你说:
再作一次archive
你说:
再看
Catherine(在北京)说:
8,9.10都是inactive了
你说:
ok
你说:
删掉这三组
你说:
alter database drop logfile group 8;
你说:
应该是这样
你说:
alter database drop logfile group 9;
你说:
alter database drop logfile group 10;
Catherine(在北京)说:
删除了
你说:
好,我们还要创建standby redo也改成1M
你说:
原来也是3M
Catherine(在北京)说:
但v$logfile里有group4,5,6,7
你说:
呵呵,这个就是standby redo
Catherine(在北京)说:
是什么
Catherine(在北京)说:
哦
你说:primary端的是为了预备以后角色切换时候用的
Catherine(在北京)说:啊,我要把,4,5.6.7都改成1M?
你说:
其实standby redo只需要在standby上有就可以了
Catherine(在北京)说:
O
你说:
这几个可以先删除再重新创建
Catherine(在北京)说:
今天可以不处理吧?
你说:
不可以
你说:
反正standby那边也要用的啊
Catherine(在北京)说:
那就先删除了?
你说:
alter database drop standby logfile group 4;
你说:
语法里要加一个standby
Catherine(在北京)说:
都删除了,然后怎么加
你说:
alter database add standby logfile group 4 ('/global/oradata/ctsdb/stdby_redo04.log') size 1024K;
你说:
一样的,也就是加一个standby关键字
你说:
对了,你还要先去/global/oradata/ctsdb/目录下删除物理的stdby_redo04.log文件
你说:
先把那四个文件从目录里面删掉,否则创建应该是会报文件亿存在的,因为drop redo的SQL并不帮着删除物理文件
Catherine(在北京)说:
幸亏我键盘敲的慢
你说:
敲得快也没事儿啊,最多报个错也无所谓嘛
Catherine(在北京)说:
都加完了
Catherine(在北京)说:
是否可以恢复了
你说:
没有
Catherine(在北京)说:
:(
你说:
现在生成standby controlfile
你说:
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/s.ctl';
Catherine(在北京)说:
然后呢
你说:
生成完了以后把这个/tmp/s.ctl文件ftp到standby上去
你说:
也可以ftp到tmp目录中,反正待会儿要改名子
你说:
同时还需要ftp的是新生成的那几个log文件
Catherine(在北京)说:
是放到$ORACLE_HOME/
你说:
1,2,3,4,5,6,7
Catherine(在北京)说:
dbs下是吗
你说:
不用
你说:
可以全部放到/global/oradata/ctsdb/下面
你说:
还没好?
你说:
你可以趁着这个时间,先检查一下primary和standby上的监听
你说:
用lsnrctl status和lsnrctl status listener_dg
你说:
来检查,如果两边这两个监听都是启动的那就行了
Catherine(在北京)说:
传完了
你说:
好
你说:
现在可以恢复了
你说:
先进standby的sqlplus
你说:
现在是不是standby的/global/oradata/ctsdb/目录下有你刚传过来的所有文件?
你说:
包括1,2,3,4,5,6,7这7组log,还有一个s,ctl
Catherine(在北京)说:
是的
你说:
好,把s.ctl改名为正常的控制文件名,覆盖原来的
Catherine(在北京)说:
演示时你不在不行啊
你说:
应该是control01.ctl,control02.ctl,control03.ctl
你说:
我一会儿过去
Catherine(在北京)说:
cp就可以吧
你说:
对
Catherine(在北京)说:
好乐得
你说:
进sqlplus
你说:
startup nomount;
你说:
alter database mount standby database;
Catherine(在北京)说:
没恢复呢?
你说:
是啊
你说:
先mount才能恢复啊
Catherine(在北京)说:
好了
Catherine(在北京)说:
现在可以恢复了?
你说:
进rman,就是最初的那条语句
你说:
$ORACLE_HOME/bin/rman target /
你说:
然后执行restore database;
你说:
然后就等着吧
你说:
等到结束以后
你说:
在sqlplus中执行:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE PARALLEL 4 DISCONNECT FROM SESSION;
你说:
其中PARALLEL 4 可以省略
Catherine(在北京)说:
restore估计多长时间啊
你说:
然后在peimary端设置archive_lag_target参数值到60,就是一分钟归档一次了
你说:
20分钟差不多吧
你说:
因为这个备份是昨天传的,所以恢复完了以后,数据库还是昨天的状态
Catherine(在北京)说:
那跟主库不一致了
你说:
这时候你用alertf监控standby的alertlog,可以看到它会自动到primary上取归档,然后作恢复,直到跟主库一致为止
Catherine(在北京)说:
哦
你说:
这也是为什么昨天我说要建完再作初始化的原因,因为这个恢复总还是要时间的,象今天这样又在网络上传归档,那就可能时间还要长一些