报错原因:
sys 是 oracle 的最高权限用户,其中包含了很多数据库重要信息,只能是 sysdba 身份的用户才能进入,所以在登录进入 oracle 数据库时需要手动给 sys 设置 sysdba 身份,确保其是最高权限用户。
解决方法:
使用下面的命令进行登录:
<用户名> as sysdba
例如
sys as sysdba
然后输入密码即可
拓展:
Oracle有三种用户身份:normal 、sysdba、 sysoper
其中 normal 是普通用户;sysdba是系统最高权限身份;sysoper也是系统管理员但是权限等级没有sysdba高
使用下面的sql语句能查看到所有具备sysdba身份的用户,需要当前登录用户拥有对应权限才能查到
select * from V_$PWFILE_USERS;
另外两个所拥有的权限不同
sysdba拥有最高的系统权限,登陆后是 sys
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
dba和sysdba的区别:
首先了解oracle服务的创建过程:
创建实例→·启动实例→·创建数据库(system表空间是必须的)
启动过程
实例启动→·装载数据库→·打开数据库
sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础。