Chinaunix首页 | 论坛 | 博客
  • 博客访问: 894814
  • 博文数量: 101
  • 博客积分: 2256
  • 博客等级: 大尉
  • 技术积分: 1481
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 17:52
文章存档

2017年(1)

2013年(2)

2012年(25)

2011年(73)

分类: Oracle

2011-04-19 18:20:48

Oracle10g数据库windows环境下有多个实例时,在没有监听的情况下,如何在本机登录研究测试。

1.运行环境:

操作系统:windows xp sp3

Oracle数据库版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

硬件:笔记本电脑

2.在电脑中,我已经安装了2个实例,snapalljacky

其中实例snapall下有建了用户snapall,密码snapall;其它用户的密码都是snapall

实例jacky下建了用户jacky,密码jacky;其它用户的密码都是you12323

3.下面有三种连接用到的命令形式
1.sqlplus / as sysdba
这是典型的操作系统认证,不需要listener进程
2.sqlplus sys/oracle
这种连接方式只能连接本机数据库,同样不需要listener进程
3.sqlplus
这种方式需要listener进程处于可用状态。最普遍的通过网络连接

4.首先两个实例都是运行着的。有如下截图。

然后我进行了如下操作:

4.1我用第3种连接方法来测试一下,看是否属实。

我会先用命令来想网友验证一下监听的状态。

C:/Documents and Settings/jacky>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-3 -2011 13:

2:37

Copyright (c) 1991, 2005, Oracle. All rights reserved.

正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

TNS-12541: TNS: 无监听程序

TNS-12560: TNS: 协议适配器错误

TNS-00511: 无监听程序

32-bit Windows Error: 61: Unknown error

C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3 18 13:22:45 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn sys/you12323@jacky as sysdba;

ERROR:

ORA-12541: TNS: 无监听程序

SQL> conn sys/snapall@snapall as sysdba;

ERROR:

ORA-12541: TNS: 无监听程序

结果测试下来真的无法连接。因为没有监听。

4.2接下来我用第1种方法来测试一下,但是我们有个疑问,如果用这种方法,到底是连接到哪个实例了?我们来实际测试一下:

C:/Documents and Settings/jacky>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-3 -2011 13:2

6:44

Copyright (c) 1991, 2005, Oracle. All rights reserved.

正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

TNS-12541: TNS: 无监听程序

TNS-12560: TNS: 协议适配器错误

TNS-00511: 无监听程序

32-bit Windows Error: 61: Unknown error

C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3 18 13:26:49 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba;

已连接。

SQL> show user;

USER "SYS"

SQL> select name from v$database;

NAME

---------

JACKY

SQL>

现在我们发现,用这个方式可以登录到数据库,但是产生一个新的问题,为什么连接的是jacky,而不是snapall,在这里我补充个情况,因为我是先安装的实例snapall,然后安装的实例jacky,当然这个到底是什么原因就需要去推敲了。

4.3接下来我们用第2种连接方法来测试一下:

C:/Documents and Settings/jacky>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-3 -2011 13:

4:20

Copyright (c) 1991, 2005, Oracle. All rights reserved.

正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

TNS-12541: TNS: 无监听程序

TNS-12560: TNS: 协议适配器错误

TNS-00511: 无监听程序

32-bit Windows Error: 61: Unknown error

C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3 18 13:34:24 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn system/snapall;

ERROR:

ORA-01017: invalid username/password; logon denied

SQL> conn system/you12323;

已连接。

SQL> show user;

USER "SYSTEM"

SQL> select name from v$database;

NAME

---------

JACKY

SQL> conn jacky/jacky;

已连接。

SQL> show user;

USER "JACKY"

SQL> select name from v$database;

NAME

---------

JACKY

SQL> conn snapall/snapall;

ERROR:

ORA-01017: invalid username/password; logon denied

警告: 您不再连接到 ORACLE

SQL>

通过以上命令,发现此时我们用这些命令连接的还是默认的jacky实例。至于为什么无法连接到snapall实例需要来查原因了。

5.也许你们看了上面的会怀疑我是否做了什么其它操作,或者说怀疑数据库实例根本没有运行。所以我下面要启动并配置监听看是否可以连接到数据库实例。

5.1现在我先贴出listenter.ora的内容

# listener.ora Network Configuration File: E:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora

# Generated by Oracle configuration tools.

LISTENER1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = bk-fda996f2e2e9)(PORT = 1522))

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = snapall)

(ORACLE_HOME = E:/oracle/product/10.2.0/db_1)

(SID_NAME = snapall)

)

)

SID_LIST_LISTENER1 =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = jacky)

(ORACLE_HOME = E:/oracle/product/10.2.0/db_1)

(SID_NAME = jacky)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = bk-fda996f2e2e9)(PORT = 1521))

)

5.2以下是tnsnames.ora的内容

# tnsnames.ora Network Configuration File: E:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora

# Generated by Oracle configuration tools.

SNAPALL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = bk-fda996f2e2e9)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = snapall)

)

)

JACKY =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = bk-fda996f2e2e9)(PORT = 1522))

)

(CONNECT_DATA =

(SERVICE_NAME = jacky)

)

)

5.3现在我用命令来开始两个监听服务,一个是对数据库实例snapall的监听,另外一个是对实例jacky的监听。端口号也不一样。

C:/Documents and Settings/jacky>lsnrctl start listener

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-3 -2011 13:5

5:53

Copyright (c) 1991, 2005, Oracle. All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

系统参数文件为E:/oracle/product/10.2.0/db_1/network/admin/listener.ora

写入E:/oracle/product/10.2.0/db_1/network/log/listener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bk-fda996f2e2e9)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bk-fda996f2e2e9)(PORT=1521)

))

LISTENER STATUS

------------------------

别名 listener

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期 18-3 -2011 13:55:54

正常运行时间 0 0 小时 0 1

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 E:/oracle/product/10.2.0/db_1/network/admin/listener.o

ra

监听程序日志文件 E:/oracle/product/10.2.0/db_1/network/log/listener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bk-fda996f2e2e9)(PORT=1521)))

服务摘要..

服务 "snapall" 包含 1 个例程。

例程 "snapall", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

C:/Documents and Settings/jacky>lsnrctl start listener1

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-3 -2011 13:5

5:59

Copyright (c) 1991, 2005, Oracle. All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

系统参数文件为E:/oracle/product/10.2.0/db_1/network/admin/listener.ora

写入E:/oracle/product/10.2.0/db_1/network/log/listener1.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bk-fda996f2e2e9)(PORT=1522)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bk-fda996f2e2e9)(PORT=1522)

))

LISTENER STATUS

------------------------

别名 listener1

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期 18-3 -2011 13:56:00

正常运行时间 0 0 小时 0 1

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 E:/oracle/product/10.2.0/db_1/network/admin/listener.o

ra

监听程序日志文件 E:/oracle/product/10.2.0/db_1/network/log/listener1.lo

g

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bk-fda996f2e2e9)(PORT=1522)))

服务摘要..

服务 "jacky" 包含 1 个例程。

例程 "jacky", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

C:/Documents and Settings/jacky>

5.4现在我再用命令来登录到数据库,看是否可以登录,特别是数据库实例snapall

C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3 18 13:58:54 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn sys/snapall@snapall as sysdba;

已连接。

SQL> select name from v$database;

NAME

---------

SNAPALL

SQL> conn system/snapall@snapall;

已连接。

SQL> select name from v$database;

NAME

---------

SNAPALL

SQL> conn snapall/snapall@snapall as sysdba;

已连接。

SQL> select name from v$database;

NAME

---------

SNAPALL

SQL> conn sys/you12323@jacky as sysdba;

已连接。

SQL> select name from v$database;

NAME

---------

JACKY

SQL> conn system/you12323@jacky;

已连接。

SQL> select name from v$database;

NAME

---------

JACKY

SQL> conn jacky/jacky@jacky;

已连接。

SQL> select name from v$database;

NAME

---------

JACKY

SQL>

6.总结

从上面的情况来看,其实数据库实例snapalljacky都是运行的,而且可以连接的。但是如果都要可以从数据库服务器本机连接,应该要通过设置监听才可以。否则只能连接到系统默认的一个实例中去。当然还有一种办法,就是关闭掉其它实例,只剩下一个实例,当然如果只是剩下一个实例,就没有必要去讨论目前的这个问题了。呵呵

如果有高手知道怎么在windows系统数据库服务器中不设置监听,又可以连接多个实例。可以将知识与大家共享,谢谢!


--首先跟大家说句对不起,小弟由于知识有限,这篇文章有限误导大家。刚刚发现在windows环境下,如果安装多个实例的话

如果没有监听,可以设置oracle_sid环境变量,这样就可以连接各个实例了,但是同时只能连接一个。

在命令行下面输入:set oracle_sid

如果环境变量没有设置,可以set oracle_sid=实例名,

这样你那个实例就可以连接了。呵呵,大家去试试吧!

阅读(1990) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~