当前位置:首页 » 数据仓库 » 导致数据库实例关闭
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

导致数据库实例关闭

发布时间: 2023-01-21 11:28:47

‘壹’ 数据库实例HANG住了,具体是什么原因

可以看一下系统中是否有多个pmon进程,如果有几个pmon进程,就说明有几个实例。命令如下: ps -ef|grep ora_pmon 解释:pmon进程,进程监视器(Process Monitor)oracle中用于恢复失败的数据库用户的强制性进程,它先获取失败用户的标识,释放该用户占有的所有数据库资源。一般一个oracle实例只能有一个pmon进程,可能通过查看pmon进程的多少来判断有几个实例。

‘贰’ 如何关掉多实例数据库中的一个实例

Oracle=instance(实例)+database(数据库) instance是一堆内存结构(SGA+后台进程) database是一堆存放数据物理磁盘文件(datafile+redo log file+control file+archive log file+parameter file等) 一个instance在同一个时间,只能打开一个dat...

‘叁’ oracle数据库有两个实例,一个关闭一个开启的,怎么把关闭的那个开启

oracle数据库有两个实例,一个关闭一个开启的,怎么把关闭的那个开启
: 可以,不冲突,只要硬件配置可以的话。两个占用的端口不一样,进程也不一样,服务业不一样,是可以的。

‘肆’ android的sqlite数据库由于实例化一个类导致不能程序打开就停止运行。刚开始学SQLite一个星期,跪求大神

你这是实例化没成功。你的dbOpenHelper,不能有错误。我远程看看。

‘伍’ 安卓开发数据库显示关闭什么意思

主要用于新建数据表。在新建数据库的时候调用即程序关闭后,再运行程序是不会再调用该方法的,主要用于新建数据表。

‘陆’ 本人刚学oracle,请问将数据库实例关闭之后,怎样启动啊,具体在哪里操作啊现在连sql*plus都进不了了

1.运行services.msc开启oracle相关服务。
2.运行cmd,输入sqlplus /nolog 回车,然后conn / as sysdba回车,最后startup 回车
3.如果启动失败就用错误代号(如:ora-XXXX)在网上搜索解决方案。

‘柒’ oracle中如何打开和关闭实例(instance)

朋友请听我说:
首先你要知道实例是什么东西
简单解释:它是由一组后台进程和内存区域构成的,通常一个数据库可以有一个或多个实例。
当你要使用某一个实例时,首先要进行环境变量的设置
如:
set ORACLE_SID=orcl(WIN)
export ORACLE_SID=orcl(LINUX or UNIX)
conn sys/oracle as sysdba

这样才登陆到了orcl实例
登陆到了数据库我们可以通过如下SELECT来查看你用的是哪个实例。
如:
select instance_name from v$instance;

‘捌’ oracle 用shutdown关闭后启动不了怎么办

启动oracle数据库的同时也就创建了一个数据库实例,并且可以选择数据库启动的状态。通常,可以通过装载和打开数据库来启动实例,这样任何一个有效的用户都可以链接到实例并执行典型的数据库访问操作,下面介绍这方面的内容。

一、启动数据库的方法

启动数据库实例的方法有很多种,分别介绍如下:

1、使用SQL*PLUS 使用SQL*PLUS连接到具有管理员权限的Oracle上,然后发布startup命令,从而启动数据库。
2、使用Recovery Manager 即使用RMAN来执行startup和shutdown命令来启动和关闭数据库实例。若是在RMAN环境中最好使用这种方法,而不是调用SQL*PLUS方法。
3、使用Oracle Enterprise Manager 可以使用Oracle Enterprise Manager来管理oracle数据库,当然也包含启动和关闭数据库。Oracle Enterprise Manager是一个独立的oracle数据库产品,它与图形控制台、代理程序、公用服务以及各种工具一起为管理oracle产品提供了一个集成的和复杂的系统管理平台。

启动数据库实例的步骤:以没有连接数据库的方法启动SQL*PLUS:sqlplus /nolog,然后作为SYSDBA连接到oracle:connect username/password as sysdba,至此,就连接到了oralce数据库,并准备好启动数据库实例。接着使用startup命令来启动数据库实例,oracle必须从服务器参数文件或者传统的文本初始化参数文件中读取实例配置文件。当使用不带pfile子句的startup命令时,oracle将从平台指定的默认位置上的服务器参数文件(spfile)中读取初始化参数。也可以指定初始化参数所在的位置,如startup pfile=/u01/oracle/dbs/init.ora。

启动数据库实例可以采用不同的模式:

1、启动但没有装载数据库实例,这种模式不允许访问数据库,并且通常只适用于数据库创建或者控制文件的重新创建的情况。要启用这种数据库模式,可以使用命令startup nomount来启动数据库实例。
2、启动实例并装载数据库,但保持数据库关闭状态。这种模式适用于某些dba的动作,比如重命名数据文件、添加取消或者重命名重做日志文件、执行完整的数据库恢复操作,但不允许对数据库的一般性访问动作。要启用这种数据库模式,可以使用命令startup mount来启动数据库实例。
3、启动实例,装载并打开数据库。这种模式可以在不受限制的方式下使用,允许所有合法的用户访问。要启用这种数据库模式,可以使用命令startup来启动数据库实例。
4、迫使数据库启动,startup force。在一些特殊的情况下,可能会在启动数据库实例的时候遇到一些问题。一般不要迫使数据库启动,除非在以下的情况下:使用shutdown normal、shutdown immediate、shutdown transactional命令不能关闭当前的实例。如果正在运行某个实例,那么在重新启动实例前startup force可以使用abort模式关闭该实例。

二、改变数据库的可用性

可以改变数据库的可用性。这么做的目的也许时因为维护的原因而限制访问或者时数据库只读。
当需要执行特定的数据库管理操作时,必须启动数据库并将其装载在实例上,但数据库必须时关闭的,通过启动实例和装载数据库可以获得这种方案。要装载一个先前打开的数据库,但又不打开实例,可以使用命令:alter database mount

通过打开一个数据库,使得已经装载但是还处于关闭状态的数据库用于一般用途,可以使用命令alter database open。在执行这条语句之后,任何一个拥有create session系统权限的有效的oracle用户都能连接到该数据库上。

以只读模式打开数据库。只读模式打开数据库可以保证数据文件和重做日志文件不被重写,但这种模式不会限制数据库的恢复火车或者不生成重做的有关改变数据库状态的操作,例如,可以使数据文件脱机或者联机,因为这些操作不影响数据内容。使用命令alter database open read only使数据库处于只读状态。也可以使用读写模式打开数据库,alter database open read write。

三、关闭数据库

要初始化数据库的关闭操作,可以使用sql*plus的shutdown命令,在关闭操作完成之前,控制权不会返回到初始化数据库关闭操作的会话中。当正在进行关闭操作时,若用户试图进行连接,那么他会收到类似下面的信息:
ORA-01090:shutdown in progress-connection is not permitted
要关闭数据库实例,必须首先以sysdba或者sysoper进行连接。可以采用多种模式关闭数据库,如,normal、immediate、transactional、abort等。至于他们的含义,请查阅有关资料。

这个是 oracle 关闭时的情况 但是在程序中并没有关闭数据库阿~~~

‘玖’ Oracle数据库无响应故障处理方式

Oracle数据库无响应故障处理方式

Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢?下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!

无响应的故障现象一般有以下几种:

1.Oracle的进程在等待某个资源或事件

这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。

这种因为等待而引起的个别进程Hang,相对比较容易处理。

2. OracleProcess Spins

所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。

而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。

从故障范围来看,无响应故障可以分为以下几种情况:

1. 单个或部分会话(进程)Hang住

这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。

2. 单个数据库实例Hang住

这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。

3. OPS或RAC中的多个实例或所有实例都Hang住

在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种情况往往须要重启。

无响应故障成因分析

Oracle数据库无响应,一般主要由以下几种原因引起:

1. 数据库主机负载过高,严重超过主机承受能力

比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常操作,并最终Hang住;主机物理内存严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到虚拟内存时,数据库实例往往就会Hang住。

2. 日常维护不当、不正确的操作引起数据库Hang住

比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系

统上,对DML操作比较多的大表进行move、增加外键约束等操作也可能使系统在短时间内负载大幅升高,并引起数据库系统Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。

3. Oracle数据库的Bug

几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。

4. 其他方面的一些原因

比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。

以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够最大限度地避免这种故障的发生,提高系统的可用性。

那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源?一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢?对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。

无响应故障处理流程

对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。

值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。

下面是整个流程的详细说明:

1. 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的',是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、操作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。

2. 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行操作。

3. 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用操作系统工具或OSW等长期监控操作系统的资源使用,同时监控Oracle数据库的性能和等待等。

4. 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。

5. 使用SQLPLUS连接数据库,如果不能连接,则只能从操作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state mp;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。

6. 使用SQLPLUS连接上数据库后,进行hanganalyze、system state mp等操作;或检查等待事件、异常会话等正在执行的SQL等待。

7. 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。

8.确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。

9. 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。

怎样避免数据库出现无响应故障

作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:

1. 进行正确的维护操作

很多的数据库无响应故障都是由于不正确的维护操作引起的。应避免在业务高峰期做大的维护操作,比如像move、加主外键约束等会长时间锁表的操作。如果的确需要,尽量使用正确的操作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行操作的出现。

2. 优化应用设计,优化数据库性能

为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。

3. 利用监控系统随时监控系统负载

遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、smon等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。

4. 为数据库打上补丁

很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。

;

‘拾’ 电脑启动时“oradim.exe遇到一个问题,需要关闭”,数据库实例不能自动打开,必须手动打开,怎么回事

大概是ORACLE的数据库服务没有启动把,在使用命令net start ORACLESERVICEORADB即可