oracle数据库怎么net manager配置监听
当我们建立了Oracle数据库后,必须合理地配置监听程序和网络服务名后,客户应用才能访问我们的数据库。所以服务器端必须配置监听程序,而网络服务名在客户端跟服务器端都可以配置。看如下说明:
1。服务器端的监听程序用于接收客户端的连接请求。
在建立了Oracle数据库之后,为了使得客户应用可以访问特定数据库,必须要在监听程序中追加该数据库。一个监听程序可以监听多个Oracle数据库,多个监听程序也可以监听同一个数据库。但是监听程序只能用于同一台服务器上的Oracle数据库。安装了Oracle时,会自动建立默认的监听程序LISTENER一般只需要将需要使用的数据库追加到这个监听程序上就可以了。
监听程序使用的默认端口为1521
保存了监听程序配置之后,必须要重新启动监听程序才能生效。windows中可以在“服务”中重新启动。
例如:假如我在101502745上装了ORACLE服务器,端口是1521,为了让其他客户端应用(不管是本地的还是其他的)可以访问我的名为TESTDB的数据库,首先得在服务器上配置监听器:进入NET MANAGER 新建一个端口,如命名为LISTENER,配置主机名:如101502745和端口1521,配置全局数据库名:如TESTDB,然后保存就好了
2。客户端需要配置网络服务名,应用程序使用网络服务名才能访问Oracle数据库, 一般使用数据库名作为服务名。注意: 网络协议要与监听程序的一致(如TCP/IP)
例如:假如我在101502746上装了ORACLE客户端,进入NET MANAGER,新建一服务命名,如:TEST,然后配置你要连接的DB服务器名字和端口好,如:101502745, 1521,配置服务名,必须跟监听端口的全局数据库名一样:如TESTDB,然后你可以通过输入用户名和密码测试连接成不成功了
3。利用客户端工具测试
在101502746上通过SQLPLUS连接101502745上的DB:TESTDB, 输入用户名密码,HOST STRING输入TEST,看连接是不是成功
Oracle监听器是Oracle服务器软件的一个组件,它负责管理Oracle数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP 15
Oracle监听器简介
Oracle监听器是Oracle服务器软件的一个组件,它负责管理Oracle数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP 1521端口)上监听连接请求,并将连接转发给数据库,由两个二进制文件组成:tnslsnr和lsnrctl。其中tsnlsnr就是监听器本身,它运行在数据库服务器端,lsnrctl是监听器控制程序,用于在服务器上或远程管理监听器。与监听器相关的还有两个配置文件:sqlnetora和listenerora。tnslsnr启动时就会读取这两个配置文件中的信息,如端口号,数据库服务名。
Oracle监听器在默认安装和配置情况下,有许多著名的漏洞和缺陷,黑客利用这些缺陷可以制造拒绝服务攻击,偷窃数据库连接密码,进一步窃取机密数据。最大的风险来自监听器的配置,Oracle官方提供了一些推荐的配置,往往能够达到保护监听器的目的。本文就是想仔细列出现有的已知保护Oracle监听器的方法,这些方法对于黑客而言都很熟悉,所以作为DBA也必须要清楚才行。
为什么要保护监听器?
DBA对于为什么要保护监听器往往不太关心,他们认为黑客不太可能通过控制监听器进而控制整个数据库,在Oracle 10g之前的所有版本,Oracle监听器允许任何一个人利用lsnrctl从远程发起对监听器的管理,但幸运的是,从Oracle 101开始严格限制在远程对监听器的管理了。下面列出一些对Oracle 8/9i默认安装配置时可能有效的攻击手段,即使是打上最新的安全补丁,而没有进行安全配置加固,这些攻击手段也仍然有效:
注意:本文假设监听器使用的是TCP/IP,并且使用的是本地命名管理(即tnsnamesora),本文所描述的Oracle版本在8i/9i/10g上做过测试,但相信对其他低版本或更高的版本也有一定的参考价值。
怎么保护监听器?
既然监听器有这么多可供黑客利用的地方,那有没有什么方法来保护它,办法是有的,而且还很多,总结起来,大概有下面11种方法来保护Oracle监听器:
1、 设备监听器密码
通过设置监听器密码可以阻止大部分的菜鸟黑客的进攻,设置密码有两种方法,一种是通过lsnrctl命令来设置,另一种是直接修改listenerora文件,第一种方法设置的密码是经过加密后存储在listenerora中,而第二种方法是以明文的形式放在listenerora中的,所以推荐使用第一种方式。具体命令如下:
LSNRCTL> set current_listener
LSNRCTL> change_password
old password:
New password:
Reenter new password:
LSNRCTL> set password Password:
LSNRCTL> save_config
设置好密码后,打开listenerora,看是否有一条PASSWORDS_的记录,类似于PASSWORDS_LISTENER = F4BAA4A006C26134。为监听器设置了密码后,,必须到客户端重新配置连接。
2、 开启监听器日志
开启监听器日志功能是为了捕获监听器命令和防止密码被暴力破解。开启监听器日志功能的命令为:
LSNRCTL> set current_listener
LSNRCTL> set password Password:
LSNRCTL> set log_directory /network/admin
LSNRCTL> set log_file log
LSNRCTL> set log_status on
LSNRCTL> save_config
通过运行上面的命令,监听器将会在/network/admin目录下创建一个log日志文件,以后可以打开该文件查看一些常见的ORA-错误信息。
3、 在listenerora中设置ADMIN_RESTRICTIONS
在listenerora文件中设置了ADMIN_RESTRICTIONS参数后,当监听器在运行时,不允许执行任何管理任何,届时,set命令将不可用,不论是在服务器本地还是从远程执行都不行,这时如果要修改监听器设置就只有手工修改listenerora文件了,通过手工修改listenerora,要使修改生效,只能使用lsnrctl reload命令或lsnrctl stop/start命令重新载入一次监听器配置信息。在listenerora文件中手动加入下面这样一行:
ADMIN_RESTRICTIONS_ = ON
4、 打上最新的监听器补丁
这一点就与操作系统类似,数据库也有bug,也有漏洞,黑客会在漏洞发现第一时间扫描未打补丁的服务器,所以作为一个称职的DBA要随时关注Oracle的CPU(呵呵,不是处理器,是关键补丁升级的意思),这里要说明的是Oracle的补丁是自动累加的,就像windows xp sp2的内容包括了sp1的所有内容一样,所以只需要按照最新的补丁集就可以了,还有一点要注意的是在生产系统上应用任何补丁前都需要先在测试环境进行测试,保证升级后不影响正常业务才进行升级。最后要说明的是,只有购买了Oracle的正式许可才可以登陆下载补丁,否则就只有从第三方地址下载,其完整性就不能保证了。
5、 利用防火墙阻止SQLNET
除非的确需要,否则不应该让SQLNET通讯通过防火墙,在设计防火墙规则时,应设计为只允许经过认证的Web服务器和应用程序通过防火墙进行SQLNET通信。而且放在防火墙DMZ区域的应用服务器使用SQLNET通信时,应只允许它与特定的数据库服务器进行通信。
通常很少有应用会从Internet直接访问数据库,因为这种方式的延迟非常明显,通用的做法是配置应用服务器与数据库通信,Internet客户端通过浏览器访问应用服务器即可,这时配置防火墙时也只需设置应用服务器和数据库服务器之间的通信规则即可。
6、 保护$TNS_ADMIN目录
$TNS_ADMIN目录即我们通常看到的ORACLE_HOME/network/admin目录,它下面包含有listenerora,tnsnamesora,sqlnetora,protocolora等重要配置文件,前面已经提到,监听器的密码就是保存在listenerora中的,如果不保护好,可能造成密码泄露,或整个文件被修改,这个目录下的listenerora,sqlnetora,protocolora文件应该只开放给Oracle主账户(通常是oracle或Administrator),而其他账户不能有任何权限,tnsnamesora文件在Linux或Unix系统上权限可以设置为0644,在windows上可以设置其他用户为浏览,读取权限。
7、 保护TNSLSNR和LSNRCTL
在Linux或Unix服务器上,应该将这两个文件的权限设为0751,如果想更严格一点,可以设为0700,这样就只有安装oracle时指定的宿主用户可以执行它们了,这两个文件位于ORACLE_HOME/bin目录下。保护这两个文件的目的是为了防止黑客直接破坏它们,如果tnslsnr被破坏,监听器肯定不能启动,如果lsnrctl被破坏,可能植入恶意代码,在运行lsnrctl时就会执行其它黑客行为。
8、 移除不用的服务
默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listenerora中,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它,可以直接从listenerora中将这项移除,因为对ExtProc已经有多种攻击手段了。有时可能会在多个实例之间拷贝listenerora,请检查拷贝来的文件中是否含有不需要的服务,确保只留下的确需要的服务项目,减少监听器受攻击的面。
9、 改变默认的TNS端口号
改变监听器监听的端口号与修改ftp服务器默认的21端口,web服务器的80端口类似,因为Oracle默认的监听端口是1521(Oracle还正式注册了两个新的端口号2483和2484,说不定哪个新版本发布后,可能默认的端口号就会是这两个了,其中2484用于SSL类型的连接),几乎所有的扫描器都可以直接扫描这个端口是否打开,如果设置为一个不常用的端口号,可能会给人一种假象,而且即使扫描到端口打开,也还要猜测该端口运行是究竟是什么服务,攻击难度就加大了。在修改端口的时候也不要设在1521-1550和1600-1699范围内,虽然通过修改默认端口并不算什么高级防护技术,但至少可以防止自动攻击,以及在端口1521上的简单扫描。
可直接编辑listenerora中端口号,也可以通过netca程序进行修改,当然在客户端也要做对应的修改才行。同时要设置初始化参数LOCAL_LISTENER,这样在监听端口发生变化后,数据库才会自动进行监听器重新注册。
10、 设置节点验证
根据应用程序和网络配置情况,采用节点验证对于保护监听器是一种强有力的方法,大部分Web应用程序都只需要从应用服务器访问监听器,以及一台管理客户端,对于Oracle 8/8i,在$ORACLE_HOME/network/admin/protocolora文件中添加节点检查语句,对于Oracle 9i/10g,在$ORACLE_HOME/network/admin/sqlnetora文件中添加节点检查语句,语句的格式都一样,如:
tcpvalidnode_checking = yes
tcpinvited_nodes = ( xxxx | name, xxxx | name)
tcpexcluded_nodes=( xxxx | name, xxxx | name)
注意:这里要么使用invited_nodes语句,要么使用excluded_nodes,不能同时都使用,也不能使用通配符,子网等,只能使用明确的ip地址或主机名。这里的xxxx指的就是如1921681100这样的ip地址,name就是主机名,如果有多个ip地址或主机名,使用逗号进行分隔。
设置了节点验证后,监听器需要重新启动才会生效。使用这种方法进行节点验证会消耗一定的系统资源和网络带宽,如果要验证的地址过多,靠手工添加也很麻烦,这时可以使用Oracle Connection Manager,如果是有许多客户端通过SQLNET访问数据库,使用这种节点验证的方法也不可行,那会相当的慢。
11、 监视日志
在前面的方法中开启了监听器日志功能,在产生了日志信息后,要对其进行分析,常见的可在日志文件中查找是否有TNS-01169,TNS-01189,TNS-01190或TNS-12508错误,如果有这些错误,至少可以说明要么有人攻击,要么有异常活动,进一步可以使用shell基本或一些简单的管理工具将这些有用的日志信息定期发送给DBA,实现实时监控效果。
下面是对前面提到的几个常见错误的描述:
小结
通过上面这11种方法对Oracle监听器进行保护后,想要通过监听器进行破坏活动基本上就很困难了,不能保证100%拦截攻击,也至少有99%的效果,另外那1%可能就是DBA本身犯的一些低级错误了,如不小心将监听器密码泄露给他人,或将配置信息暴露在Internet上。
连接数据库服务器
(1) 启动服务器端监听器与数据库服务
Linux/Unix下,启动监听器:
$ lsnrctl start
关闭监听器:
$ lsnrctl stop
查看监听状态:
$ lsnrctl status
启动数据库:
$ sqlplus /nolog
SQL>conn sys@myoracle as sysdba --这里的myoracle是前面配置的客户端本地服务名
或
SQL>conn / as sysdba
SQL>startup
Windows下,启动监听器:
C:lsnrctl start
启动Oracle实例服务:
C:oradim a href="http://gamepchomenet/pcgame" class="none" title="cs" rel="external">cstartup –sid myoracle
关闭Oracle实例服务:
C:oradim –shutdown –sid myoracle
以上服务必须同时启动,客户端才能连接数据库。由于默认配置的监听器名称是Listener,上述命令可以正常启动监听器,如果监听器名称是其它名称,如aListener,则需要用下列方式才能启动:
Linux/Unix下:
$ lsnrctl start aListener
Windows下:
C:lsnrctl start aListener
(2) 测试连接数据库服务器
测试的方法多种多样,可以在上面配置本地服务名时进行测试,也可以是第三方客户端工具,如PL/SQL Developer,最方便的是用Oracle自带的sqlplus工具,以下利用sqlplus进行测试:
C:sqlplus /nolog
SQL>conn zgh@myoracle
已连接。
环境 centos 54 + oracle 10g r2
已有实例 xxxio 和监听listener 端口1521
现又新建实例 xxxdb 监听名称listener02 端口 1522实现 listener02 只加载实例 xxxdb
1创建数据库 实例名xxxdb
2netca 创建监听 listener02 端口1522
3配置listenerora 如下
# listenerora Network Configuration File: /u01/app/oracle/product/10g//network/admin/listenerora
# Generated by Oracle configuration tools
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = xxxio)
(ORACLE_HOME = /u01/app/oracle/product/10g/)(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = +ASM)
(ORACLE_HOME = /u01/app/oracle/product/10g/))
(SID_DESC =
(SID_NAME = xxxdb)
(ORACLE_HOME = /u01/app/oracle/product/10g/))
)
SID_LIST_LISTENER02 =
(SID_LIST =
(SID_DESC =
(SID_NAME = xxxdb)
(ORACLE_HOME = /u01/app/oracle/product/10g/))
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1521)))
)
LISTENER02 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1522)))
)
说明 : 自己在配置过程中也遇到了好多问题 ,最后通过查看资料和实际测试 证明上述的配置是正确的1首先用netca创建 listener02 后 会在配置文件listenerora中 生成如下的信息 。这说明一个监听创建成功。
可以启动 、关闭 。但是没有加载实例。
LISTENER02 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1522)))
)
2在配置文件listenerora 中加入如下信息 ,才能将实例xxxdb 加载到监听 listener02中 实现 各尽其职SID_LIST_LISTENER02 = --这的命名是SID_LIST_监听名(SID_LIST =
(SID_DESC =
(SID_NAME = xxxdb)
(ORACLE_HOME = /u01/app/oracle/product/10g/))
)
该文是我连接oracle的总结 特别适合于程序开发人员与oracle菜鸟 如何配置才能使客户端连到数据库 要使一个客户端机器能连接oracle数据库 需要在客户端机器上安装oracle的客户端软件 唯一的例外就是java连接数据库的时候 可以用jdbc thin模式 不用装oracle的客户端软件 加入你在机器上装了oracle数据库 就不需要在单独在该机器上安装oracle客户端了 因为装oracle数据库的时候会自动安装oracle客户端 用过sql server数据库然后又用oracle的新手可能会有这样的疑问 问什么我用sql server的时候不用装sql server的客户端呢?原因很简单 sql server也是microsoft的 它在操作系统中集成了sql server客户端 如果microsoft与oracle有协议 将oracle客户端也集成到操作系统中 那我们也就不用在客户端机器装oracle客户端软机就可访问数据库了 不过 这好像是不可能实现的事情 也有的人会问 为什么在sql server中没有侦听端口一说 而在oracle中要配置侦听端口?其实sql server中也有侦听端口 只不过microsoft将侦听端口固定为 不允许你随便改动 这样给你一个错觉感觉sql server中没有侦听端口 咳 microsoft把太多的东西都封装到黑盒子里 方便使用的同时也带来的需要副作用 而oracle中的侦听端口直接在配置文件中 允许随便改动 只不过无论怎样改动 要与oracle服务器端设置的侦听端口一致 好 言归正传 我们如何做才能使客户端机器连接到oracle数据库呢? A. 安装相关软件 B. 进行适当的配置 A.在适当的位置安装适当的软件 在客户端机器 .在客户端机器上安装ORACLE的Oracle Net通讯软件 它包含在oracle的客户端软件中 .正确配置了sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN=DB_DOMAIN 一般情况下我们不用NAMES DEFAULT_DOMAIN参数 如果想不用该参数用#注释掉或将该参数删除即可 对于NAMES DIRECTORY_PATH参数采用缺省值即可 对于NAMES DEFAULT_DOMAIN参数有时需要注释掉 在下面有详细解释 .正确配置了tnsname ora文件 在服务器端机器 .保证listener已经启动 .保证数据库已经启动 如果数据库没有启动 用 Oracle i: dos>sqlplus / as sysdba sqlplus> startup Oracle i: dos>svrmgrl svrmgrl>connect internal svrmgrl>startup 命令启动数据库 如果listener没有启动 用 lsnrctl start [listener name] lsnrctl status [listener name] 命令启动listener B.进行适当的配置 如何正确配置tnsname ora文件 可以在客户端机器上使用oracle Net Configuration Assistant或oracle Net Manager图形配置工具对客户端进行配置 该配置工具实际上修改tnsnames ora文件 所以我们可以直接修改tnsnames ora文件 下面以直接修改tnsnames ora文件为例 该文件的位置为 …\neork\admin\tnsnames ora (for windows) …/neork/admin/tnsnames ora (for unix) 此处 假设服务器名为testserver 服务名为 使用的侦听端口为 则tnsnams ora文件中的一个test网络服务名(数据库别名)为 test = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 红色的内容为需要根据实际情况修改的内容 现解释如下 PROTOCOL 客户端与服务器端通讯的协议 一般为TCP 该内容一般不用改 HOST 数据库侦听所在的机器的机器名或IP地址 数据库侦听一般与数据库在同一个机器上 所以当我说数据库侦听所在的机器一般也是指数据库所在的机器 在UNIX或WINDOWS下 可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名 或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址 需要注意的是 不管用机器名或IP地址 在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名 否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析 PORT 数据库侦听正在侦听的端口 可以察看服务器端的listener ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看 此处Port的值一定要与数据库侦听正在侦听的端口一样 SERVICE_NAME 在服务器端 用system用户登陆后 sqlplus> show parameter service_name命令察看 如何利用配置的网络服务名连接到数据库 用sqlplus程序通过test网络服务名进行测试 如sqlplus system/manager@test 如果不能连接到数据库 则在tnsname ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值 通过用sqlplus> show parameter db_domain命令察看 此处db_domain参数值为 将其加到网络服务名后面 修改后的tnsname ora中关于该网络服务名的内容为 = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 用sqlplus程序通过网络服务名测试 如sqlplus system/manager 关于为什们在网络服务名后面加db_domain参数 需要了解sqlplus连接数据库的原理 我在后面解决 常见故障中给出了详细的说明 如果上面的招数还不奏效的话 只好用一下乾坤大挪移了 将客户端的网络服务名部分 = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 拷贝到服务器的tnsnames ora文件中 然后再服务器端用sqlplus system/manager连接到数据库 如果能连接成功 说明你的客户端与服务器端的网络有问题 如果连接不成功 用前面的部分检查网络服务名部分部分是否正确 如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题 建议重新安装数据库 常见故障解决办法 TNS (ORA ) TNS:could not resolve service name 该错误表示用于连接的网络服务名在tnsnames ora文件中不存在 如上面的tnsnames ora中的网络服务名只有test 假如用户在连接时用sqlplus system/manager@test 则就会给出TNS 错误 要注意的是 有时即使在tnsnames ora文件中有相应的网络服务名 可是用该网络服务名连接时还会出错 出现这种情况的典型配置如下(在客户端的机器上) sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN = tnsnames ora文件: test = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) sqlplus运行基本机理 在用户输入sqlplus system/manager@test后 sqlplus程序会自动到sqlnet ora文件中找NAMES DEFAULT_DOMAIN参数 假如该参数存在 则将该参数中的值取出 加到网络服务名的后面 即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/man 然后再到tnsnames ora文件中找网络服务名 这当然找不到了 因为该文件中只有test网络服务名 所以报错 解决的办法就是将sqlnet ora文件中的NAMES DEFAULT_DOMAIN参数注释掉即可 如#NAMES DEFAULT_DOMAIN = 假如NAMES DEFAULT_DOMAIN参数不存在 则sqlplus程序会直接到tnsnames ora文件中找test网络服务名 然后取出其中的host port tcp service_name 利用这些信息将连接请求发送到正确的数据库服务器上 另外原则上tnsnames ora中的配置不区分大小写 但是我的确遇到区分大小写的情况 所以最好将使用的网络服务与tnsnames ora中配置的完全一样 ORA : TNS:listener could not resolve SERVICE_NAME given in connect Descriptor 该错误表示能在tnsnames ora中找到网络服务名 但是在tnsnames ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致 解决的办法是修改tnsnames ora中的SERVICE_NAME 易混淆术语介绍 Db_name 对一个数据库(Oracle database)的唯一标识 该数据库为第一章讲到的Oracle database 这种表示对于单个数据库是足够的 但是随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱 为了解决这种情况 引入了Db_domain参数 这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱 这类似于互连网上的机器名的管理 我们将Db_name和Db_domain两个参数用 连接起来 表示一个数据库 并将该数据库的名称称为Global_name 即它扩展了Db_name Db_name参数只能由字母 数字 _ # $ 组成 而且最多 个字符 Db_domain 定义一个数据库所在的域 该域的命名同互联网的 域 没有任何关系 只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的 当然为了管理方便 可以将其等于互联网的域 Global_name 对一个数据库(Oracle database)的唯一标识 oracle建议用此种方法命令数据库 该值是在创建数据库是决定的 缺省值为Db_name Db_domain 在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值 如果要修改Global_name 只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name db_domain>命令进行修改 然后修改相应参数 Service_name 该参数是oracle i新引进的 在 i以前 我们用SID来表示标识数据库的一个实例 但是在Oracle的并行环境中 一个数据库对应多个实例 这样就需要多个网络服务名 设置繁琐 为了方便并行环境中的设置 引进了Service_name参数 该参数对应一个数据库 而不是一个实例 而且该参数有许多其它的好处 该参数的缺省值为Db_name Db_domain 即等于Global_name 一个数据库可以对应多个Service_name 以便实现更灵活的配置 该参数与SID没有直接关系 即不必Service name 必须与SID一样 Net service name 网络服务名 又可以称为数据库别名(database alias) 是客户端程序访问数据库时所需要 屏蔽了客户端如何连接到服务器端的细节 实现了数据库的位置透明的特性 lishixinzhi/Article/program/Oracle/201311/17463
打开Oracle
Net
Manager创建监听
1
在开始菜单,选择oracle,再选择“配置和移值工具”,打开Oracle
Net
Manager。
2
在弹出的窗口上
选择“监听程序”,点击左边的“+”图标,创建监听。
3
在接下来的窗口上选择监听名称,或者自己起一个监听名称,在点击下方“确定”按钮。
END
添加服务器数据库IP地址配置监听
1
点击“添加地址”按钮,填写好服务器主机ip地址以及端口号并及时保存。
END
配置服务名称
选择“服务名称”,创建一个服务名称,最好跟目标主机数据库服务名称一致。
点击下一步,选择TC/IP选项,再单击下一步。
填写好服务器数据库主机名,一般填写IP地址就可以了,再填写好端口:1521
。下一步的时候,填写好服务名,跟SID一致就可以了。
测试是否可以连通,点击“测试”按钮,更改进入数据库操作的账户跟密码点击测试。
测试连接成功如下图,如果测试未成功,就按上面的步骤仔细检查看看哪里出问题了。一般查询服务器ip地址、端口、数据库用户名、密码、防火墙等等地方是否有问题。
Win7/win10 配置Oracle 客户端连接失败情况解决
关键词:
tnsping 、sqlplus、 SP-1503、 SP-0152、用户权限
安装好Oracle后,发现使用“Oracle net manager”总是提示 连接失败,提示输入字符错误或服务器为连接。(其他机器可联接,服务器端OK)
方法/步骤
1
探求原因,控制台下(CMD):
1)使用 tnsping “Oracle服务器主机IP:端口”,提示可连接,判断客户端 sqlnetora配置文件OK;
2)使用tnsping “Oracle服务器主机实例名:端口(TNSNAMES)”,提示可连接,判断tnsnamesora配置文件OK;
3)使用 sqlplus “username/password@net_service_name” 提示 SP-1503 和SP2-0152 错误;证明当前用户对SQLPLUSexe的权限不足
2
解决方法:
进入 Oracle client\Bin 下找到sqlplusexe (顺便sqlpluswexe):
右键-->兼容性-->以管理员身份运行此程序;
右键-->属性-->安全性,将Authenticated Users 赋予完全控制权限,确认保存。
使用 sqlplus “username/password@net_service_name” 提示 登陆成功
使用“Oracle net manager”测试登陆,显示登陆成功。
至此,问题解决。
3
总结:Windows 的权限控制害死人呀
END
注意事项
首先确保服务端配置OK,再来搞定客户端
0条评论