suse10sp2+oracle11gR1+rac
前段时间由于数据库故障,幸好提前备份了数据库,临时装了一个数据库,业务凑活着用。经过这一次,感觉备份是多么的重要啊,否则,肯定要被骂的狗血喷头了。。。
也是这一次发现自己有很多东西要学习,因此记下来提高自己,有错误的也请大家见谅,才疏学浅
备份,备份。。。
exp/imp
貌似11g有了数据泵的概念,据说效率很高expdb/impdb,具体参数还是搜一下,表示没有用过,依然很土的在用exp/imp。
//分割线
之前存储故障,导致数据文件不一致,数据库无法启动,无奈,重建数据库之后,crs_stat -t 检查状态的时候,其中ora.ora11g.inst1,ora.ora11g.inst2,ora.ora11g.db都是offline的 ,其他资源都是online的,但是可以手动拉起数据库,实例也是open的。很是纳闷。。。
于是在网上一顿找,恶补一下rac的知识,半路出家啊,差距啊
1. 手动启动ora.ora11g.inst1,crs_start -f ora.ora11g.inst1,启动之后状态为unknown,检查alert.log和crs.log,报的错也没有怎么看懂,记得有一条error =-2什么的,记不太清楚了
2. 由于状态为unknown之下,是无法启动资源的,即使启动也是会报错的,因此先执行crs_stop -f ora.ora11g.inst1停掉,状态为offline之后
3. 在一个节点手动关闭crs,执行init.crs stop,节点1的资源的状态都变成offline之后,执行int.crs start 竟然ora.ora11g.inst1状态也变成online了,好现象
4.在节点2执行相同的操作,所有的状态都是online了,赶紧看一下数据库的实例的状态,select status from V$instance;
提示oracle not available
进程ID: 0
会话ID:0 等
5.又是一顿找,在本机上sqlplus连接就提示以上的问题,检查oracle_SID,oracle环境变量等
env|grep oracle
检查监听状态也是正常的
lsnrctl status
6.网上看到有说oracle_home路径的最后多一个/和少一个/的云云,对应检查一下env|grep oracle oracle_home路径的最后没有/,export试一下,连接上了,检查实例的状态也是open的。于是直接修改.bashrc中oracle_home的路径最后都添加一个/,连接正常,实例状态都是open。
数据库启动了,但是连接不上应该是环境变量的问题吧
剩下的工作就是创建用户,导入数据库,修改业务配置文件,数据库就可以用了。
以备以后使用吧,最好以后不用,数据库不出故障