背景介绍,在上一篇日志里,我将密码文件更名后,在alter database mount时,系统会有报错提示。但是此时的database 已经被instance加载,也就是说,再执行alter database open ,是能成功的,这个过程如下所示。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter database mount;
alter database mount
*
ERROR 位于第 1 行:
ORA-01990: ??????'D:\oracle\ora92\DATABASE\PWDlyl.ORA'???
ORA-27041: ??????
OSD-04002: N^7(4r?*NDO/S-Error: (OS 2) O5M3UR2;5=V86(5DND
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
lyl MOUNTED
SQL> alter database open;
数据库已更改。
SQL>
这就涉及到一个oracle 密码文件作用的问题。
以下摘自《ocp认证考试指南全册》的第46页,有删节、添加:
oracle 提供了两种不基于数据字典的身份验证方式:操作系统身份验证方式以及口令文件验证方式。
操作系统身份验证方式:简单的理解起来,就是依赖oracle 数据库服务器所在的操作系统。具体的说,在oracle 软件的安装阶段(注意不是database 创建阶段),要指定拥有 oracle软件的操作系统用户组的名称(unix系统默认为dba,windows系统默认是ORA_DBA),如果作为这个组的一个成员(也就是一个操作系统的用户了)登陆了oracle 数据库服务器所在的操作系统,那么就会被允许连接和启动某个实例以及打开或创建一个没有任何用户名/口令提示框的数据库。
写到这里,大家也许有疑问,以windows系统为例,我用不属于ORA_DBA这个操作系统用户组的用户登陆oracle 数据库服务器所在的操作系统,连接实例,会有什么提示? 答案是有下边的提示(注意我是用的remote这个用户登陆的windows,此用户不属于ORA_DBA组):
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\remote>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 11月 24 20:56:38 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
请输入用户名:
/*-----------------完毕----------------*/
口令文件验证方式:用于通过网络启动实例 和打开数据库,而不是直接登陆到oracle 数据库服务器所在的操作系统启动实例和打开数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/161195/viewspace-503113/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/161195/viewspace-503113/