moving password file to a shared device
oracle10gr2
10.2.0.1
参考:
最近实践学习了一下oracle10g rac安装过程,存储采用的是裸设备+ASM的方式。
发现控制文件、数据文件、日志文件、spfile都已放在ASM磁盘组中,但password文件仍然放在本地文件系统中。
此时如果需要添加一个sysdba用户(比如rman备份用户),在某一节点中创建完用户后,必须分别在各个节点中执行GRANT SYSDBA语句才可同步password文件。
SQL> connect as sysdba
Enter password: ******
Connected.
SQL> create user backupuser identified by backup;
User created.
--在节点1上执行GRANT SYSDBA后,节点1可采用sysdba角色登录
SQL> grant connect,sysdba to backupuser;
Grant succeeded.
SQL> connect as sysdba;
Enter password: ******
Connected.
--在节点2上未执行GRANT SYSDBA后,节点2不能以sysdba角色登录,只能以普通角色登录
SQL> connect as sysdba;
Enter password: ******
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL> connect
Enter password: ******
Connected.
SQL>
参照篇首的参考文章,整理了一下裸设备、nfs、cifs三种存储方式的password文件共享方案。
一、裸设备
实现思路:
1、安装一个裸设备;
2、创建一个新的password文件,将新password文件内容复制到裸设备中;
3、删除原password文件,再创建一个与原password文件名同名且链接到裸设备的链接文件即可。
================= NODE 1
[oracle@rh4lab15 ~]$ ls -l /dev/raw/raw3
crw-r----- 1 oracle oinstall 162, 3 Mar 21 08:51 /dev/raw/raw3
[oracle@rh4lab15 ~]$ cd $ORACLE_HOME/dbs
[oracle@rh4lab15 dbs]$ dd if=orapwdb2rac1 f=/dev/raw/raw3
7+0 records in
7+0 records out
[oracle@rh4lab15 dbs]$ mv orapwdb2rac1 orapwdb2rac1.save
[oracle@rh4lab15 dbs]$ ln -s /dev/raw/raw3 orapwdb2rac1
================= NODE 2
[oracle@rh4lab16 ~]$ cd $ORACLE_HOME/dbs
[oracle@rh4lab16 dbs]$ mv orapwdb2rac2 orapwdb2rac2.save
[oracle@rh4lab16 dbs]$ ln -s /dev/raw/raw3 orapwdb2rac2
注意事项:
1、保证裸设备有正确的权限. 最少应具有:640, owned by the oracle user and the oinstall group。
2、参数REMOTE_LOGIN_PASSWORD用于设置password文件是否为多个数据库共享. 在此必须设置为EXCLUSIVE,不能设置为SHARED。因为我们正在使用多个实例但仍为一个数据库。
二、nfs和cifs
实现思路同裸设备。
[oracle@rh4lab15 dbs]$ cd $ORACLE_HOME/dbs
[oracle@rh4lab15 dbs]$ egrep '(oracle|backup)' /etc/fstab
//10.9.8.1/backups /mnt/backups cifs guest,file_mode=0755,dir_mode=0755,uid=oracle,gid=dba 0 0
rh4lab13:/u01/oracle /u20/oracle nfs rw 0 0
[oracle@rh4lab15 dbs]$ orapwd file=newfile password=jeremy
[oracle@rh4lab15 dbs]$ cp newfile /u20/oracle/orapwdb2rac1
[oracle@rh4lab15 dbs]$ cp newfile /mnt/backups/orapwdb2rac1
[oracle@rh4lab15 dbs]$ grep SYS newfile
Binary file newfile matches
[oracle@rh4lab15 dbs]$ rm orapwdb2rac11
[oracle@rh4lab15 dbs]$ ln -s /u20/oracle/orapwdb2rac1 orapwdb2rac11
[oracle@rh4lab15 dbs]$ grep JEREMY /u20/oracle/orapwdb2rac1
--nfs方式
SQL> connect as sysdba
Connected.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SQL> grant sysdba to jeremy;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
JEREMY TRUE FALSE
[oracle@rh4lab15 dbs]$ grep JEREMY /u20/oracle/orapwdb2rac1
Binary file /u20/oracle/orapwdb2rac1 matches
--cifs方式
[oracle@rh4lab15 dbs]$ rm orapwdb2rac11
[oracle@rh4lab15 dbs]$ ln -s /mnt/backups/orapwdb2rac1 orapwdb2rac11
[oracle@rh4lab15 dbs]$ grep BACKUPUSER newfile
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SQL> grant sysdba to backupuser;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
BACKUPUSER TRUE FALSE
[oracle@rh4lab15 dbs]$ grep BACKUPUSER /mnt/backups/orapwdb2rac1
Binary file /mnt/backups/orapwdb2rac1 matches
SQL> connect backupuser\@db2rac1 as sysdba
Enter password: ******
Connected.