ORACLE已连接到空闲例程的解决方法

数据库安装好之后用sys用户登陆时出现以下情况:


说明数据库实例没有启动

启动数据库时报错:


说明监听有问题

1、查看ORACLE数据库的两个服务(OracleServiceORCL 和 OracleOraDb11g_home1TNSListener)是否打开

2、如果未打开,打开后重新启动数据库,如果还不行则需要修改启动数据库要使用的初始化参数文件中的监听参数

方法1:利用pfile(静态参数文件)文件启动数据库

修改pfile文件中的监听参数,将原来分参数修改为具体的路径(tnsnames.ora文件中的LISTENER_CJYORCL的路径)

原文件中:local_listener='LISTENER_CJYORCL'
修改为:local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))'

然后指定用pfile文件启动数据库

pfile的路径为:D:\app\Administrator\admin\cjyorcl\pfile\init.ora.2212018173452

ORACLE已连接到空闲例程的解决方法_第1张图片

缺点:每次启动数据库都需要指定文件启动,因为9i之后的oracle都是读取spfile文件来启动数据库

知识点:用startup命令启动数据库时,当oracle读取到startup命令,按照以下顺序执行:
(1)首先使用服务器上的spfileSID文件启动实例
(2)spfileSID文件不存在时,使用服务器默认的spfile文件启动实例
(3)spfile文件不存在时,使用initSID文件启动实例
(4)initSID文件不存在时,使用服务器上默认的spfile文件启动数据库

但是可以使用pfil选项来覆盖以上顺序:
startup pfile='D:\app\Administrator\admin\cjyorcl\pfile\init.ora.2212018173452'

方法2:修改spfile文件(在数据库关闭的情况下,需要登陆sys用户使用create spfile from pfile命令)

(1)先通过spfile生成pfile文件

create pfile from spfile;

执行完成后,在D:\app\Administrator\product\11.2.0\dbhome_1\database文件中生成一个initSID.ora(windows系统spfile文件一般存放在database文件夹,lunix系统一般存放在dbs文件夹中)

注:有的数据库安装完之后在D:\app\Administrator\product\11.2.0\dbhome_1\database可能找不到spfileSID.ora文件,可以将D:\app\Administrator\admin\cjyorcl\pfile中的init.ora.2212018173452文件复制到D:\app\Administrator\product\11.2.0\dbhome_1\database下,然后进行下一步

(2)修改pfile文件,再通过pfile文件重新生成spfile文件(删除旧的spfile文件)

原文件中:local_listener='LISTENER_CJYORCL'
修改为:local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))'
create spfile from pfile;

(3)启动数据库实例

ORACLE已连接到空闲例程的解决方法_第2张图片

知识点:spfile文件是一个二进制文件,不能直接通过编辑器修改,直接修改会导致spfile文件变成无效文件;
pfile文件是一个正文文件,可以通过编辑器编辑;
所以修改spfile文件,可以先通过spfile文件生成pfile文件,用编辑器修改pfile文件后,再通过pfile文件生成新的spfile文件。

方法3:利用ALTER SYSTEM SET 这一oracle的sql命令直接修改spfile参数中的参数

alter system set 参数名='' scope=spfile;

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