Oracle 11gR2 GI和DB安装目录权限属主被修改后的恢复(3)

之前我们曾提到rootcrs.pl -init运行耗时5秒钟就返回了,如果是对于GRID_HOME下所有的文件都检查并修正一边权限和属主5秒钟是远远不够的,这一点相信使用过chmod和chown的童鞋都有体会,经过我的进一步测试发现rootcrs.pl脚本修改的只是$GRID_HOME目录里这些子目录及其下的文件

drwxr-xr-x  17 root    oinstall      4096 Feb 23 19:29 crs     

drwxrwxr-x    5 grid    oinstall        256 Feb 23 19:29 log     

drwxrwxr-x    9 grid    oinstall        256 Feb 23 19:29 cv     

drwxr-xr-x    3 root    oinstall        256 Feb 23 19:29 osysmond

drwxr-xr-x    3 root    oinstall        256 Feb 23 19:29 ologgerd

drwxr-x---    3 grid    oinstall        256 Feb 23 19:29 ohasd   

drwxr-x---    3 grid    oinstall        256 Feb 23 19:29 mdns   

drwxr-x---    3 root    oinstall        256 Feb 23 19:29 gnsd   

drwxr-x---    3 grid    oinstall        256 Feb 23 19:29 gipc   

drwxr-xr-x    3 root    oinstall        256 Feb 23 19:29 ctss

drwxr-x---    4 root    oinstall        256 Feb 23 19:29 crf

drwxr-xr-x    3 root    oinstall      12288 Feb 23 19:29 lib

drwxr-xr-x    2 root    oinstall      16384 Feb 23 19:31 bin

drwxrwxr-x    5 grid    oinstall        256 Feb 23 19:31 cdata

drwxr-x---    6 grid    oinstall        256 Feb 23 19:36 gpnp

drwxrwxr-x    5 grid    oinstall      4096 Feb 25 13:07 cfgtoollogs

drwx--x--x    6 grid    oinstall        256 Feb 23 19:02 css

drwxr-x---    7 grid    oinstall        256 Feb 23 19:02 evm

从名称上可以看出这些都是GI后台核心进程的工作目录,猜测rootcrs.pl -init的功能只是修复各GI组件密切相关目录与文件的权限,保证GI能够正常启动与停止,但是对于其它目录则不管不问,于是我们可以看到$GRID_HOME目录下仍有大部分目录的权限还处在757

root@qzp750707b:/oracle/app/grid/product/11.2.0/grid_1>ls -lrt

total 176

-rwxr-xrwx    1 grid    oinstall        59 Feb 22 16:05 oraInst.loc

drwxr-xrwx    3 grid    oinstall        256 Feb 23 18:57 demo

drwxr-xrwx    3 grid    oinstall        256 Feb 23 18:57 csmig

drwxr-xrwx    6 grid    oinstall        256 Feb 23 18:57 assistants

drwxr-xrwx    6 grid    oinstall        256 Feb 23 18:57 nls

drwxr-xrwx    5 grid    oinstall        256 Feb 23 18:57 md

drwxr-xrwx    7 grid    oinstall        256 Feb 23 18:57 javavm

drwxr-xrwx    3 grid    oinstall        256 Feb 23 18:57 hs

drwxr-xrwx    4 grid    oinstall        256 Feb 23 18:57 has

drwxr-xrwx    3 grid    oinstall        256 Feb 23 18:57 diagnostics

drwxr-xrwx    4 grid    oinstall        256 Feb 23 18:57 owm

drwxr-xrwx    7 grid    oinstall        256 Feb 23 18:57 ord

drwxr-xrwx    4 grid    oinstall        256 Feb 23 18:57 oracore

drwxr-xrwx    3 grid    oinstall        256 Feb 23 18:57 wwg

drwxr-xrwx    5 grid    oinstall        256 Feb 23 18:57 usm

。。。。。还有,此处省略了

为避免留下后遗症,我们需要将rootcrs.pl弃之不管的目录与文件的权限、属主也修复一下,怎么修复?MOS  1515018.1提供了现成的perl脚本,这个脚本使用方法很简单:从一台权限正常的服务器上抓取GRID_HOME、ORACLE_HOME下的所有文件与目录权限,生成shell脚本,然后在权限错误的主机上执行这个脚本,简单演示一下:

<1> 先把permission.pl下载下来复制到一台权限正常的服务器上,并赋予执行权限,这台主机上必须要有perl的执行环境

chmod u+x permission.pl

<2> 抓取$ORACLE_HOME下所有目录与文件的属主、权限,可以使用oracle用户或者root用户执行

./permission.pl /oracle/app/oracle/product/11.2.0/db_1

Following log files are generated

logfile      : permission-Thu-Mar-10-14-25-31-2016

Command file : restore-perm-Thu-Mar-10-14-25-31-2016.cmd

Linecount : 38734

生成了两个文件,ls -lrt

-rw-r-----    1 oracle  oinstall    7890011 Mar 10 14:25 restore-perm-Thu-Mar-10-14-25-31-2016.cmd

-rw-r-----    1 oracle  oinstall    4061205 Mar 10 14:25 permission-Thu-Mar-10-14-25-31-2016 

其中permission*开头的是/oracle/app/oracle/product/11.2.0/db_1目录及其下的所有子目录与文件列表,例如:

755 oracle oinstall /oracle/app/oracle/product/11.2.0/db_1

640 oracle oinstall /oracle/app/oracle/product/11.2.0/db_1/oraInst.loc

750 oracle oinstall /oracle/app/oracle/product/11.2.0/db_1/root.sh

755 oracle oinstall /oracle/app/oracle/product/11.2.0/db_1/EMStage

775 oracle oinstall /oracle/app/oracle/product/11.2.0/db_1/EMStage/PAF

。。。省略部分内容

restore*开头的包含了执行修改权限修复所需的脚本,例如:

chown  oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1

chmod  755 /oracle/app/oracle/product/11.2.0/db_1

chown  oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1/oraInst.loc

chmod  640 /oracle/app/oracle/product/11.2.0/db_1/oraInst.loc

chown  oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1/root.sh

chmod  750 /oracle/app/oracle/product/11.2.0/db_1/root.sh

chown  oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1/EMStage

chmod  755 /oracle/app/oracle/product/11.2.0/db_1/EMStage

chown  oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1/EMStage/PAF

chmod  775 /oracle/app/oracle/product/11.2.0/db_1/EMStage/PAF

。。。省略部分内容

<3> 抓取$GRID_HOME下所有目录与文件的属主、权限,必须使用root用户执行

./permission.pl /oracle/app/grid/product/11.2.0/grid_1

Following log files are generated

logfile      : permission-Thu-Mar-10-14-21-28-2016

Command file : restore-perm-Thu-Mar-10-14-21-28-2016.cmd

Linecount : 60115

结果也生成了两个文件

ls -lrt

-rw-r-----    1 root    system    13372037 Mar 10 14:24 restore-perm-Thu-Mar-10-14-24-03-2016.cmd

-rw-r-----    1 root    system      6805988 Mar 10 14:24 permission-Thu-Mar-10-14-24-03-2016

<4> 在目标主机上执行restore*开头的两个脚本,root用户执行

将restore*脚本复制到目标主机后,执行

chmod u+x restore-perm-Thu-Mar-10-14-25-31-2016.cmd restore-perm-Thu-Mar-10-14-24-03-2016.cmd

./restore-perm-Thu-Mar-10-14-25-31-2016.cmd

./restore-perm-Thu-Mar-10-14-24-03-2016.cmd

总结:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3fc41821a97543deb4fd3debbe701d93.html