数据库开启的时候,实例和监听哪个先启动,有何区别

时间:2021-03-06 05:18:46
数据库开启的时候,实例和监听哪个先启动,有何区别?

从学oracle的第二天我就想问这个问题了,可惜老师给了一个模棱两可的答案。

详细求教中。

8 个解决方案

#1


先启动哪个都行,没有顺序

#2


监听先起。在启实例;

#3


我想应该是有一个是被加载的,一个是加载的,所以应该先启动被加载的吧..

#4


你可以尝试下
shutdown immediate;
lsnrctl stop;
这个时候startup 起不来
必须lsnrctl start才可以启起来

#5


听说数据库的6种启动方式里还真的是有层次的开启的,谢谢ls各位的,我差不多块联想出来了。


刚才看到了一个效率问题,顺便再问一个问题,如果我的表里有100W条数据,我在做用户登陆的时候,需要根据用户提交的username(userid)来查询表并判断password是否正确。

在查询数据库的时候有没有一个好的方法让我的查询语句使用的时间最短呢?

#6


引用 4 楼 linzhangs 的回复:
你可以尝试下 
shutdown immediate; 
lsnrctl stop; 
这个时候startup 起不来 
必须lsnrctl start才可以启起来


补充说明,楼上说的是口令验证。
如果是OS验证的话,服务是能起来的。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host lsnrctl stop

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 29-12月-2008 22:25
:37

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
命令执行成功

SQL> disconnect

SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             113246208 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。

此时
SQL> host lsnrctl status

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 29-12月-2008 22:27
:08

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS:无监听器
 TNS-12560: TNS: 协议适配器错误
  TNS-00511: 无监听器
   32-bit Windows Error: 2: No such file or directory
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jdsnhan)(PORT=1521)))
TNS-12541: TNS:无监听器
 TNS-12560: TNS: 协议适配器错误
  TNS-00511: 无监听器
   32-bit Windows Error: 61: Unknown error

#7


userid 为索引即可

#8


引用 7 楼 jdsnhan 的回复:
userid 为索引即可


谢谢了~~开始构思数据库了。。。

#1


先启动哪个都行,没有顺序

#2


监听先起。在启实例;

#3


我想应该是有一个是被加载的,一个是加载的,所以应该先启动被加载的吧..

#4


你可以尝试下
shutdown immediate;
lsnrctl stop;
这个时候startup 起不来
必须lsnrctl start才可以启起来

#5


听说数据库的6种启动方式里还真的是有层次的开启的,谢谢ls各位的,我差不多块联想出来了。


刚才看到了一个效率问题,顺便再问一个问题,如果我的表里有100W条数据,我在做用户登陆的时候,需要根据用户提交的username(userid)来查询表并判断password是否正确。

在查询数据库的时候有没有一个好的方法让我的查询语句使用的时间最短呢?

#6


引用 4 楼 linzhangs 的回复:
你可以尝试下 
shutdown immediate; 
lsnrctl stop; 
这个时候startup 起不来 
必须lsnrctl start才可以启起来


补充说明,楼上说的是口令验证。
如果是OS验证的话,服务是能起来的。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host lsnrctl stop

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 29-12月-2008 22:25
:37

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
命令执行成功

SQL> disconnect

SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             113246208 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。

此时
SQL> host lsnrctl status

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 29-12月-2008 22:27
:08

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS:无监听器
 TNS-12560: TNS: 协议适配器错误
  TNS-00511: 无监听器
   32-bit Windows Error: 2: No such file or directory
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jdsnhan)(PORT=1521)))
TNS-12541: TNS:无监听器
 TNS-12560: TNS: 协议适配器错误
  TNS-00511: 无监听器
   32-bit Windows Error: 61: Unknown error

#7


userid 为索引即可

#8


引用 7 楼 jdsnhan 的回复:
userid 为索引即可


谢谢了~~开始构思数据库了。。。