博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给Oracle数据库换一个1522端口的监听
阅读量:2134 次
发布时间:2019-04-30

本文共 4071 字,大约阅读时间需要 13 分钟。

可能是因为短了几天,2月过得比其他月份要快不少。这都最后一天了,博客还是没碰一下。

也因为这个月学习放缓了,就是偷懒了。。所以想了想,定不下要写些什么。

很久以前就想写写分析函数,Oracle的分析函数是个强大的东东,也整理过一些,但始终觉得拿不出手。。。

写写我们家little fairy?想到就很开心哈哈哈哈哈哈哈哈哈哈哈哈哈傻的不行!

打住打住,时间不多了,就最后一个半钟。还是记一点东西吧。、

 

======================================== 一根完美的分割线 =======================================

事情是这样发生的,公司的的一台破服务器,最近不知道为啥呢,上面的数据库连接速度特别慢,尝试用tnsping了一下那服务器的1521端口,120000+ ms,也就是差不多两份多钟的样子,尝试修理一下,未果。

但是发现,如果我重新建一个监听,用1522端口,tnsping速度块的一批,10ms妥妥的。结局还是很美好的!

 

但那只是我以为。。。

C:\Users\Lhy>tnsping 127.0.0.1:1522TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 28-2月 -2019 22:49:09Copyright (c) 1997, 2010, Oracle.  All rights reserved.已使用的参数文件:D:\app\product\11.2.0\dbhome_1\network\admin\sqlnet.ora已使用 HOSTNAME 适配器来解析别名尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522)))OK (0 毫秒)C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orclSQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 22:49:41 2019Copyright (c) 1982, 2010, Oracle.  All rights reserved.ERROR:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务请输入用户名:

怎么样,惊不惊喜!!!意不意外!!!

原来的数据库并不能直接就注册到新的监听中来给外面连接。

 

那么为什么呢?有数据库,有监听,怎样关联?

原来的为什么就行呢?

 

1、了解一下动态注册

实例在启动的时候,读取init.ora文件,把一些信息动态注册到默认监听中,默认监听,也就是名称叫LISTENER,端口是1521,协议是tcp的那个监听。

而我们现在是重新建了监听。。数据库和实例并不不知道我们这个监听的信息,所以,我们要把这个监听的信息,保存到数据库里面,让它服务启动的时候,能够知道往哪里注册。。。

两种方法:

第一种:

(1)在%ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora文件中,添加新监听的连接信息,代码及位置如下图,自己按照自己的改一下host和端口:

LISTENER1522 =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522))    )

(2)然后,先通过操作系统认证登陆,并设置数据库注册的监听,如下:

C:\Users\Lhy>set oracle_sid=orcl    -- 设置默认数据库sidC:\Users\Lhy>sqlplus / as sysdba    -- 管理员身份登陆SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:21:57 2019Copyright (c) 1982, 2010, Oracle.  All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> alter system set local_listener=LISTENER1522;    -- 修改监听名为刚才tnsnames.ora里面的监听名系统已更改。SQL> alter system register;    -- 注册系统已更改。SQL> exit从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 断开C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orcl    --走1522端口的监听登陆SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:23:06 2019Copyright (c) 1982, 2010, Oracle.  All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>

这样,咱们就算是用上了新的监听了。

 

上面这种方法呢,是先在tnsnames.ora里面定义LISTENER1522这个监听的信息,然后在数据库里面设置这个监听名;这种的话,比较适合这个服务器中有多个数据库,统一维护比较方便,如后面监听再有变动,也只需要改一下tnsnames文件重启下数据库就行。

 

第二种:另外一种比较简单粗暴的,就是直接把监听的连接信息直接写到数据库中,就省了修改tnsnames.ora这一步。例如咱们把在tnsnames中配置的监听信息抽出来,就是 (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522)),然后,直接把这个信息,设置到数据库中,如下:

C:\Users\Lhy>set oracle_sid=orcl    -- 设置默认数据库C:\Users\Lhy>sqlplus / as sysdba    -- 管理员登陆SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:33:28 2019Copyright (c) 1982, 2010, Oracle.  All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522))';    -- 直接设置具体的监听连接信息系统已更改。SQL> alter system register;    -- 注册系统已更改。SQL> exit从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 断开C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orcl    -- 通过1522登录SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:34:07 2019Copyright (c) 1982, 2010, Oracle.  All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>

这个方法呢,,可行,但是呢,如果数据库多,维护起来就比较麻烦些吧。

 

还有个方法呢,根据网上的说法,可以用静态注册的方式, 在listener.ora文件中静态注册某一个或者多个实例,但暂时没实践过,最后几分钟了,就不折腾了。

3月,你好呀~

转载地址:http://dmkgf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】191-Number of 1 Bits
查看>>
【LEETCODE】13-Roman to Integer
查看>>
【LEETCODE】83-Remove Duplicates from Sorted List
查看>>
【LEETCODE】70-Climbing Stairs
查看>>
【LEETCODE】198-House Robber
查看>>
【LEETCODE】62-Unique Paths
查看>>
【LEETCODE】310-Minimum Height Trees
查看>>
【LEETCODE】207-Course Schedule
查看>>
【LEETCODE】263-Ugly Number
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>