Windows下用命令打开数据库

在Windows上要把Oracle启动到nomount状态,于是在没用启动oracle服务的情况之下,输入下述命令:

  1. C:\>sqlplus /nolog  
  2.   
  3. SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 16:28:13 2011  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. SQL> connect / as sysdba  
  8. ERROR:  
  9. ORA-12560: TNS: 协议适配器错误  
  10.   
  11.   
  12. SQL>   

于是启动监听服务(命令: lsnrctl start   也可以启动服务,而且能显示监听器监听的 IP地址 和 Port 端口号):

      net    start    oracleoradb10g_home1tnslistener

      或者

       lsnrctl start 

监听服务启动成功。但是发现在sqlplus里再次输入connect命令时,还是出现同样的错误。

 

在网络上找了一下,发现很多人也碰到了这个问题,如果你也碰到了类似的问题,下面的方法可以试一下:

1、在Windows下,当我们启动数据库服务时,数据库会自动到Open状态。现在要启动到nomount状态,必需修改注册表,把键值:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1下ORA_ORCL_AUTOSTART值修改为 FALSE,修改之后就不会自动启动到Open状态了,这样就有机会启动到nomount状态了。

2. 如果遇见下面这种情况:

首先我们要以管理员身份打开命令:Windows+X+A 直接打开【命令提示符(管理员)】,然后在输入相应的命令就可以了

下面首先会启动服务,然后再连接。

  1. C:\>net start OracleServiceOrcl  
  2. OracleServiceORCL 服务正在启动 .  
  3. OracleServiceORCL 服务已经启动成功。  
  4.   
  5.   
  6. C:\>sqlplus /nolog  
  7.   
  8. SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 17:08:14 2011  
  9.   
  10. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  11.   
  12. SQL> connect / as sysdba  
  13. 已连接到空闲例程。  
  14. SQL> startup nomount  
  15. ORACLE 例程已经启动。  
  16.   
  17. Total System Global Area  603979776 bytes  
  18. Fixed Size                  1250380 bytes  
  19. Variable Size             213912500 bytes  
  20. Database Buffers          381681664 bytes  
  21. Redo Buffers                7135232 bytes  
  22. SQL>  

那么接下去可以修改数据库到mount,open状态。

  1. SQL> alter database mount  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> alter database open;  
  6.   
  7. 数据库已更改。  
  8.   
  9. SQL>  

2、直接启动数据库的服务,然后连接数据库,shutdown,然后再启动到nomount状态。

     为什么要这么做呢? 主要是还是上面说的,如果不修改oracle在注册表里的启动参数的话,一旦启动服务,那么数据库就处于open状态,也就不可能在转到nomount状态了。

    所以反其道而行之,这个时候数据库已关闭、数据库已卸载、实例已关闭,同时服务还是启动的,也就是说在任务管理器里oracle.exe进程还在,同时发现oracle占的内存很少,因为此时已经释放了SGA系统全局区的内存了。

  1. C:\>sqlplus /nolog  
  2.   
  3. SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 14 17:24:59 2011  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. SQL> connect / as sysdba  
  8. 已连接到空闲例程。  
  9. SQL> startup nomount  
  10. ORACLE 例程已经启动。  
  11.   
  12. Total System Global Area  603979776 bytes  
  13. Fixed Size                  1250380 bytes  
  14. Variable Size             218106804 bytes  
  15. Database Buffers          377487360 bytes  
  16. Redo Buffers                7135232 bytes  
  17. SQL>  
  18. SQL> alter database mount  
  19.   2  ;  
  20.   
  21. 数据库已更改。  
  22.   
  23. SQL> alter database open;  
  24.   
  25. 数据库已更改。  
  26.   
  27. SQL>  

另外,当关闭数据库,又重新启动到open状态时,下面显示了关闭数据库的顺序(数据库已经关闭、已经卸载数据库、ORACLE 例程已经关闭)、启动的顺序(ORACLE 例程已经启动、数据库装载完毕、数据库已经打开)。

  1. SQL> shutdown immediate;  
  2. 数据库已经关闭。  
  3. 已经卸载数据库。  
  4. ORACLE 例程已经关闭。  
  5. SQL> startup open;  
  6. ORACLE 例程已经启动。  
  7.   
  8. Total System Global Area  603979776 bytes  
  9. Fixed Size                  1250380 bytes  
  10. Variable Size             218106804 bytes  
  11. Database Buffers          377487360 bytes  
  12. Redo Buffers                7135232 bytes  
  13. 数据库装载完毕。  
  14. 数据库已经打开。  
  15. SQL>  

还有,如果直接启动到nomount状态,那么就不能再启动到mount状态(除非先shutdown),只能通过alter database mount语句,修改数据库的状态为mount,同理对open状态也是一样的,也就是说只能是:

第一种 :

     startup nomount;

     alter database mount;

     alter database open;

第二种:

    startup nomount;

    alter database open;

第三种:

    startup open;

 

像下面这样:

   startup nomount;

   startup mount;                             会导致ora_01081错误



下面给出了已经排好顺序的启动和停止服务的两个批处理文件:

Start Oracle 11g Service.bat

@echo off

echo 确定要启动Oracle 11g服务吗?

pause

net start OracleOraDb11g_home1TNSListener

net start OracleServiceORCL

net start OracleDBConsoleorcl

echo 启动Oracle 11g服务完成,请确认有没有错误发生。

Pause

 

Stop Oracle 11g Service.bat

@echo off

echo 确定要停止Oracle 11g服务吗?

pause

net stop OracleDBConsoleorcl

net stop OracleServiceORCL

net stop OracleOraDb11g_home1TNSListener

echo 停止Oracle 11g服务完成,请确认有没有错误发生。

Pause

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值