百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

开发过程中遇到Oracle的两三事(oracle技术开发)

sinye56 2024-09-23 23:53 8 浏览 0 评论

前言

最近由于一些原因,把公司用的开发环境搭建了一遍,具体是orcle11g+weblogic12.1,过程中总结出一些问题,在此少做介绍。

OracleDBconsoleorcl服务无法启动的原因及解决方案

OracleDBConsole[SID]服务简介:

OracleDBConsole[SID]服务负责Windows平台下启动Oracle企业管理器,从Oracle 10g开始引入这个服务,也是从Oracle 10g开始,Oracle的企业管理器从客户端形式变为浏览器操作模式,这里的[SID]即Oracle SID,如果是默认安装就是orcl,故这个服务在你的机器上可能就是OracleDBConsoleORCL,事实上在我的机器上也是它。

本文基于Oracle 11g,操作系统为Windows 7 x64,故本文描述的解决办法仅供参考。

  • 故障描述

启动OracleDBConsoleORCL服务时,报:

Windows 不能在 本地计算机 启动 OracleDBConsoleORCL。有关更多信息,查阅系统事件日志。如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码 1。

在应用程序事件日志中记录了如下错误信息:

Process exited abnormally during initialization.

  • 解决过程

尝试从命令行下启动该服务,也以失败告终,正寻思着是否删除数据库再重新安装,突然想起Oracle企业管理器其实是一个单独的组件,可以将其单独删除,再重新安装的,其实这里并不是删除Oracle企业管理器,而是Oracle数据库控制台资料档案库,删除资料档案库会同时删除OracleDBConsoleORCL服务,并删除用户SYSMAN及其所属对象,重新创建资料档案库就会重新添加OracleDBConsoleORCL服务,并创建SYSMAN用户及其所属对象。搞清楚这一点关系后,开始动手实施修复。

首先删除资料档案库,注意此时Oracle的监听器服务和数据库服务必须处于启动状态,因为删除命令会连接到数据库删除SYSMAN用户及其所属对象:

C:\>emca -repos drop

EMCA 开始于 2009-1-31 9:13:24

EM Configuration Assistant, 11.1.0.5.0 正式版

版权所有 (c) 2003, 2005, Oracle。保留所有权利。

输入以下信息:

数据库 SID: orcl

监听程序端口号: 1521

SYS 用户的口令:【输入SYS用户的口令,输入口令时屏幕不会回显】

SYSMAN 用户的口令:【输入SYSMAN用户的口令】

SYSMAN 用户的口令:

是否继续? [是(Y)/否(N)]: y

2009-1-31 9:15:04 oracle.sysman.emcp.EMConfig perform

信息: 正在将此操作记录到 c:\app\Administrator\cfgtoollogs\emca\orcl\emca_2009_01

_31_09_13_24.log。

2009-1-31 9:15:05 oracle.sysman.emcp.EMReposConfig invoke

信息: 正在删除 EM 资料档案库 (此操作可能需要一段时间)...

开始等待删除,这个过程可能比较长,朋友们可以去技术栈的网站,www.jishux.com参观一下。

删除结束后,往往有人会想到使用命令重新创建资料档案库,但经过我多次尝试,使用这种办法创建好资料档案库后,OracleDBConsoleORCL服务仍然无法启动,企业管理器依旧无法使用,于是想到使用dbca来创建,于是在运行窗口输入:dbca,启动数据库配置助手,在第一步时选择“配置数据库选件”,后面的操作只需要一直点击下一步就可以了,注意在选择是否使用EM资料档案库时,一定要选中,默认没有选中,dbca检查到系统中已经没有EM资料档案库,于是就会重新创建,OracleDBConsoleORCL服务也会重新添加了,这也会花一段时间,如果dbca重新配置过程中不出现错误,那配置结束后,OracleDBConsoleORCL服务就能够正常启动,就可以正常使用Oracle企业管理器了。如果删除EM资料档案库不彻底,运行dbca期间可能会报错,一般是SYSMAN用户及其对象没有删除干净,遇到这种问题时,只需要再次运行一次emca –repos drop即可。

如果在删除EM资料档案库时,删除了SYSMAN用户及其所属对象,但OracleDBConsole[SID]服务没有删除时,如果该服务还能够启动,并能够通过浏览器进入,那此时就可以使用emca –repos create重新创建EM资料档案库即可。

  • 总结

经过这次冒险,总觉得Oracle的OracleDBConsole[SID]服务很脆弱,在没有任何误操作的情况下,重新启动计算机后,它也可能就启动不了了,但在这时,大家一定要保持冷静,多思考,办法总是有的,不到万不得已,不要重新安装,建议大家在重新启动系统前,先手动停止OracleDBConsole[SID]服务、监听器服务和数据库服务。

ORACLE导入遇到ORACLE错误959解决方法

如果读者朋友们按照上述方法,还是启动不了本地数据库,本着解决问题的办法,还是重装11g比较好,毕竟win上的服务端不是太稳定。安装好Oracle11g之后,利用plsql连接本地orcl,在导入dmp文件时,有一张表未导入成功,报了如下错误:

IMP-00003: 遇到 ORACLE 错误 959ORA-00959: 表空间 'XXXXXXXXXXX' 不存在。

查询的确没有对应的表空间:

select * from dba_data_files where tablespace_name = 'XXXX'1

添加上对应的表空间,再重新导入:

create tablespace ts_something 
 logging 
 datafile '/dbf1/ts_sth.dbf' 
 size 32m 
 autoextend on 
 next 32m maxsize 2048m 
 extent management local; 1234567

导入成功。

注:表空间自增长,其大小也不会超过最大大小,因此在设置大小时可以将MAXSIZE 设置为unlimited;

Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别

  • sys和system用户区别

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

sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是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

  • Sysdba和sysoper两个系统权限区别

normal 、sysdba、 sysoper有什么区别

normal 是普通用户

另外两个,你考察他们所具有的权限就知道了

sysdba拥有最高的系统权限,登陆后是 sys

sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public

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

系统权限

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

  • dba和sysdba的区别

dba、sysdba这两个系统角色有什么区别呢:

在说明这一点之前我需要说一下oracle服务的创建过程

创建实例→·启动实例→·创建数据库(system表空间是必须的)

启动过程:

实例启动→·装载数据库→·打开数据库

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

Oracle如何创建用户

重装好orcle11g之后,数据库的用户必然也要重建,下面我来讲一下创建用户操作。什么,你hibernate里面jdbc配置的是sys账户?那当我没说(笑哭)。

1、打开oracle第三方工具,如plsq,然后用一个具有dba权限的用户登录。

2、然后打开一个SQL窗口。

3、执行语句:

create user 用户名 identified by 密码;--其中用户名为英文,密码为数字或字母或英文符号或组合。

4、执行完毕后,可按需要给用户赋予相应的权限,如:

grant connect,resource,dba to 用户名;--赋予该用户权限

切换数据源

当我们需要切换weblogic数据源地址的时候,会经常出现激活更改失败的情况,通常遇到这种情况的解决办法是

将部署服务器取消勾选,然后再切换数据源ip地址,这样大部分都能激活更改。切换好之后,在监视-测试里面,可以测试一下地址是否OK。

常见异常之——java.lang.classnotfoundexception

数据库和中间件都安装好了,下面开始导入项目,打开myeclipse导入项目的workspace文件,设置weblogic启动参数,启动,可是一直报java.lang.classnotfoundexception的错,找了半天没查出原因,按理说之前项目都是可以运行的,不懂这次为什么会报错。后来发现,原来是bulidpath里面的jar包冲突所致。

抱着学习的心态整理一下这个异常,避免以后走弯路,有对这个异常比较了解的大神也请多多指教!

ClassNotFoundException是无法找到指定的类异常。

当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:

1、Class 类中的 forName 方法。

2、 ClassLoader 类中的 findSystemClass 方法。

3、 ClassLoader 类中的 loadClass 方法。

造成异常的常见原因:

1 所需要的支持类库放错了地方,并没有放在类路径(CLASSPATH环境变量)里面。

2 使用了重复的类库,且版本不一致。导致低版本的被优先使用。

3 类名错了,一般是使用Class.forName的时候,手工指定了类名的情况。

4 没有导入纯JAVA驱动包。

建议的解决方案:

1 确认你的类库在系统的CLASSPATH下面,如果是Tomcat,则可以放在tomcat/lib/目录下面。

2 删除重复的类库,只保留最新的。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: