developer连接时候始终报ora-01031权限不足
(2011-06-20 11:14:10)
标签:
oraclepl/sqldeveloper登录杂谈 |
分类: oracle实验笔记 |
在2003上装好oracle10g后,监听已经配通。
但是pl/sql developer连接时候始终报ora-01031权限不足。
使用sys用户可以连接上。
于是初步认为system用户被限定不能远程登录。
而后,发现一个帖子是如下解释这个问题的:
(1)你说在本机SYSTEM用户可以已SYSDBA登录,那么如此运行后,你使用“show
user”看看当前用户是否是SYSTEM——我估计不是。
(2)是否创建了口令文件,如果创建了查看一下V$PWFILE_USERS,看看其中有没有SYSTEM
用户,如果没有将其加入(grant sysdba to
system),SYSTEM就可以从远程以SYSDBA连接了。
于是,查看了一下:
SQL> select * from V$PWFILE_USERS;
USERNAME
------------------------------ ------ -------
SYS
PENG
SQL> grant sysdba to system;
SQL>
SQL> select * from V$PWFILE_USERS;
USERNAME
------------------------------ ------ -------
SYS
PENG
SYSTEM
这时再用system登录就可以了。
下边是关于sys和system用户的权限的文章来自CSDN博客,地址为:http://blog.csdn.net/ecjtuxuan/archive/2010/07/26/5766244.aspx
sys 和 system 用户区别
【 sys 】用户具有 “SYSDBA” 或者 “SYSOPER” 系统权限,登陆 em 也只能用这两个身份,不能用 normal
。 以 sys 用户登陆 Oracle ,执行 select * from V_$PWFILE_USERS; 可查询到具有
sysdba 权限的用户,如: SQL> select * from
V_$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
SYS TRUE TRUE
Ø
normal 、 sysdba 、 sysoper 有什么区别
normal 是普通用户
另外两个,你考察他们所具有的权限就知道了
sysdba 拥有最高的系统权限,登陆后是 sys
sysoper 主要用来启动、关闭数据库, sysoper 登陆后用户是 public
区别
Shutdown( 关闭数据库 )
alter database open/mount/backup
改变字符集
create database( 创建数据库 )
drop database( 删除数据库 )
create spfile
alter database archivelog( 归档日志 )
alter database recover( 恢复数据库 )
拥有 restricted session( 会话限制 ) 权限
可以让用户作为 sys 用户连接
登录之后用户是 sys
system 如果正常登录,它其实就是一个普通的 dba 用户,但是如果以 as sysdba 登录,其结果实际上它是作为 sys
用户登录的,这一点类似 Linux 里面的 sudo 的感觉,从登录信息里面我们可以看出来。因此在 as sysdba
连接数据库后,创建的对象实际上都是生成在 sys 中的。其他用户也是一样,如果 as sysdba 登录,也是作为 sys
用户登录的,看以下实验:
SQL> create user strong identified by strong;
用户已创建。 SQL> conn strong/strong@magick as
sysdba;
已连接。 SQL> show user;
USER 为 "SYS"
SQL> create table test(a int);
表已创建。 SQL> select owner from dba_tables where
table_name='test';
未选定行 // 因为创建表时 oracle 自动转为大写,所以用小写查的时候是不存在的; SQL>
select owner from dba_tables where table_name='TEST';
OWNER
------------------------------
SYS
Ø
dba 、 sysdba 这两个系统角色有什么区别呢
在说明这一点之前我需要说一下 oracle 服务的创建过程
· 创建实例→ · 启动实例→ · 创建数据库 (system 表空间是必须的 )
启动过程
· 实例启动→ · 装载数据库→ · 打开数据库 sysdba ,是管理 oracle
实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以 sysdba
身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后, dba 角色才有了存在的基础!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ecjtuxuan/archive/2010/07/26/5766244.aspx