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

开发过程中遇到Oracle的两三事(oracle开发环境)

mhr18 2024-09-14 05:32 36 浏览 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 删除重复的类库,只保留最新的。

相关推荐

Syslog 日志分析与异常检测技巧(syslog发送日志配置)

系统日志包含有助于分析网络设备整体运行状况的重要信息。然而,理解并从中提取有效数据往往颇具挑战。本文将详解从基础命令行工具到专业日志管理软件的全流程分析技巧,助你高效挖掘Syslog日志价值。Gr...

从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)

数据库技术发展本质上是应用需求驱动与基础架构演进的双向奔赴,如何分析其技术发展的脉络和方向?考虑到oracle数据库仍然是这个领域的王者,以其为例,管中窥豹,对其从Oracle8i到23ai版本的核...

docker安装jdk并且部署java项目,一文看懂它部署springboot项目

1.下载jdkhttps://repo.huaweicloud.com/java/jdk/11.0.2+9/https://www.oracle.com/java/technologies/javas...

PL/SQL 杂谈(六)(pl/sql for)

承接(五)。内容书写不容易,各位友友们,如果可以,麻烦点个赞,让我有动力可以写下去。这节主要谈谈关于SQL*Plus的其他任务。SQL*Plus有大量命令,但由于文章字数有限,我们只能聊一聊那...

快速解决Win远程桌面CredSSP加密数据库修正问题!

前不久我做渗透测试时,在Win10下通过Mstsc访问服务器的3389端口时,遇到了“身份验证错误,要求的函数不受支持”这个错误。这通常是由于客户端和服务器的CredSSP加密协议不匹配导致的。(一...

报表服务器SSRS的安装和Oracle database的配置

WindowsServer2022NETFramework3.5SQLServer2022(FromServerCNQSQLDB01)SQLServerManagementStudi...

网络安全面试题-SQL注入问题总结(sql注入攻击的防护方法)

一、知识储备类1.SQL与NoSQL的区别?SQL:关系型数据库NoSQL:非关系型数据库存储方式:SQL具有特定的结构表,NoSQL存储方式灵活性能:NoSQL较优于SQL数据类型:SQL适用结构化...

运维日记|postgresql-利剑出鞘-psql出手,天下我有

小编最近看了电影《利剑出鞘》,结局中,反派错拿了一把道具刀导致报复失败,所以说,选对工具很重要。在postgresql数据库中,有这样一个工具不得不提,那就是psql,掌握好psql,那么在运维管理p...

2021款14寸MacBook Pro使用体验真实感受

购买的2021款MacBookPro是14寸的加配10核心M1Pro芯片,32g内存,512g存储。已经使用两周了,说说这段时间的使用体验。1.外观和2015款的13寸对比,他俩的大小、尺寸、重量...

渗透测试岗位面试分享,多年经验(渗透测试岗位面试分享,多年经验怎么写)

综合启明星辰多年招聘渗透测试工程师的经验,发现有很多面试者喜欢说没接触过这个没接触过那个,都没接触过为什么要来面试,录取你的理由是什么?在面试中真遇到你不懂的技术问题,千万不要说没接触过,你可以说一些...

在 Spring Boot3 中如何轻松连接并操作 SQLLite 数据库?

你是不是正在为在SpringBoot3项目里连接并操作SQLLite数据库而发愁?在实际的软件开发过程中,选择轻量级且易于部署的数据库至关重要。当面对小型项目、资源受限的环境,或是对部署便捷...

PHP开源项目ADOdb曝CVSS满分SQL注入漏洞

IT之家5月5日消息,PHP开源项目ADOdb于上周发布了v5.22.9版本,该版本主要修复一项CVSS风险评分高达10分(满分)的严重安全漏洞CVE-2025-46337...

Maven常用命令(maven用法)

一、Maven常用命令及其介绍命令描述mvnclean对项目进行清理,删除target目录下编译的内容mvncompile编译项目源代码mvntest对项目进行运行测试mvnpackage打包...

oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复

oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错...

Java单向代码执行链配合的动态代码上下文执行

Java反序列化漏洞的危害不光在于普通gadgets能够带来的命令执行,由于Java应用的使用场景以及gadgets大多都是构造出单向代码执行,一般通过利用链构造出的单向代码链能做到的能力往往有限。而...

取消回复欢迎 发表评论: