Oracle10g 报错'java.lang.Exception: No such metric'的解决方法

我严重怀疑自己最近脑子短路了,不然怎么会老是觉得头晕呢?老是觉得生活很无趣呢?老是觉得对技术充满恐惧没自信呢?失去了往日的学习热情。。。。

这不刚启动oracle 10g的dbconsole时就报错了,却忘了是什么原因了,其实这种问题之前都解决过好多次了,可是现在偏偏还是得上网查找才猛然想起自己原来解决过这种错误,这样不行啊,对以后的DBA生涯影响很大,所以务必清醒下来,重新投入到oracle的研究中去。

学习oracle是一个长期的坚持的过程,可不能半途而废啦。。。

好吧,就再次的把这几个问题记录下吧。

问题描述:用sys登陆报错: "java.lang.Exception: No such metric"

解决办法:(1)

使用sys登录em控制台后,在页面上显示“java.lang.Exception: No such metric”,查阅了一些资料,终于解决

在首页下方有个链接,“监视配置”,在这里重设一下监视用户dbsnmp的密码,测试成功后保存,即可解决。
(2)出现这个错误的根本原因是用sys用户登录em时,sys登陆时选择的是normal,如果选择sysdba就没有问题了,sys只能以sysdba身份登录。

说到这里,重新温习下sys用户和system用的区别吧:

1 )最重要的区别,存储的数据的重要性不同

sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dbasysdbasysoper等角色或权限,是oracle权限最高的用户。

system用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有普通dba角色权限。

2)其次的区别,权限的不同。

system】用户只能用normal身份登陆em,除非你对它授予了sysdba的系统权限或者syspoer系统权限。
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

Sysdbasysoper两个系统权限区别

normalsysdba sysoper有什么区别
normal
是普通用户
另外两个,你考察他们所具有的权限就知道了
sysdba
拥有最高的系统权限,登陆后是 sys
sysoper
主要用来启动、关闭数据库,sysoper登陆后用户是
public

sysdbasysoper属于system privilege,也称为administrative privilege,拥有例如数据库开启关闭之类一些系统管理级别的权限sysdbasysoper具体的权限可以看下表:

系统权限 sysdba sysoper
区别 Startup(启动数据库) startup
Shutdown(关闭数据库) shutdown
alter database open/mount/backup alter database open/mount/backup
改变字符集 none
create database(创建数据库) None不能创建数据库
drop database(删除数据库) none
create spfile create spfile
alter database archivelog(归档日志) alter database archivelog
alter database recover(恢复数据库) 只能完全恢复,不能执行不完全恢复
拥有restricted session(会话限制)权限 拥有restricted session权限
可以让用户作为sys用户连接 可以进行一些基本的操作,但不能查看用户数据
登录之后用户是sys 登录之后用户是public

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

Ødbasysdba的区别
dbasysdba这两个系统角色有什么区别呢
在说明这一点之前我需要说一下oracle服务的创建过程
·创建实例→·启动实例→·创建数据库(system表空间是必须的)
启动过程
·实例启动→·装载数据库→·打开数据库

sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!

你可能感兴趣的:(Oracle10g 报错'java.lang.Exception: No such metric'的解决方法)