oracle9i的sys用户登录
oracle9i的sys用户登录
最近在linux上装了一个oracle9i,在使用sqlplus登录的时候,出现了一个迷惑的地方,现在记录下来,好记性不如烂笔头啊。。。
一直以来都认为,使用sys用户登录后面应该加一个as dba,就是说应该使用dba的身份登录。但这次发现登录这个linux上面的oracle不加as dba也能登录
C:\Documents and Settings\Administrator>sqlplus sys/sys@ora9ivm
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 5月 13 09:15:24 2013
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Release 9.2.0.4.0 - Production
JServer Release 9.2.0.4.0 - Production
加上as dba也能登录。
但是后来发现如果没加as sysdba这句,权限就会少了很多,最明显的就是没有权限关闭数据库了
SQL> shutdown immediate
ORA-01031: insufficient privileges
感觉此时的sys用户就是普通用户一样
后来才知道这跟oracle的一个参数有关,
SQL> show parameter o7
NAME TYPE VALUE
------------------------------------ ----------------------------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean TRUE
O7_DICTIONARY_ACCESSIBILITY 这个参数貌似是老版本的oracle中的兼容参数。
修改 该参数:
SQL> alter system set O7_DICTIONARY_ACCESSIBILITY =false scope=spfile;
系统已更改。
现在重启数据库,
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
此时再登陆,如果没加as sysdba就不能登陆了
SQL> conn sys/sys@ora9ivm
ERROR:
ORA-28009: connection to sys should be as sysdba or sysoper
警告: 您不再连接到 ORACLE。
加上 as sysdba 登陆正常
SQL> conn sys/sys@ora9ivm as sysdba
已连接。
再查看参数
SQL> show parameter o7
NAME TYPE VALUE
------------------------------------ ----------------------------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean FALSE
已变成了false。
另外,这个参数在windows上的oracle默认是false,所以windows上要加上as sysdba的,除非先将O7_DICTIONARY_ACCESSIBILITY 改为TRUE。