linux 下 oracle 监听报Instance "xxx", status BLOCKED, has 1 handler(s) for this service...

如果Linux环境下存在多个数据库实例,则需要先切换到需要使用的实例下,如下:

1、当一个Linux中安装了多个数据库时,查看当前的数据库实例

su - oracle

echo $ORACLE_SID

2、Linux下,切换到不同的数据库实例

export ORACLE_SID=需要切换的数据库实例,如orcl

3、ORA-01109:数据库未打开(解决)

使用管理员权限登录:

sqlplus / as sysdba

SQL> startup mount
如果报ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它,则先执行下面命令行,


SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。


SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 167775108 bytes
Database Buffers 436207616 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。

SQL> alter database open;

数据库已更改。

此时可解决 “Instance "xxx", status BLOCKED, has 1 handler(s) for this service... ” 问题。

顺带把startup的参数和shutdown的参数说明附上:

startup参数 
不带参数,启动数据库实例并打开数据库,以便用户使用数据库,在多数情况下,使用这种方式! 
nomount:只启动数据库实例,但不打开数据库,在你希望创建一个新的数据库时使用,或者在你需要这样的时候使用! 
mount:在进行数据库更名的时候采用。这个时候数据库就打开并可以使用了! 
 

shutdown参数 
normal:需要在所有连接用户断开后才执行关闭数据库任务,所以有的时候看起来好象命令没有运行一样!在执行这个命令后不允许新的连接 
immediate:在用户执行完正在执行的语句后就断开用户连接,并不允许新用户连接。 
transactional:在用户执行完当前事物后断开连接,并不允许新的用户连接数据库。 
abort:执行强行断开连接并直接关闭数据库。

你可能感兴趣的:(数据库)