如果Linux环境下存在多个数据库实例,则需要先切换到需要使用的实例下,如下:
1、当一个Linux中安装了多个数据库时,查看当前的数据库实例
su - oracle
echo $ORACLE_SID
2、Linux下,切换到不同的数据库实例
export ORACLE_SID=需要切换的数据库实例,如orcl
使用管理员权限登录:
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:执行强行断开连接并直接关闭数据库。