Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

21

积分

0

好友

0

主题
1#
发表于 2012-4-25 14:31:02 | 查看: 8368| 回复: 8
场景:
本机安装Oracle 8i的Oracle Net8 Easy Config。
有两个服务器:A——安装了Oracle 8i,实例名为orcl; B——安装了Oracle 10g,实例名为orcl;

首先,本机能够正常访问Oracle 8i,另外本机还有C/S客户端是连Oracle 8i,由于工作需要还要连 Oracle 10g。 以前试过再安装一次Oracle 10g的客户端,结果C/S客户端无法连Oracle 8i。

现在想手工配tnsnames.ora

A_SERVER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = A的IP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )


B_server =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = B的IP)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = ORCL)
    )
  )

后面就有点糊涂了:
问题一:tnsping orcl没成功,我自己也不晓得到底是测试那个orcl;
补充:
tnsping A的IP  没有问题:
TNS Ping Utility for 32-bit Windows: Version 8.1.5.0.0 - Production on 25-4月
2 14:50:23
(c) Copyright 1997 Oracle Corporation.  All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=A的IP)(PORT=1521))
OK(0毫秒)

tnsping B的IP 也没有问题:
TNS Ping Utility for 32-bit Windows: Version 8.1.5.0.0 - Production on 25-4月
2 14:50:23
(c) Copyright 1997 Oracle Corporation.  All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=B的IP)(PORT=1521))
OK(20毫秒)

——我该如何测试对应的监听是否起作用了?

问题二:sqlplus 如果登录到目标数据库;
sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba]
我连Oracle 10g失败了。

请版主帮忙指点,谢谢。

[ 本帖最后由 qiuling 于 2012-4-25 14:53 编辑 ]
2#
发表于 2012-4-25 15:26:51
action plan:

执行以下命令 并贴出原始输出

ping A的IP
ping B的IP

tnsping A_SERVER
tnsping B_SERVER

sqlplus  scott/tiger@A_SERVER
sqlplus  scott/tiger@B_SERVER

回复 只看该作者 道具 举报

3#
发表于 2012-4-25 15:39:20
因为是公网上的机器,怕被攻击所以我描述一下执行结果:
ping A的IP——正常,(前面省略)bytes=32 time<1ms TTL=127
ping B的IP——Request timed out.   估计禁ping

tnsping A_SERVER
tnsping B_SERVER

A_SERVER、B_SERVER指服务器的机器名?还是装在A、B机器上的实例名? 两台机器上的实例名是一样的,都是orcl

C:\>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 8.1.5.0.0 - Production on 25-4月 -12 15:35:47
(c) Copyright 1997 Oracle Corporation.  All rights reserved.
TNS-03505: 未能分解名称

sqlplus  scott/tiger@orcl
结果:
C:\>sqlplus  scott/tiger@orcl
SQL*Plus: Release 8.1.5.0.0 - Production on 星期三 4月 25 15:38:05 2012
(c) Copyright 1999 Oracle Corporation.  All rights reserved.
ERROR:
ORA-12154: TNS:无法处理服务名
请输入用户名:




附注:我用Oracle SQL Developer 连上了服务器B,所以判断服务器B上的orcl实例的监听应该是正常的。

[ 本帖最后由 qiuling 于 2012-4-25 15:42 编辑 ]

回复 只看该作者 道具 举报

4#
发表于 2012-4-25 15:51:41
ORA-12154

[oracle@vrh8 ~]$ oerr ora 12154
12154, 00000, "TNS:could not resolve the connect identifier specified"
// *Cause:  A connection to a database or other service was requested using
// a connect identifier, and the connect identifier specified could not
// be resolved into a connect descriptor using one of the naming methods
// configured. For example, if the type of connect identifier used was a
// net service name then the net service name could not be found in a
// naming method repository, or the repository could not be
// located or reached.






tnsnames.ora 中的记录存在问题

使用下面的 写法, 贴到tnsnames.ora 中 直接替换 $IP_ADDR 和 服务别名


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = $IP_ADDR)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

回复 只看该作者 道具 举报

5#
发表于 2012-4-25 16:03:01
成功了,谢谢。
我原来写的是:
cems_server =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = B的IP)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = ORCL)
    )
  )

我又做了一次测试,改为:
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = B的IP)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = ORCL)
    )
  )
也是可以的。

我明白了。
第一行的ORCL只是监听的名称,虽然可以自定义命名,但是客户端写配置时监听的名称应该还是要与服务器上的listener.ora里面的对应的名称一致。

谢谢刘大。

回复 只看该作者 道具 举报

6#
发表于 2012-4-25 16:26:40
C:\>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 8.1.5.0.0 - Production on 25-4月 -1
2 16:20:31
(c) Copyright 1997 Oracle Corporation.  All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=B的IP)(PORT=1521))
OK(20毫秒)

C:\>sqlplus /nolog
SQL*Plus: Release 8.1.5.0.0 - Production on 星期三 4月 25 16:21:10 2012
(c) Copyright 1999 Oracle Corporation.  All rights reserved.
#普通用户
SQL>conn 用户名/密码@SID
#DBA登录
SQL>conn 用户名/密码@SID as sysdba -- sys具有sysdba权限,需要加上 as sysdba
成功。

或者从sqlplus直接登录
#普通用户
C:\>sqlplus 用户名/密码@SID
#DBA登录
C:\>sqlplus 用户名/密码@SID as sysdba

[ 本帖最后由 qiuling 于 2012-4-25 16:31 编辑 ]

回复 只看该作者 道具 举报

7#
发表于 2012-4-25 21:17:11
我原来写的是:
cems_server =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = B的IP)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = ORCL)
    )
  )


这样写的时候  就要 sqlplus scott/tiger@cems_server

cems_server  这个名字并不一定要和linster的名字一样

回复 只看该作者 道具 举报

8#
发表于 2012-4-26 09:25:54
listener.ora  是服务器上的监听配置,只有服务器才配这个文件;
tnsname.ora 是客户端的上的连监听的配置;

我发现服务器上listener.ora 里面没有写明SID_NAME = orcl,那么这个是动态的监听。对吗?

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名)(PORT = 1521)
    )
  )

[ 本帖最后由 qiuling 于 2012-4-26 09:33 编辑 ]

回复 只看该作者 道具 举报

9#
发表于 2012-4-26 11:49:53
如果对 oracle net service 还不熟悉  请 尝试使用 netca、netmgr 图形工具 配置 NET configuration

建议你 仔细阅读

Oracle® Database Net Services Administrator's Guide
10g Release 2 (10.2)
Part Number B14212-02

http://docs.oracle.com/cd/B19306_01/network.102/b14212/toc.htm

官方文档的前几章

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-24 09:42 , Processed in 0.049744 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569