格式一:jdbc:oracle:thin:@//<host>:<port>/<service_name>
格式二:jdbc:oracle:thin:@<host>:<port>:<SID>
格式三:jdbc:oracle:thin:@<TNSName>
RAC环境下使用第一种,这里部署的service_ name是racdb,单节点使用第二种,SID为service_ name1或者service_ name2.
Oracle RAC客户端tnsnames.ora连接串配置和试验Oracle RAC客户端tnsnames.ora连接串配置和试验TNS简要介绍与应用配置过程failover故障转移功能测试实验rac环境下的JDBC连接的问题Oracle RAC客户端tnsnames.ora连接串配置和试验本次试验是搭建好RAC后使用客户端连接RAC数据库并模拟单节点故障后的连接状态。具体过程记录如下:T...
在安装之前,在安装Oracle数据库的服务器上导航到下面的目录。
将listener.ora和tnsnames.ora中的host中的localhost都改为机器的IP地址,我的为192.168.1.102
而后开始安装Oracle客户端
选择定制,可以自己定义安装的组件。
取消对Oracle Scheduler Agent组件的选择。
进行到80%的时候,会运行下面的配置程序。(一般隐藏在当前界面之后,不要在当前界面傻等啊,呵呵)
在部署RAC集群时,共使用到了以下几个IP:
Public IP:公网IP,是网卡的真实IP,Oracle通过公网IP对外提供服务;
Virtual IP:虚拟IP,是在Public IP的基础上,虚拟出的IP,无需在网卡中进行配置,当集群中一台服务出现问题时,该服务上的VIP会自动飘逸到其他主机上,进而确保客户端通过VIP连接时不受单节点故障影响;
Private IP:私有IP,主要用于集群间的心跳检测和数据同步,为网卡的真实IP,对于客户端来说,可以忽略;
SCAN IP:Single Client
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
Oracle的客户端安装了之后,要连接数据库,但是要知道数据库在哪呀。
数据库相当于是一个娱乐场所(公司),实例是里面的美女,为客人提供服务的。
数据库应该称为数据库管理系统,数据库实例是系统中的进程,为客户提供服务。一个系统包含的东西有很多。注意区分数据库系统和数据库实例。
当你要找一个美女服务你时,你要知道娱乐场所在哪(IP地址),从哪里进去(端口),美女的名字(实例名),美女的身份证号或者标识(实例标识符)。因为名字一样的人,一个闭月羞花,一个惨不忍睹。
客户端连接数据库,要获取数据库系
由于Oracle数据库通常需要在不同地方被访问,所以Oracle开发人员必须搞清楚数据库性能如何被网络通讯所影响。由Oracle提供的TNS(Transparent Network Substrate)允许不同数据库之间的分布式通讯。
作为一种分布式协议的TNS,允许远距离的系统之间的透明数据库通讯。TNS成为Oracle逻辑数据请求与远距离服务器的物理通讯之间的“绝缘体(insulator
Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个service过来的连接请求都由某个节点处理。下面来具体看看这两种手段:
纯技术手段 (面向连接的负载均衡)
1. 客户端负载均衡配置方法是在客户端tnsnames.ora文件中设置LOAD_BALANCE=YES,当客户端发起连接时,会从地址列表中随机选取一个,把连接请求随机分散给各个实例。这个技术的最大缺点在于不能根据各个实例的真实负载情况来分散请求,太过粗糙,因此很少使用。
2. 服务器端负载均
plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错”ORA-12154: TNS: 无法解析指定的连接标识符” 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql Plus连接一下试试,如果Sql Plus连接能成功,那就说明你的tnsnames.ora内容有错误 我的问题就在别名dev_db前
但如果登陆数据库使用服务名方式,程序死活链接不上,原因,
说是因为Delphi ODAC与Oracle RAC
Direct mode does not support RAC.YOU can connect only to one fixed server
in RAC.
ODAC 控件中的Direct模式不支持Oracle RAC,只能够链接一个确定的RAC实例。
如果要使用ODAC控件连接Oracle RAC,则需要Oracel安装客户端,并且不使用Direct模式,
链接方式与ADO连接Oracle一致。
根据说明,安装Oracle客户端,安装好之后,查找tnsnames.ora文件
在文件增加
DMSII=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.73)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.74)(PORT = 1521))
(LOAD_BALANCE = ON)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVICE_NAME = DMSII)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = BASIC)
(RETRIES = 30)
(DELAY = 5)
注意,DMSII前不能有空格
程序代码修改
orsn1.Username:=UserName;
orsn1.Password:=PassWord;
orsn1.Server:=服务名;
orsn1.Connect
oracle客户bai端所需要的一个文件du,通过该文件可以配zhi置数据库的连接地址,配dao好后,不用再输入完整的oracle地址,直接用简易的字符串代替即可。
如:本该是数据库地址为:127.0.1.1:1521/orcl,通过设置tnsnames.ora,为它起的别名为:cdbase,就可以用cdbase代替了。
可以用文本编辑工具或记事本打开,该文件用于配置数据库连接地址,数据库访问地址别名可以自定义。
cdbase=
(DESCRIPTION =
ORA-01155异常通常表示数据库文件处于不兼容状态,而关闭PDB时可能会导致该异常的发生。这可能是由于在关闭PDB之前,还有一些会话或事务在使用该PDB中的对象。在这种情况下,您可以尝试以下步骤来解决此问题:
1. 查找在关闭PDB之前正在使用PDB的会话或事务。您可以使用以下查询检查当前正在使用PDB的会话和事务:
SELECT s.sid, s.serial#, s.username, s.program, t.used_urec, t.used_ublk
FROM gv$session s, gv$transaction t
WHERE s.taddr = t.addr AND s.con_id = <PDB ID>;
2. 等待所有正在使用PDB的会话和事务完成后,再关闭PDB。您可以使用以下命令等待所有正在使用PDB的会话和事务完成:
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH BUFFER_CACHE;
ALTER SYSTEM QUIESCE RESTRICTED;
3. 如果仍然无法关闭PDB,请尝试使用以下命令强制关闭PDB:
ALTER PLUGGABLE DATABASE <PDB NAME> CLOSE IMMEDIATE;
请注意,这可能会导致数据丢失或数据库文件处于不兼容状态。因此,请在使用此命令之前备份数据库文件。