一、单机
1.获取脚本
2.Oracle执行脚本,收集权限信息
[oracle@cs scripts]$ chmod 755 permission.pl
[oracle@cs scripts]$ ./permission.pl /u01
Following log files are generated
logfile : permission-Thu-Jul-20-09-32-41-2023
Command file : restore-perm-Thu-Jul-20-09-32-41-2023.cmd
Linecount : 41025
3.模拟权限误操作
[root@cs ~]# chown root:root /u01 -R
4.错误现象
[oracle@cs ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 20 09:46:11 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
5.root执行权限恢复脚本
[root@cs scripts]# chmod 755 restore-perm-Thu-Jul-20-09-32-41-2023.cmd
[root@cs scripts]# ./restore-perm-Thu-Jul-20-09-32-41-2023.cmd
6.恢复后,数据库连接等正常
[oracle@cs ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 20 10:10:03 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select open_mode from v$database;
OPEN_MODE
-----------
READ WRITE
二、RAC
RAC环境收集权限信息,需要root执行脚本。
1.正常节点执行脚本,收集权限信息
[root@rac1 scripts]# chmod 755 permission.pl
[root@rac1 scripts]# ./permission.pl /u01
2.将权限恢复脚本上传到异常节点,进行恢复
注意:执行脚本前需要对节点名称等进行修改,避免找不到相应路径,脚本执行失败。
[root@rac2 scripts]# chmod 755 restore-perm-Thu-Jul-20-09-32-41-2023.cmd
[root@rac2 scripts]# ./restore-perm-Thu-Jul-20-09-32-41-2023.cmd
三、脚本部分内容示例
1.permission-Thu-Jul-20-11-18-25-2023
775 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home"
750 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/root.sh"
750 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/root.sh.old"
640 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/oraInst.loc"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/invDetails.properties"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0/globalVarQueries.jar"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0/fileQueries.jar"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/generalQueries"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/generalQueries/10.2.0.2.0"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/generalQueries/10.2.0.2.0/generalQueries.jar"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/rgsQueries"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/rgsQueries/10.1.0.3.0"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/rgsQueries/10.1.0.3.0/rgsQueries.jar"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/netQueries"
770 oracle oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/netQueries/10.2.0.2.0"
2.restore-perm-Thu-Jul-20-11-18-25-2023.cmd
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home"
chmod 775 "/u01/app/oracle/product/11.2.0/db_home"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/root.sh"
chmod 750 "/u01/app/oracle/product/11.2.0/db_home/root.sh"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/root.sh.old"
chmod 750 "/u01/app/oracle/product/11.2.0/db_home/root.sh.old"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/oraInst.loc"
chmod 640 "/u01/app/oracle/product/11.2.0/db_home/oraInst.loc"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/invDetails.properties"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/invDetails.properties"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0/globalVarQueries.jar"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/globalVarQueries/11.2.0.4.0/globalVarQueries.jar"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0/fileQueries.jar"
chmod 770 "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/fileQueries/10.1.0.3.0/fileQueries.jar"
chown oracle:oinstall "/u01/app/oracle/product/11.2.0/db_home/inventory/Queries21/generalQueries"
参考MOS:Script to capture and restore file permission in a directory (for eg. ORACLE_HOME) (Doc ID 1515018.1)