参考[三思笔记]一步一步学DataGuard文档做dg的开始准备阶段,做主库的副本数据库,做副本数据库的第一阶段,创建辅助实例,基本过程为:
1、创建密码文件
2、创建初始化参数文件
3、连接并启动辅助实例
4、用rman加以auxiliary参数连接主库及辅助实例
我的系统环境:redhat-as4.7+oracle10.2.0.4,
主数据库地址:192.168.1.220 sid:lizidb dbname:lizidb
辅助数据库地址:192.168.1.221 sid:standbydb dbname:sbydb
客户端对数据库的连接字符串:主:@lizidb_192.168.1.220
辅:@standby_192.168.1.221
第一步创建密码文件,参考三思的文档,将密码文件创建到了数据库数据文件目录下面,并且以PWDsid.ora命名,用rman登陆辅助实例,报错:
[oracle@db-standby standbydb]$ orapwd file=/u00/oracle/standbydb/pwdstandby.ora password=aaa entries=30
[oracle@db-standby pfile]$ rman target
Recovery Manager: Release 10.2.0.4.0 - Production on Fri Apr 16 16:11:13 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-01031: insufficient privileges
google搜索解决ora-01031错误的方法,要检查好多好多的地方,比如sqlnet.ora、listener.ora、各种文件权限、实例占用内存等等,很麻烦也很没有效果,几经思考,觉得还是定位于密码文件上面。因为这个错误字面上意思就是为没有权限去登陆这个辅助实例,为什么没有权限呢?无非就是用户对其他用户没有操作权限,而现在这个辅助实例只创建了一个sys的密码文件,可是还是报这个错误,那就说明没有找到这个sys用户,也就是登陆时候没有用到密码文件,经搜索,查到以下相关文章:
关于oracle密码文件的一点学习
创建密码文件的命令
orapwd file=<> password=<> entries=最大数目
这里的file命名规则在unix/linux下 orapw,在windows下为 pwd.ora
具体资料看下面的描述(这是pub中一个网友的总结)
1. unix 环境:
查了Administrator‘s Reference 10g Release 2 (10.2) for UNIX-Based Operating Systems.
1. Log in as the Oracle software owner.
2. Use the orapwd utility to create the password file as follows:$ $ORACLE_HOME/bin/orapwd file=filename password=password entries=max_users……
filename The name of the file in which password information is written
The name of the file must be orapwsid, and you must supply the full path name. Its contents are encrypted. Typically, the password file is created in the $ORACLE_HOME/dbs directory.
请注意黑体字, 所以unix环境中, password file 一定是要用 orapw, 没有例外。
2. windows 环境:
查了Platform. Guide 10g Release 2 (10.2) for Microsoft Windows (32-Bit) (没查64-bit)
To create and populate a password file:
(1). Create a password file with the Password Utility:
C:> orapwd FILE=PWDsid.ora PASSWORD=password ENTRIES=max_users
where
| FILE specifies the password filename.
| SID identifies the database instance.
| PASSWORD sets the password for account SYS.
| ENTRIES sets maximum number of entries in password file. This corresponds to maximum number of distinct users allowed to connect to the database simultaneously with either the SYSDBA or the SYSOPER DBA privilege.
(2). Set initialization parameter file parameter REMOTE_LOGIN_PASSWORDFILE to exclusive, shared, or none.
In search of the password file, Oracle Database looks in the registry for the value of parameter
ORA_SID_PWFILE. If no value is specified, then it looks in the registry for the
value of parameter ORA_PWFILE, which points to a file containing usernames,
passwords, and privileges. If that is not set, then it uses the default:
ORACLE_BASEORACLE_HOMEDATABASEPWDsid.ORA.
The default value is shared.
请注意黑体字, windows 环境中, 很大的部分是基于 registry 中变量 ora_sid_pwfile 或者 ora_pwfile 的设置, 缺省的值, 正如paulyibinyi兄弟指出的, 是 pwd.ora (unix中是没有这个。ora后缀的)。
二、在windows下对于connect /as sysdba及其它用户可以不用密码就能登录的问题
1.这是因为oracle采用了 OS认证的方式,具体的可以查看 sqlnet.ora具体同容如下
SQLNET.AUTHENTICATION_SERVICES= (NTS)
将其改成SQLNET.AUTHENTICATION_SERVICES= (NONE)
这样就是oracle认证方式了
2.因为用的OS认证方式,可以在操作系统->控制面版->计算机管理->用户 将当前用户的属性组 ORA_DBA去掉,这时如果没有用户名及密码则不可以。
如下:
SQL> connect /as sysdba ERROR:ORA-01031: insufficient privileges
SQL> connect sys/oracle as sysdba
已连接。
三、利用alter user identified by ……来修改密码alter user sys identified by abc一下,就连数据库中的密码和密码文件中的密码一起改成abc了;
四、如果密码文件丢失了如何办?
利用 orapwd重新创建一个就可以了。
本贴来自天极网群乐社区--
注意斜体部分,原来是在linux系统下,我创建密码文件时候路径及名称都不正确,之后按照其要求重建密码文件,顺利连接:
[oracle@db-standby pfile]$ rman target
Recovery Manager: Release 10.2.0.4.0 - Production on Fri Apr 16 17:02:53 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: standbydb (not mounted)
RMAN> exit