A-A+
RAC单节点属组恢复
rac单节点权限恢复
背景:一个同事误对ORACLE_BASE的顶层目录进行了chown -R oracle:oinstall /u01 操作,导致rac节点1无法正常启动。
下边重现并在没有备份的情况下恢复。
主要技术:getfacl 和setfacl
该命令是用来备份文件访问权限和恢复文件权限的
这个是可以从节点2 做节点1 的 属组问题的
节点1当前状态
[root@11grac1 ~]# su - grid [grid@11grac1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora....SM1.asm application ONLINE ONLINE 11grac1 ora....C1.lsnr application ONLINE ONLINE 11grac1 ora....ac1.gsd application OFFLINE OFFLINE ora....ac1.ons application ONLINE ONLINE 11grac1 ora....ac1.vip ora....t1.type ONLINE ONLINE 11grac1 ora....SM2.asm application ONLINE ONLINE 11grac2 ora....C2.lsnr application ONLINE ONLINE 11grac2 ora....ac2.gsd application OFFLINE OFFLINE ora....ac2.ons application ONLINE ONLINE 11grac2 ora....ac2.vip ora....t1.type ONLINE ONLINE 11grac2 ora.DATA.dg ora....up.type ONLINE ONLINE 11grac1 ora....ER.lsnr ora....er.type ONLINE ONLINE 11grac1 ora....N1.lsnr ora....er.type ONLINE ONLINE 11grac1 ora.asm ora.asm.type ONLINE ONLINE 11grac1 ora.cvu ora.cvu.type ONLINE ONLINE 11grac2 ora.gsd ora.gsd.type OFFLINE OFFLINE ora....network ora....rk.type ONLINE ONLINE 11grac1 ora.oc4j ora.oc4j.type ONLINE ONLINE 11grac2 ora.ons ora.ons.type ONLINE ONLINE 11grac1 ora.racdb.db ora....se.type ONLINE ONLINE 11grac1 ora.scan1.vip ora....ip.type ONLINE ONLINE 11grac1
数据库版本
SQL> set line 400
SQL> select * from gv$version;
INST_ID BANNER
---------- --------------------------------------------------------------------------------
1 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
1 PL/SQL Release 11.2.0.3.0 - Production
1 CORE 11.2.0.3.0 Production
1 TNS for Linux: Version 11.2.0.3.0 - Production
1 NLSRTL Version 11.2.0.3.0 - Production
2 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
2 PL/SQL Release 11.2.0.3.0 - Production
2 CORE 11.2.0.3.0 Production
2 TNS for Linux: Version 11.2.0.3.0 - Production
2 NLSRTL Version 11.2.0.3.0 - Production
10 rows selected.
OS信息
[oracle@11grac1 ~]$ uname -a Linux 11grac1 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
模拟在节点1修改oracle根目录属组
[root@11grac1 ~]# su - oracle
[oracle@11grac1 ~]$ env | grep ORACLE_BASE
ORACLE_BASE=/u01/app/oracle
[root@11grac1 ~]# ls -l /
total 110
dr-xr-xr-x. 2 root root 4096 May 10 08:33 bin
dr-xr-xr-x. 5 root root 1024 May 8 23:15 boot
drwxr-xr-x. 2 root root 4096 Jul 26 2011 cgroup
drwxr-xr-x 16 root root 3700 Jun 17 15:12 dev
drwxr-xr-x. 121 root root 12288 Jun 17 15:12 etc
drwxr-xr-x. 4 root root 4096 May 8 15:23 home
dr-xr-xr-x. 13 root root 4096 May 10 08:33 lib
dr-xr-xr-x. 9 root root 12288 May 9 14:02 lib64
drwx------. 2 root root 16384 May 8 23:04 lost+found
drwxr-xr-x. 2 root root 4096 Jun 28 2011 media
drwxr-xr-x 2 root root 0 Jun 17 15:12 misc
drwxr-xr-x. 2 root root 4096 Jun 28 2011 mnt
drwxr-xr-x 2 root root 0 Jun 17 15:12 net
drwxr-xr-x. 4 root root 4096 May 9 12:50 opt
dr-xr-xr-x 242 root root 0 Jun 17 15:11 proc
dr-xr-x---. 21 root root 4096 May 11 22:04 root
dr-xr-xr-x. 2 root root 12288 May 9 09:14 sbin
drwxr-xr-x. 2 root root 4096 May 8 23:07 selinux
drwxr-xr-x. 2 root root 4096 Jun 28 2011 srv
drwxr-xr-x 13 root root 0 Jun 17 15:11 sys
drwxrwxrwt. 15 root root 4096 Jun 17 15:12 tmp
drwxr-xr-x. 5 root oinstall 4096 May 9 13:19 u01
drwxr-xr-x. 13 root root 4096 May 8 23:08 usr
drwxr-xr-x. 22 root root 4096 May 8 23:14 var
[root@11grac1 ~]# chown oracle:oinstall -R /u01
[root@11grac1 ~]# ls -l /
total 110
dr-xr-xr-x. 2 root root 4096 May 10 08:33 bin
dr-xr-xr-x. 5 root root 1024 May 8 23:15 boot
drwxr-xr-x. 2 root root 4096 Jul 26 2011 cgroup
drwxr-xr-x 16 root root 3700 Jun 17 15:12 dev
drwxr-xr-x. 121 root root 12288 Jun 17 15:12 etc
drwxr-xr-x. 4 root root 4096 May 8 15:23 home
dr-xr-xr-x. 13 root root 4096 May 10 08:33 lib
dr-xr-xr-x. 9 root root 12288 May 9 14:02 lib64
drwx------. 2 root root 16384 May 8 23:04 lost+found
drwxr-xr-x. 2 root root 4096 Jun 28 2011 media
drwxr-xr-x 2 root root 0 Jun 17 15:12 misc
drwxr-xr-x. 2 root root 4096 Jun 28 2011 mnt
drwxr-xr-x 2 root root 0 Jun 17 15:12 net
drwxr-xr-x. 4 root root 4096 May 9 12:50 opt
dr-xr-xr-x 242 root root 0 Jun 17 15:11 proc
dr-xr-x---. 21 root root 4096 May 11 22:04 root
dr-xr-xr-x. 2 root root 12288 May 9 09:14 sbin
drwxr-xr-x. 2 root root 4096 May 8 23:07 selinux
drwxr-xr-x. 2 root root 4096 Jun 28 2011 srv
drwxr-xr-x 13 root root 0 Jun 17 15:11 sys
drwxrwxrwt. 15 root root 4096 Jun 17 15:12 tmp
drwxr-xr-x. 5 oracle oinstall 4096 May 9 13:19 u01
drwxr-xr-x. 13 root root 4096 May 8 23:08 usr
drwxr-xr-x. 22 root root 4096 May 8 23:14 var
[root@11grac1 ~]# sync
[root@11grac1 ~]# reboot
Broadcast message from root@11grac1
(/dev/pts/0) at 15:29 ...
The system is going down for reboot NOW!
[root@11grac1 bin]# ./crsctl start crs
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.
[root@11grac1 bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
节点2正常
[root@11grac2 ~]# su - grid [grid@11grac2 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora....ac1.vip ora....t1.type ONLINE ONLINE 11grac2 ora....SM2.asm application ONLINE ONLINE 11grac2 ora....C2.lsnr application ONLINE ONLINE 11grac2 ora....ac2.gsd application OFFLINE OFFLINE ora....ac2.ons application ONLINE ONLINE 11grac2 ora....ac2.vip ora....t1.type ONLINE ONLINE 11grac2 ora.DATA.dg ora....up.type ONLINE ONLINE 11grac2 ora....ER.lsnr ora....er.type ONLINE ONLINE 11grac2 ora....N1.lsnr ora....er.type ONLINE ONLINE 11grac2 ora.asm ora.asm.type ONLINE ONLINE 11grac2 ora.cvu ora.cvu.type ONLINE ONLINE 11grac2 ora.gsd ora.gsd.type OFFLINE OFFLINE ora....network ora....rk.type ONLINE ONLINE 11grac2 ora.oc4j ora.oc4j.type ONLINE ONLINE 11grac2 ora.ons ora.ons.type ONLINE ONLINE 11grac2 ora.racdb.db ora....se.type ONLINE ONLINE 11grac2 ora.scan1.vip ora....ip.type ONLINE ONLINE 11grac2
在节点2备份权限并传到节点1
[root@11grac2 ~]# cd / [root@11grac2 /]# date;getfacl -R u01 > /tmp/ch.bak;date Mon Jun 17 15:42:59 CST 2013 Mon Jun 17 15:44:39 CST 2013 [root@11grac2 /]# scp /tmp/ch.bak 192.168.137.165:/tmp/ch.bak The authenticity of host '192.168.137.165 (192.168.137.165)' can't be established. RSA key fingerprint is 69:c3:cb:7f:5b:dd:59:a9:5c:94:4e:33:fa:5b:0c:70. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.137.165' (RSA) to the list of known hosts. root@192.168.137.165's password: ch.bak 100% 9531KB 4.7MB/s 00:02
在节点1上替换ch.bak中和节点相关的文件名及目录名后进行恢复
注意:替换有节点名,实例名相关的字符串
[root@11grac1 bin]# date;setfacl --restore=/tmp/ch.bak;date
部分输出略
setfacl: /u01/app/oracle/diag/clients/user_oracle/host_870208700_80/incident: No such file or directory setfacl: /u01/app/oracle/diag/clients/user_oracle/host_870208700_80/alert: No such file or directory setfacl: /u01/app/oracle/diag/clients/user_oracle/host_870208700_80/alert/log.xml: No such file or directory setfacl: /u01/app/oracle/diag/clients/user_oracle/host_870208700_80/incpkg: No such file or directory setfacl: /u01/app/oracle/diag/clients/user_oracle/host_870208700_80/metadata_dgif: No such file or directory setfacl: /u01/app/oraInventory/logs/AttachHome2013-05-09_09-56-32PM.log: No such file or directory setfacl: /u01/app/oraInventory/logs/AttachHome2013-05-09_10-17-21PM.log: No such file or directory setfacl: /u01/app/oraInventory/logs/AttachHome2013-05-09_08-58-40PM.log: No such file or directory setfacl: /u01/app/oraInventory/logs/UpdateNodeList2013-05-09_09-28-20PM.log: No such file or directory setfacl: /u01/app/oraInventory/logs/AttachHome2013-05-09_08-40-32PM.log: No such file or directory Mon Jun 17 16:02:38 CST 2013
稍过几分钟即可
[root@11grac1 bin]# ./crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online [root@11grac1 bin]# su - grid [grid@11grac1 ~]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora....SM1.asm application ONLINE ONLINE 11grac1 ora....C1.lsnr application ONLINE ONLINE 11grac1 ora....ac1.gsd application OFFLINE OFFLINE ora....ac1.ons application ONLINE ONLINE 11grac1 ora....ac1.vip ora....t1.type ONLINE ONLINE 11grac1 ora....SM2.asm application ONLINE ONLINE 11grac2 ora....C2.lsnr application ONLINE ONLINE 11grac2 ora....ac2.gsd application OFFLINE OFFLINE ora....ac2.ons application ONLINE ONLINE 11grac2 ora....ac2.vip ora....t1.type ONLINE ONLINE 11grac2 ora.DATA.dg ora....up.type ONLINE ONLINE 11grac1 ora....ER.lsnr ora....er.type ONLINE ONLINE 11grac1 ora....N1.lsnr ora....er.type ONLINE ONLINE 11grac2 ora.asm ora.asm.type ONLINE ONLINE 11grac1 ora.cvu ora.cvu.type ONLINE ONLINE 11grac2 ora.gsd ora.gsd.type OFFLINE OFFLINE ora....network ora....rk.type ONLINE ONLINE 11grac1 ora.oc4j ora.oc4j.type ONLINE ONLINE 11grac2 ora.ons ora.ons.type ONLINE ONLINE 11grac1 ora.racdb.db ora....se.type ONLINE ONLINE 11grac1 ora.scan1.vip ora....ip.type ONLINE ONLINE 11grac2
至此,全部OK!