TNSNAMES配置中空格导致的bug

合集下载

Oracle的tnsnames.ora配置(PLSQLDeveloper)

Oracle的tnsnames.ora配置(PLSQLDeveloper)

Oracle的tnsnames.ora配置(PLSQLDeveloper)1. ⾸先打开tnsnames.ora的存放⽬录,⼀般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了。

2. 2使⽤editplus或者记事本或其他⼯具打开tnsnames.ora,进⾏编辑配置⼀下⽂件CONN_shenyi2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.144.191)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))3. 3上边的SERVICE_NAME 和HOST、PORT 改为⾃⼰的即可4. 4打开plsql,登陆5. 5登陆完成即可使⽤强⼤的plsql developer/article/b0b63dbfcd34834a4930704a.html222222222222222222222222222222222222222今天是重要的⼀天。

将XML数据导⼊ORACLE遇到很多问题,学了好多,其中很长时间花在⽹络配置上,刚开始学,具体原因不知道,先把搜集到的好⽂章存下来,以后慢慢研究。

监听配置⽂件为了使得外部进程如 CAMS后台程序能够访问 Oracle 数据库必须配置 Oracle ⽹络服务器环境配置 Oracle ⽹络服务器环境是通过配置listener.ora sqlnet.ora 和 tnsnames.ora 共三个⽂件来进⾏的 listener.ora即监听配置⽂件在本⼩节说明另两个⽂件分别在随后的两个⼩节说明监听配置⽂件 listener.ora 的存放路径为 $ORACLE_HOME/network/admin以下是⼀个⽰例LISTENER = #监听器名称(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)))(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))))(DESCRIPTION =(PROTOCOL_STACK =(divSENTATION = GIOP)(SESSION = RAW))(ADDRESS =(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 2481))))SID_LIST_LISTENER = #命名规则 SID_LIST_+上⾯定义的监听器名称(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc1)(ORACLE_HOME = /u01/app/oracle/product/8.1.7)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = cams)(ORACLE_HOME = /u01/app/oracle/product/8.1.7)(SID_NAME = cams))(SID_DESC =(GLOBAL_DBNAME = oid)(ORACLE_HOME = /u01/app/oracle/product/8.1.7)(SID_NAME = oid)))& 说明1 listener.ora ⽂件中定义⼀个监听器其缺省的名称为 LISTENER这个监听器缺省以tcp/ip为协议地址且端⼝号为1521运⾏在CAMS应⽤中监听⽂件定义的监听器就使⽤这个缺省名字并且使⽤缺省的协议 tcp/ip和缺省的端⼝号 1521 待配置好监听⽂件以及随后说明的 sqlnet.ora 和tnsnames.ora ⽂件之后就可以⽤以下命令将监听⽂件中定义的监听器启动起来$ lsnrctl start停⽌监听器的命令为$ lsnrctl stop监测监听器当前状态的命令为$ lsnrctl status当 lsnrctl status 命令有如下输出结果STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 8.1.7.4.0 - Production Start Date 17-JAN-2004 19:00:08Uptime 31 days 15 hr. 27 min. 59 sec就说明监听器正在运⾏否则说明监听器已经停⽌了 CAMS 系统的后台程序的正常运⾏不仅依赖于数据库实例的运⾏还依赖于这个数据库监听器的运⾏假如监听器没有启动即使数据库已经启动 CAMS 后台程序仍然不能正常⼯作2 如(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))所⽰的⼀个IPC 协议地址的监听是为了外部进程调⽤⽤的在数据库安装时⾃动设定不需要改动3 在监听⽂件后部还有⼀个 SID_LIST_LISTENER 段该段⽤于定义监听器的服务即为哪些数据库实例提供监听服务以 cams 实例为例其对应的服务信息为(SID_DESC =(GLOBAL_DBNAME = cams) #数据库名(ORACLE_HOME = /u01/app/oracle/product/8.1.7)(SID_NAME = cams) #数据库实例名)1.2.5 sqlnet.ora ⽂件sqlnet.ora ⽂件的存放路径为 $ORACLE_HOME/network/admin 以下是⼀个⽰例NAMES.DEFAULT_DOMAIN = localdomainNAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)& 说明NAMES.DEFAULT_DOMAIN 指定⽹络域名 NAMES.DIRECTORY_PATH指定当解析客户端连接标识符时命名⽅法 naming metthods 采⽤的优先顺序从左⾄右递减在 CAMS 应⽤中这两个参数采⽤上述所⽰的系统缺省值1.2.6 tnsnames.ora ⽂件tnsnames.ora ⽂件的存放路径为 $ORACLE_HOME/network/admin 以下是⼀个⽰例OID.LOCALDOMAIN =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = oid)))CAMS.LOCALDOMAIN =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = cams)))INST1_HTTP.LOCALDOMAIN =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)))(CONNECT_DATA =(SERVER = SHARED)(SERVICE_NAME = MODOSE)(divSENTATION = http://admin)))EXTPROC_CONNECTION_DATA.LOCALDOMAIN =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)))(CONNECT_DATA =(SID = PLSExtProc1)(divSENTATION = RO)))& 说明tnsnames.ora ⽂件中定义⼀个或多个⽹络服务 net service cams 实例对应的⽹络服务为CAMS.LOCALDOMAIN =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = cams)))注意这⾥ ADDRESS项包含三个⼦参数PROTOCOL :默认协议TCPHOST :ip地址PORT:端⼝,默认1521CAMS.LOCALDOMAIN为数据名要确保在监听⽂件中也有对应的⼀个 ADDRESS 项也包含同样的三个⼦参数并且⼦参数的值对应都相等另外这⾥ SERVICE_NAME 的值必需确保与监听⽂件中某 SID_DESC项下的 SID_NAME参数的值相等3333333333333333333333333333oracle⽹络配置三个配置⽂件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin⽬录下。

oracle10g和oracle11g双库监听及TNS配置

oracle10g和oracle11g双库监听及TNS配置

oracle10g和oracle11g双库监听及TNS配置oracle10g和oracle11g一机双库的监听程序配置及TNSnames 文件配置操作系统win7闲来无事在win7上安装先后安装了oracle10g和oracle11gOracle10g下有sqlplusw工具,而oracle11g下面没有该工具,只有sqlpuls工具。

问题出现了:使用oracle10g的sqlplusw工具连接11g的数据库Conn sys/sa@orcl11g as sysdba执行该命令后总是报错ORA-12514:监听程序无法识别连接描述符中请求的服务。

Conn sys/sa@hptest as sysdba一切正常使用oracle11g的sqlplus工具连接两个数据库均正常。

删除oracle10g的监听程序并重建后,问题依旧。

重新配置oracle10g的TNS命名,问题依旧。

奇怪的使用oracle10g的tnsping工具能够ping通orcl11g。

百思不得其解的情况下仔细看一下tnsnames文件。

发现监听的端口号不一样。

Oracle10g的监听端口是1521 oracle11g的监听端口是1522。

原因找到了:安装oracle11g的时候由于本机上已经存在了oracle10g的监听程序占用了1521端口。

11g的监听程序端口就自动变成了1522。

使用11g的oracle工具配置tnsnames的时候,其它服务默认是1521端口。

11g服务默认1522端口。

所以11g的工具sqlplus连接两个服务器都正常。

使用10g的oracle工具配置tnsnames的时候,所有的服务它都认为是1521端口。

这就解释了能够ping通,确连接不上的原因,端口不对嘛~~~!找到10g的tnsnames配置,把到11g的端口改为1522问题解决。

惯性思维导致解决问题花了一定的时间,总是认为oracle监听的端口是1521,其实不然。

讲解Oracle数据库TNS常见错误的解决方法

讲解Oracle数据库TNS常见错误的解决方法

讲解Oracle数据库TNS常见错误的解决方法育龙网WWW.CHINA-B.C0M 2009年08月13日来源:互联网育龙网核心提示: 1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraHome10gTNSListener即可;1、ORA-12541:TNS:没有监听器因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraHome10gTNSListener即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可2、ORA-12500:TNS:监听程序无法启动专用进程或ORA-12560:TNS:协议适配器错误因:ORACLE的服务没有启动。

使用命令net start ORACLESERVICEORADB即可。

如果仍没有解决,请继续向下看。

3、如果数据库服务启动失败,则很有可能是其项值损坏,最好的做法是以下两步:1)ORADIM -DELETE -SID oradb 删除数据库服务项2)ORADIM -NEW -SID oradb 新增数据库服务项注:这个过程中如果出错,就重启计算机!4、ORA-12154:TNS:能解析服务名因:ORACLE的网络服务名没有正确配置。

请使用“Net8 Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。

如果仍没有解决,请继续向下看。

5、ORA-1034 :TNS:ORACLE不可用因:ORACLE的数据库服务正确启动,但是数据库没有打开!使用命令:1)svrmgrl 启动服务管理器2)connect internal 以internal身份登陆3)startup 打开数据库6、ORA-12560:TNS:协议适配器错误因:未知。

解决:必杀技打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!PS:1、ora_startup.bat:net start OracleOraHome81TNSListenernet start ORACLESERVICEORADBsvrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。

Oracle连接错误故障排除讲解

Oracle连接错误故障排除讲解

Oracle 连接错误故障排除产品:Tableau Desktop, Tableau Server版本:All上次修改日期:24 Aug 2015Oracle 驱动程序需要具有唯一格式的特定连接语句。

然而,可能并不总是需要TNSNames.ora 文件。

例如,如果仅安装了 Tableau 提供的 Oracle 文件,且不具有独立的 Oracle 客户端。

Oracle 错误消息涉及 TNSNames.ora 文件。

通常,纠正“高级 Oracle 连接”对话框中的路由或命名语法,或者使用 .WORLD 数据库全名,即可解决大部分 Oracle 连接问题。

如果连接错误需要进一步进行故障排除,请参阅下面列出的 4 种常见连接错误。

•ORA-03113:通信信道上的文件结尾•ORA-12154:TNS:无法解决指定的连接标识符 HOST 值不正确或者全局名称不正确或未知的问题•ORA-12514:TNS 侦听器当前无法识别连接描述符中请求的服务SERVICE 值不正确•ORA-12541:TNS:无侦听器PORT 值不正确•ORA-00932:数据类型不一致ORA-03113:通信信道上的文件结尾ORA-03113 是任何干扰 Oracle 会话的问题的全捕获类型错误。

造成该错误的原因可能有很多。

请参阅下表,了解故障排除指南。

•请参阅特定于此错误的 Oracle 文档:我的 Oracle 支持。

o请参阅 Oracle 的 B 常见错误故障排除页面。

•Oracle 建议您检查网络问题并审查 SQL*Net 设置。

•如果连接到 Oracle 9.2.0.5,则在很多情况下,造成此错误的主要原因是 Oracle 错误 3010227。

请要求 Oracle 数据库管理员应用 Oracle修补程序 9.2.0.6 或适合您服务器的另一个修补程序。

•将 Oracle 初始化参数“STAR_TRANSFORMATION_ENABLED”设置为FALSE。

Oracle的常见错误及解决办法

Oracle的常见错误及解决办法

Oracle的常见错误及解决办法ORA-12528:TNS:listener: all appropriate instances are blocking new connectionsORA-12528问题是因为监听中的服务使⽤了动态服务,实例虽然启动,但没有注册到监听。

实例是通过PMON进程注册到监听上的,⽽PMON进程需要在MOUNT状态下才会启动。

所以造成了上⾯的错误。

解决这个问题,有三种⽅法:1、把监听设置为静态;2、在tnsnames.ora中追加(UR=A);3、重新启动服务;⽅法1、通过修改listener.ora的参数,把listener.ora动态注册设置为静态注册,然后重新启动监听# listener.ora Network Configuration File: $ORACLE_HOME\network\admin\listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = [DBNAME])(ORACLE_HOME = [$ORACLE_HOME])(SID_NAME = [SID])))静态注册的风险:如果在instance运⾏中,lisener重新启动,就找不到instance了。

静态注册需要先启动lisener,再启动instance。

且静态模式下,lisener status显⽰的是unknown⽅法2、启动到nomount状态,通过修改tnsnames.ora的参数# tnsnames.ora Network Configuration File: $ORACLE_HOME\network\admin\tnsnames.ora# Generated by Oracle configuration tools.SYK =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = SYK)(UR=A)))然后连接上数据库SQL>alter database mount;SQL>alter database open;⽅法3、重启ORACLE或者重启ORACLE服务在oracle帐户下依序执⾏如下命令:sqlplus / as sysdba;//在其它帐户(如root)下执⾏可能会报错(ORA-01031)因为这些帐户没有在dba组中shutdown immediate;startup;oracle实例名: error while loading shared libraries: libskgxp10.so: cannot open shared object file: No such file or directory是环境变量LD_LIBRARY_PATH的问题。

MySQL常见错误和故障排除方法

MySQL常见错误和故障排除方法

MySQL常见错误和故障排除方法作为一种广泛应用的关系型数据库管理系统,MySQL常常用于存储和管理大量数据。

然而,由于各种原因,我们可能会遇到一些常见的错误和故障。

本文将介绍MySQL常见错误和故障的排除方法,帮助读者更好地理解和处理这些问题。

一、连接错误在使用MySQL时,我们常常需要建立与数据库的连接。

连接错误可能会导致无法访问数据库或者无法进行正常的查询和操作。

以下是一些常见的连接错误及其解决方法:1. 认证错误:当我们在连接MySQL时,可能会收到“Access denied”或“Authentication failed”等错误信息。

这通常是由于用户名或密码不正确导致的。

解决方法是检查用户名和密码是否正确,并确保有足够的权限来访问数据库。

2. 连接超时:当连接MySQL的时间超过了预设的超时时间时,可能会出现“Connection timeout”错误。

这通常是由于网络连接问题或者数据库负载过高导致的。

解决方法是检查网络连接是否正常,并尝试重新连接。

3. 连接被拒绝:当MySQL服务器拒绝我们的连接请求时,可能会出现“Connection refused”错误。

这可能是由于MySQL服务器未启动或者服务器配置错误导致的。

解决方法是确保MySQL服务器已经启动,并检查服务器的配置是否正确。

二、查询错误在操作MySQL数据库时,我们常常需要执行各种查询语句。

然而,由于语法错误或者其他原因,可能会出现查询错误。

以下是一些常见的查询错误及其解决方法:1. 语法错误:当我们输入的查询语句有语法错误时,MySQL会返回“Syntax error”错误。

解决方法是仔细检查查询语句的语法,并确保每个关键字和符号都正确使用。

2. 表不存在:当我们尝试查询一个不存在的表时,MySQL会返回“Table not found”错误。

解决方法是检查表名是否正确,并确保数据库中存在该表。

3. 字段不存在:当我们尝试查询一个不存在的字段时,MySQL会返回“Column not found”错误。

cmd路径包含空格无法执行

cmd路径包含空格无法执行

cmd路径包含空格无法执行
标题,CMD路径包含空格无法执行的解决方法。

在日常使用Windows操作系统的过程中,我们经常会遇到在命
令提示符(CMD)中执行命令时,路径包含空格导致无法执行的问题。

这种情况通常会给我们带来一些困扰,但幸运的是,我们可以通过
一些简单的方法来解决这个问题。

首先,让我们来了解一下为什么路径包含空格会导致CMD无法
执行的问题。

在Windows系统中,路径中的空格会被解释为命令的
参数分隔符,这就导致了CMD无法正确识别路径中的空格,从而无
法执行命令。

为了解决这个问题,我们可以采取以下几种方法:
1. 使用引号包裹路径,当路径中包含空格时,我们可以使用双
引号将整个路径包裹起来,这样CMD就能正确识别路径中的空格,
从而执行命令。

2. 使用短文件名,在CMD中,我们可以使用“dir /x”命令来
查看路径的短文件名,然后可以使用短文件名来代替包含空格的长
文件名,这样就可以避免路径无法执行的问题。

3. 使用“~”符号代替空格,在CMD中,我们可以使用“~”符
号来代替空格,例如将“Program Files”路径表示为“Progra~1”,这样就可以避免路径无法执行的问题。

通过以上方法,我们可以轻松解决路径包含空格无法执行的问题,从而更加方便地在CMD中执行命令。

希望以上方法能够帮助到
大家,让我们在使用Windows系统时更加顺利地进行操作。

oracle xtts迁移防坑知识点

oracle xtts迁移防坑知识点

防坑点四 nfs 不要挂一级目录。 like this:
正确挂载方式:
原因是 AIX 上如果断开的 NFS 挂载点会导致 Oracle instance hang 住。 防坑点五 最后一次增量之前确认生产有无新增数据文件,如果没有跟甲方 dba 充分沟通, 在迁移过程中甲方 DBA 可能会在不告知你的情况下增加数据文件,所以最后一 次增量之前,一定要确认是否有新增数据文件,如果有新增文件,那么就要手工 convert 新增数据文件。
防坑点七 并行数 前面说过打开块跟踪可以提升增量备份速度,加上并行那是如虎添翼。但是这里 要注意一点,增量备份的时候生产还在使用中,如果生产 I/O 性能差的话会直接 影响业务。故还得结合实际硬件资源合理调整并行数量。
参考文档:
✦ Database Will Not Mount: ORA-15025, ORA-27041, 'Permission denied', ORA-15081 (Doc ID 1378747.1)
格式二:
格式三:
你们认为哪种格式是正确的? 无论写成什么样子,他只认第一行的表空间名字,所以在编辑的时候一定要写成 一行,也不要有任何空格。如果书写错了在做增量备份恢复的时候是不会报任何 错误的,因为对于相关表空间来说,他确实增量成功了,但是在最后元数据导入 的时候就会报数据文件不一致,所以最简单的方法是去检查 xttsnewdatafiles.txt 里面的表空间数量是否与生产查询出来的一致。 防坑点二 xtts 发明的目的就是为了加快迁移速度,这里很重要的一个点就是打开块跟踪。 打开块跟踪可以大大缩短执行增量备份时间。alter database enable block change tracking using file '/rman/trace.log';但是迁移结束后记得要关闭块 跟踪。alter database disable block change tracking; 防坑点三 生产是裸设备,如果 rman copy 时候,数据文件加了“.dbf”那么,在增量恢复的 时候需要编辑 xttnewdatafiles.txt,否则恢复的时候会提示找不到数据文件。文件 系统忽略此步骤,解决方法如下:

防不胜防:一个空格在数据库里可能引发的N重血案

防不胜防:一个空格在数据库里可能引发的N重血案

防不胜防:一个空格在数据库里可能引发的N重血案你可能还记得我们分享过的一个真实案例:一个空格引发的血案。

今天我们来看另外一个和空格有关的案例,基于11.2.0.3版本的测试:这是一个 11.2.0.3 的 sqlplus 客户端,那么以下这个简单的查询结果是什么?好,我承认是在故弄玄虚,结果就是简单到不能再简单的1,那么问题来了,上面第二个查询的结果是什么?不要扔砖,虽然结果还是意料之内的,但是见证奇迹的时刻马上就要到了,这第三个查询的结果是什么?这个结果是不是很2 ?这个语句和上面第二个语句只是相差了一个空格,结果是完全不同的。

对于第二个语句而言,注释并没有对语句产生任何的影响;而对于第三个语句,实际上 Oracle 并没有把这个语句作为包含注释的语句看待,实际上 sqlplus 运行的是/,也就是将缓存中的语句再运行一次,而完全忽略了/之后的内容。

可能有些人认为这个 bug 对于系统的影响不大,而如果在数据库中运行 .sql 文件,或者通过 shell 调用 sql 脚本,那么这个问题出现的可能性就大大增加了。

考虑一下极端的情况,这个问题可能带来哪些危害。

最明显的莫过于使得上一个运行的 SQL 重复执行。

如果上一条是 SELECT,则显然对系统影响最小(事实上这个影响也不小,因为当前需要执行的SQL 被跳过了,这可能影响这个 SQL 脚本的逻辑),而如果是 DELETE 语句,如上所示,那么表中数据就会被多删除一次。

也许有人会说,删除也无所谓,可以进行回滚,并没有数据的损失。

事实上,对于 SHELL 脚本方式或者编写好的 SQL 脚本而言,是没有办法对其进行控制的。

即使不在脚本中运行,有些情况下也是没有机会回滚的,比如:这种想要恢复就只能通过闪回了。

而如果重复执行的是 DDL,那么连闪回的机会都没有了。

重复 DDL 的一个例子:虽然并不会真正造成什么数据的损失,但是数据的加载以及分区 EXCHANGE 的工作就完全白做了。

解决oracle数据库tnsping xxxx时的错误

解决oracle数据库tnsping xxxx时的错误

解决oracle数据库tnsping xxxx时的错误安装Oracle完毕后,使用tnsping xxxx(xxxx时数据库安装时所创建的,默认为orcl)测试服务时,会出现:1. C:\Documents and Settings\abc>tnsping orcl2.3. TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Product4. 2011 10:39:115.6. Copyright (c) 1997, 2007, Oracle. All rights reserved.7.8. 已使用的参数文件:9. c:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora10.11. TNS-03505: 无法解析名称解决问题:首先查看环境变量的配置:path和ORACLE_HOME的配置,path路径一般配置好的,ORACLE_HOME如果没有需要自己配置。

然后在C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 找到TNSNAMES.ORA文件,如果没有,请在C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\SAMPLE目录下面拷贝一个TNSNAMES.ORA文件,然后用记事本打开,修改内容为1. ORCL =2. (DESCRIPTION =3. (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))4. (CONNECT_DATA =5. (SERVER = DEDICATED)6. (SERVICE_NAME = orcl)7. )8. )9.10. EXTPROC_CONNECTION_DATA =11. (DESCRIPTION =12. (ADDRESS_LIST =13. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))14. )15. (CONNECT_DATA =16. (SID = PLSExtProc)17. (PRESENTATION = RO)18. )19. )就是需要修改第三行的host地址,配置为ip地址。

tnsnames.ora配置小结

tnsnames.ora配置小结

tnsnames.ora配置小结2011-06-16 11:01:56| 分类:数据库| 标签:tnsnames.ora |字号大中小订阅listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,其中listener.ora是和数据库服务器端相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。

检查客户端oracle网络的时候可以先检查sqlnet.ora文件:# SQLNET.ORA Network Configuration File: $ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora# Generated by Oracle configuration tools.SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)##NAMES.DEFAULT_DOMAIN = 上面的sqlnet.ora文件说明:SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus “/ as sysdba”。

一般这个配置在windows上是ok的,在unix环境下可能会有问题,一般在unix下可以去掉这个配置。

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)——表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname解析;如果hostname解析不到,将采用onames进行解析。

被注释掉的NAMES.DEFAULT_DOMAIN = ——表示采用默认的domain name为,在tnsnames.ora中如果配置对应的解析,如果原来的别名oralocal,那么,当启用这个参数后,在tnsnames中的配置要改成。

oracle配置常见问题记录

oracle配置常见问题记录

3、提示tns无法解析描述的话lisener.ora中需要加
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
)
4、windows环境变量中要配置以下变量
1、无法配置配置文件,或无法启动tns服务 lisener.ora!
2、如果是使用命令shutdown关闭了数据库的话。链接时会报以下错误
ORA-01034: ORACLE not available
Process ID: 0
TNS_ADMIN:tnsnames.ora所在目录
Oracle_Home:oracle所在目录
Path:Oracle_Home下的bin目录路径
NLS_LANG:AMERICAN_AMERICA.UTF8
5,当账户提示所用应急使用:
---解锁语句用:
alter user 用户名 account unlock;
---修改口令语句用:
alter user 用户名 identified by 密码;
6、客户机分发报错在监听文件加入下面内容
DIRECT_HANDOFF_TTC_LISTENER = OFF
Session ID: 0 Serial number: 0
解决办法:
使用:sqlplus 用户名/密码@数据库实例名 as sysdba
进入后使用startup命令开启!
开启时时如果报错还需要在tnsnames.ora
添加
LISTENER_ORCL =

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案随着Oracle数据库的使用,难免会遇到一些错误代码。

本文将介绍一些常见的Oracle错误代码以及解决方案。

这个错误通常是由于输入的用户名或密码不正确造成的。

解决办法是验证用户名和密码是否正确,并确保数据库实例启动。

这个错误通常是由于在SQL查询中引用了一个不存在的列或表名造成的。

解决办法是检查查询中的列名或表名是否正确,如果需要,可以使用引号将其括起来。

这个错误通常是由于连接描述符无法被解析造成的。

解决办法是检查tnsnames.ora文件中的连接描述符是否正确,并确保listener服务正在运行。

这个错误通常是由于在数值比较中使用了无效的字符造成的。

解决办法是检查数据类型是否正确,并确保传入的值是有效的数字。

这个错误通常是由于SQL语句缺少了必要的结束符号造成的。

解决办法是确保每条SQL语句以分号结尾,并检查语法是否正确。

这个错误通常是由于插入或更新操作违反了表的完整性约束条件造成的。

解决办法是确保插入或更新的值符合表的约束条件,并确保触发器、外键等相关对象正确配置。

这个错误通常是由于在更新语句的THEN子句中没有包含所有列造成的。

解决办法是确保更新语句中的THEN子句包含所有需要更新的列。

这个错误通常是由于在SQL语句中缺少需要的表达式造成的。

解决办法是确保SQL语句中的所有操作数都是有效的,并检查语法是否正确。

这个错误通常是由于插入或更新操作违反了UNIQUE约束条件造成的。

解决办法是确保插入或更新的值不会违反UNIQUE约束条件,并确保索引、触发器等相关对象正确配置。

这个错误通常是由于读取的数据已被其他会话修改或删除造成的。

解决办法是增加undo表空间的大小,或调整事务隔离级别以减少读取之间的时间差。

总结:本文介绍了一些常见的Oracle错误代码以及解决方案,包括无效的用户名/密码、无效的标识符、无法解析指定的连接标识符、无效数字、SQL命令未正确结束、违反完整性约束条件、缺失表达式、UNIQUE约束条件违背和快照过旧等。

cmd路径包含空格无法执行

cmd路径包含空格无法执行

cmd路径包含空格无法执行
当我们在使用命令行界面(CMD)时,有时会遇到路径包含空格
无法执行的问题。

这个问题通常出现在我们想要执行某个程序或者
命令时,路径中包含了空格。

在这种情况下,CMD可能会出现错误,无法正确识别路径中的空格,导致命令无法执行。

这个问题的解决方法有很多种,其中一种常见的方法是使用双
引号将包含空格的路径括起来。

比如,如果我们要执行一个路径为"C:\Program Files\MyProgram\program.exe" 的程序,由于路径中
包含了空格,我们可以这样来执行:
cmd.
"C:\Program Files\MyProgram\program.exe"
这样做可以让CMD正确识别路径中的空格,从而成功执行命令。

另外,还有一种方法是使用短文件名(short file name),这
是Windows系统提供的一种用于解决路径中包含空格的问题的方法。

每个文件或文件夹都有一个对应的短文件名,可以通过命令 `dir
/x` 来查看。

使用短文件名的路径是不包含空格的,因此可以避免CMD无法执行的问题。

总的来说,路径包含空格无法执行是一个常见的问题,但我们可以通过合理的方法来解决。

无论是使用双引号括起路径,还是使用短文件名,都可以帮助我们顺利执行命令,避免因为路径中包含空格而导致的问题。

Oracle数据库mybatis 插入空值时报错问题

Oracle数据库mybatis 插入空值时报错问题

Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)的两种解决方案在使用Mybatis 3 时,发现了这个问题,当插入数据时,如果有一个字段为空值时,系统会报异常,导致插入数据失败。

异常信息类似:org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #6 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.经过查阅各种资料,终于找到了两种解决方案,分别如下,其中第二种方案个人比较喜欢。

第一种方式,如出错信息中提到的,需要在每个数据变量那里设置相应的jdbcType,示例如下(加粗加下划线部分的内容):1.<insert id=”insertCustomerLog1″parameterType=”com.diyicai.customer.domain.CustomerLog”>2. insert into customer_log3. (4. ID,5. CUSTOMER_SERVICE_USER_NAME,6. user_name ,7. CONTENT,8. LOG_FIRST_TYPE,9. STATUS,10. LINKED_ID,11. FEE,12. ACCOUNT_FIRST_TYPE,13. ACCOUNT_SECOND_TYPE,14. ACCOUNT_THIRD_TYPE,15. LOG_SECOND_TYPE,16. LOG_IP,17. MEMO18. )19. values20. (21. seq_customer_log.nextval ,22. #{customerServiceUserName,jdbcType=VARCHAR} ,23. #{username,jdbcType=VARCHAR},24. #{content,jdbcType=VARCHAR},25. #{logFirstType,jdbcType=NUMERIC},26. #{status,jdbcType=NUMERIC},27. #{linkedId,jdbcType=VARCHAR},28. #{fee,jdbcType=NUMERIC},29. #{accountFirstType,jdbcType=NUMERIC},30. #{accountSecondType,jdbcType=NUMERIC},31. #{accountThirdType,jdbcType=NUMERIC},32. #{logSecondType,jdbcType=NUMERIC},33. #{logIp,jdbcType=VARCHAR},34. #{memo,jdbcType=VARCHAR}35. )36. </insert>这种方案在网上有很多介绍,但是我不满意,因为太麻烦了,要增加很多代码,导致后期的维护困难增加。

TNSNAMES配置中空格导致的bug

TNSNAMES配置中空格导致的bug

发现一个很有趣的bug,TNSNAMES.ORA中缺少空格导致ORA-12154错误。

还是看一个具体的例子:TEST08 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = test08)))由于网页显示的时候,会自动吞掉所有的前导空格,下面将上面真正的配置中的前导空格用下划线来代替:TEST08 =__(DESCRIPTION =____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))____(CONNECT_DATA =______(SERVER = DEDICATED)______(SERVICE_NAME = test08)____)__)这是一个普通到不能再普通的TNS配置了。

下面通过这个配置来连接数据库:SQL*Plus: Release 10.2.0.1.0 - Production on 星期一7月13 21:02:36 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> conn test/test@test08已连接。

显然可以连接到目标数据库。

下面将配置里面的前导空格完全删除:TEST08 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = test08)))这次没有必要用下划线替换前导空格了,因为二者的格式完全一样。

Oracle数据库TNS常见错误解决方法--JavaEye技术网站

Oracle数据库TNS常见错误解决方法--JavaEye技术网站

Oracle数据库TNS常见错误解决方法--JavaEye技术网站Oracle数据库TNS常见错误解决方法1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraHome10gTNSListener(名字可能有出入)即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。

在添加之前可能需要把所有的监听器先删!)2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误原因:ORACLE的数据库服务没有启动。

使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。

如果仍没有解决,请继续向下看。

3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:1)ORADIM -DELETE -SID oradb 删除数据库服务项2)ORADIM -NEW -SID oradb 新增数据库服务项注:这个过程中如果出错,就重启计算机!4、ORA-12154:TNS:能解析服务名原因:ORACLE的网络服务名没有正确配置。

请使用“Net8Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。

如果仍没有解决,请继续向下看。

5、ORA-1034 :TNS:ORACLE不可用原因:ORACLE的数据库服务正确启动,但是数据库没有打开!使用命令:1)svrmgrl 启动服务管理器2)connect internal 以internal身份登陆3)startup 打开数据库6、ORA-12560:TNS:协议适配器错误(顽固性的)原因:未知。

解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe 及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!PS:1、ora_startup.bat:net start OracleOraHome81TNSListenernet start ORACLESERVICEORADBsvrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

发现一个很有趣的bug,TNSNAMES.ORA中缺少空格导致ORA-12154错误。

还是看一个具体的例子:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
由于网页显示的时候,会自动吞掉所有的前导空格,下面将上面真正的配置中的前导空格用下划线来代替:
TEST08 =
__(DESCRIPTION =
____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
____(CONNECT_DATA =
______(SERVER = DEDICATED)
______(SERVICE_NAME = test08)
____)
__)
这是一个普通到不能再普通的TNS配置了。

下面通过这个配置来连接数据库:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一7月13 21:02:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn test/test@test08已连接。

显然可以连接到目标数据库。

下面将配置里面的前导空格完全删除:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
这次没有必要用下划线替换前导空格了,因为二者的格式完全一样。

再次连接数据库:
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
警告: 您不再连接到ORACLE。

很奇怪,只是删除了一些无关紧要的空格,就导致了TNSNAMES解析错误。

于是逐渐的还原空格,寻找到底是哪里的空格被删除后,导致了这个错误的产生:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
最终发现其他的空格都无所谓,只是SERVICE_NAME下一行的前导空格会影响TNSNAMES 的解析。

替换下划线的版本为:
TEST08 =
__(DESCRIPTION =
____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
____(CONNECT_DATA =
______(SERVER = DEDICATED)
______(SERVICE_NAME = test08)
)
__)
这时连接就会报错:
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
而只要在这一行前面加上一个空格,或者删除掉SERVICE_NAME这一行的回车换行符,使得这个括号回到SERVICE_NAME的同一行,都可以顺利的连接到目标数据库。

使用TNSPING命令监测,发现这种情况下,TNSNAME在解析的时候丢失了最后两个右括号信息,造成ORA-12533错误:
E:>tnsping test08
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-7月-
2009 21:27:10
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:
E:ORACLEORACLE1020networkadminsqlnet.ora
已使用TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.1
3.229)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test08
)
TNS-12533: TNS: 非法的ADDRESS 参数
而正常的TNSNAMES解析如下:
E:>tnsping test08
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-7月-
2009 21:29:00
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:
E:ORACLEORACLE1020networkadminsqlnet.ora
已使用TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.1
3.229)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test08 )))
OK (270 毫秒)
上面的测试是在10.2.0.1的windows版本上进行的。

在9i上测试发现同样的问题,不过错误信息略有区别:
SQL*Plus: Release 9.2.0.4.0 - Production on 星期一7月13 21:32:34 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法处理服务名
最后看看11g的情况:
E:>sqlplus /nolog
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一7月13 21:36:38 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
11g中的错误和10g一致,不知道是否Oracle根本没有发现这个问题。

这么简单的错误居然在3个大版本中都存在。

相关文档
最新文档