TNS配置
可以通过Oracle Net Configuretion
Assitant配置TNS,也可以手动配置。首先在Oracle服务器端安装完成之后,应该先着手配置LISTENER,LISTENER是进行Oracle通讯的首要组件,紧接着在客户端安装Oracle
client,同时配置tnsnamesora文件。
首先监听器包括两个部分:Oracle要监听的地址、端口、通讯协议;Oracle要监听的数据库实例,非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器。每个数据库最少要配置一个监听器。(注:RAC环境,指的是Oracle服务器集群配置的环境)
LISTENER部分配置了Oracle要监听的地址和端口信息;该文件中还会包括SID_LIST_LISTENER部分,这部分配置了Oracle需要监听的实例。(注:在上述截图中并没有SID_LIST_LISTENER这一部分,这是因为Oracle自9i版本引入了动态监听服务注册,在数据库启动时,会自动注册当前数据库实例到监听列表,所以无需配置SID_LIST_LISTENER部分了)
HOST参数可以是Oracle服务器主机名称,也可以是相应的IP地址。在一个多IP的服务器上可以配置listener同时监听多个地址,比如下面的配置:LISTENER=
(DESCRIPTION= (ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192168011)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=192168211) (PORT=1521)))
),或者可以配置多个监听器,分别监听不同的IP地址。
一般说的TNS配置其实就是对tnsnamesora文件的配置,tnsnamesora有客户端的配置,也有服务器端的配置。客户端和服务器端配置的区别是因为服务器端的配置跟LISTENER的配置相关。下面是一个简单的配置示例:
tnsnamesora也包括两部分,ADDRESS_LIST
部分包含了Oracle数据库服务器的监听地址信息,也就是要告诉TNS数据库可通过这个地址和CLIENT进行通讯;CONNECT_DATA
定义了CLIENT要连接的数据库,以及数据库的连接方式,(专用或共享)。
在一个多IP环境中,TNS也可以配置多个远程IP地址:CGDB = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192168155)(PORT = 1521)) (ADDRESS
= (PROTOCOL = TCP)(HOST = 192168156)(PORT = 1521))) (CONNECT_DATA =
(SERVICE_NAME = CGDB) (SERVER = DEDICATED) ) )
sqlnetora是个很重要的配置,它可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置。sqlnetora的配置是全局性的,也就说sqlnetora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以
在TNS配置相应参数。
————————————————————————————————
Oracle10g在windows2003下双机热备安装:
l 硬件环境
服务器两台:
IBM xSeries 346 型号:8840I05;
磁盘柜:
IBM EXP400
SICS卡:
ServeRAID-6M
安装6块硬盘:ibm734G。
l *** 作步骤
l 安装 *** 作系统(两台机器同时进行)
1、 关闭磁盘柜电源;
2、 使用ibm自带光盘ServerGuide Setup and Installation引导系统并根据向导一步一步 *** 作,注意在配置磁盘阵列时,如果本机上只有一块硬盘则跳过,继续。最后一步时会提示你插入 *** 作系统光盘,然后你要做的事情就是等待,并根据随时d出的对话框 *** 作,因为它会自动帮你把系统安装好。
3、 *** 作系统安装完成之后,插入 *** 作系统安装盘,在添加和删除程序中添加 *** 作系统组件,选择网络组件,确定开始安装。
4、 安装活动目录和dns(安装步骤略,请查阅相关资料);
注意:不建议在集群节点上安装活动目录(Active Directory),最好另外选两台服务器作为活动目录(Active Directory)上的域控制器,配置集群节点加入此域中即可。由于此测试环境中只有这两台集群节点服务器,所以只能在它们上安装活动目录,升级成域控制器。
5、 测试域是否安装成功。在a机ping b机“ping b机机器名域名”,如果通了则进行下面的 *** 作,否则请你解决问题之后再继续。
6、 A、B机关机。
l 配置磁盘阵列
7、 打开磁盘柜电源;
8、 A机开机,使用ibm自带光盘ServerRAID Support CD引导系统,进入RAID Manager应用配置RAID阵列。(请参阅附件中),完毕后关机
9、 A机关机,B机开机。使用ibm自带光盘ServerRAID Support CD引导系统,进入RAID Manager应用配置RAID阵列。(请参阅附件中),关机。A机开机。
l 安装群集服务
10、 插入ibm自带光盘ServerRAID Support CD,将光盘中cluster目录copy到机器上,运行IPSHAHTO,接管磁盘,将通过系统配置安装硬盘,并转化为基本磁盘,分区,分配盘符。
11、 B机开机进入 *** 作系统,插入ibm自带光盘ServerRAID Support CD,将光盘中cluster目录copy到机器上,运行IPSHAHTO,接管磁盘。
12、 两台机器反复使用IPSHAHTO,接管磁盘。注意不要写数据到磁盘中。最后等待系统自动同步完成。估计要10到20个小时左右。
13、 A机用IPSHAHTO接管磁盘,B机关机。运行cluster目录中setup程序,开始安装并创建群集,它会启动微软群集安装向导,跟着向导使用默认选项安装(安装过程略,请查阅相关资料),忽略仲裁盘错误。向导完成之后,会回到ibm群集安装向导中,在倒数第二步选择仲裁盘后完成群集安装。等待机器重启完毕。
14、 B机开机,进入 *** 作系统,运行cluster目录中setup程序,开始安装并加入群集。 *** 作步骤同上,仅少选择仲裁盘选项。
15、 来回移动组测试群集是否正常。等待系统自动同步。估计10到20小时。
16、 在等待同步时,可以在两台机器上同时安装oracle 10g。注意,仅安装程序,不建数据库。
l 创建建数据库
17、 修改hosts文件,增加A,B机和群集的ip和名称,重启A、B机。
18、 群集切换到A机。
19、 创建数据库,将数据库文件,控制文件,日志文件的路径配置到共享磁盘上(这里共享磁盘指磁盘阵列上的逻辑驱动器)。
20、 遇到错误,重启相关服务后,点击确定,在78%还会遇到3个错误,全部忽略。
21、 并停止oracle服务,群集切换到B机。
22、 重复18、19步骤。
注:修改listenerora中监听地址为群集ip;如果数据库不能连接,请设置oracle_sid的值为数据库实例名。
23、 将A、B两台机器的数据库服务和监听服务改为手动,并停止服务。将他们加入群集服务中(增加方法请查阅相关资料)
24、 检查群集切换是否正常。
(完)
rac不是分布式数据库,rac结构无论多少个实例都是一个数据库,事务间不需要协调,而所谓的分布式数据库是多个数据库协同工作,事务间需要协调机制。
1、数据库中建立的表是在机器1还是在机器2呢?
答:机器1和机器上2看到的数据库实际上是同一个数据库,所以表既可以在机器1上看到也可以在机器2上看到。
2、如果有个表,在做机器1停机维护时(此时机器2仍可供访问),对这个机器上的表做索引重建,那么是否会影响机器2的使用?
答:如果机器1上的实例对表重建索引,其效果等于机器2上的实例对表重建索引,所以会影响机器2对该表的使用。例如你在机器1上重建索引时没有加上online关键字,重建过程中机器2不能对该表进行dml。
补充:
机器1和机器2看到的库实际上是同一个库,所以在机器1上给某表重建索引时对该表加的锁,也会影响机器2对该表的使用。就像我前面说的,假如你在机器1上重建索引时没有加上online关键字,重建过程中机器2不能对该表进行dml。再进一步说明,你在机器1上重建索引的过程中,机器2也不能将这个表drop掉,原因就是机器1在这个表上加上了ddl锁。
Oracle数据库无响应故障处理方式
Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!
无响应的故障现象一般有以下几种:
1Oracle的进程在等待某个资源或事件
这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。
这种因为等待而引起的个别进程Hang,相对比较容易处理。
2 OracleProcess Spins
所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。
而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。
从故障范围来看,无响应故障可以分为以下几种情况:
1 单个或部分会话(进程)Hang住
这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。
2 单个数据库实例Hang住
这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。
3 OPS或RAC中的多个实例或所有实例都Hang住
在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种情况往往须要重启。
无响应故障成因分析
Oracle数据库无响应,一般主要由以下几种原因引起:
1 数据库主机负载过高,严重超过主机承受能力
比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常 *** 作,并最终Hang住;主机物理内存严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到虚拟内存时,数据库实例往往就会Hang住。
2 日常维护不当、不正确的 *** 作引起数据库Hang住
比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系
统上,对DML *** 作比较多的大表进行move、增加外键约束等 *** 作也可能使系统在短时间内负载大幅升高,并引起数据库系统Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。
3 Oracle数据库的Bug
几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。
4 其他方面的一些原因
比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。
以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够最大限度地避免这种故障的发生,提高系统的可用性。
那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。
无响应故障处理流程
对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。
值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。
下面是整个流程的详细说明:
1 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的',是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、 *** 作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。
2 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行 *** 作。
3 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用 *** 作系统工具或OSW等长期监控 *** 作系统的资源使用,同时监控Oracle数据库的性能和等待等。
4 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。
5 使用SQLPLUS连接数据库,如果不能连接,则只能从 *** 作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state dump;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。
6 使用SQLPLUS连接上数据库后,进行hanganalyze、system state dump等 *** 作;或检查等待事件、异常会话等正在执行的SQL等待。
7 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。
8确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。
9 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。
怎样避免数据库出现无响应故障
作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:
1 进行正确的维护 *** 作
很多的数据库无响应故障都是由于不正确的维护 *** 作引起的。应避免在业务高峰期做大的维护 *** 作,比如像move、加主外键约束等会长时间锁表的 *** 作。如果的确需要,尽量使用正确的 *** 作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行 *** 作的出现。
2 优化应用设计,优化数据库性能
为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。
3 利用监控系统随时监控系统负载
遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、smon等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。
4 为数据库打上补丁
很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。
;一个数据库可以由多个实例打开,但任何时刻一个实例只能打开一个数据库。多个实例可以同时运行在同一个机器上,它们彼此访问各自独立的物理数据库。
对于一个数据库里的多个表空间,是享用RAC功能的,在应用程序配置数据库连接池的时候,用“用户”区分开就可以了。
数据库rac的负载情况需要观察 *** 作系统的资源使用状态,如top,vmstat,topas等。并且需要查看数据库的性能报告awr,ash等。当前连接用户数可以通过gv$session来查看。
以上就是关于数据库配在2台机上 tns怎么连全部的内容,包括:数据库配在2台机上 tns怎么连、oracle rac问题、Oracle数据库无响应故障处理方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)