dns报错 jdbc连oracle_系统dns配置oracle 的驱动报错 193 - CSDN
精华内容
参与话题
  • ... 该文是我连接oracle的总结,特别适合于程序开发人员与oracle菜鸟... 要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是java连接数据库的时候,可以用jdbc thin...
    转自:http://www.*****.org/viewthread.php?tid=15661

    该文是我连接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将侦听端口固定为1433,不允许你随便改动,这样给你一个错觉感觉sql server中没有侦听端口,咳,microsoft把太多的东西都封装到黑盒子里,方便使用的同时也带来的需要副作用。而oracle中的侦听端口直接在配置文件中,允许随便改动,只不过无论怎样改动,要与oracle服务器端设置的侦听端口一致。

    好,言归正传,我们如何做才能使客户端机器连接到oracle数据库呢?
    A. 安装相关软件
    B. 进行适当的配置

    A.在适当的位置安装适当的软件:
    在客户端机器:
    1.在客户端机器上安装ORACLE的Oracle Net通讯软件,它包含在oracle的客户端软件中。
    2.正确配置了sqlnet.ora文件:
    NAMES.DIRECTORY_PATH = (TNSNAMES, ….)
    NAMES.DEFAULT_DOMAIN=DB_DOMAIN
    一般情况下我们不用NAMES.DEFAULT_DOMAIN参数。如果想不用该参数用#注释掉或将该参数删除即可,对于NAMES.DIRECTORY_PATH参数采用缺省值即可,对于NAMES.DEFAULT_DOMAIN参数有时需要注释掉,在下面有详细解释。
    3.正确配置了tnsname.ora文件

    在服务器端机器:
    1.保证listener已经启动
    2.保证数据库已经启动。
    如果数据库没有启动,用:
    Oracle 9i:
    dos>sqlplus “/ as sysdba”
    sqlplus> startup
    Oracle 8i:
    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文件为例:
    该文件的位置为: …\network\admin\tnsnames.ora (for windows)
    …/network/admin/tnsnames.ora (for unix)
    此处,假设服务器名为testserver,服务名为orcl.testserver.com,使用的侦听端口为1521,则tnsnams.ora文件中的一个test网络服务名(数据库别名)为:
    test =
    (DESCRIPTION=
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
    )
    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
    )
    )
    此处的笑脸为)。
    红色的内容为需要根据实际情况修改的内容,现解释如下:
    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参数值为testserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:
    test.testserver.com =
    (DESCRIPTION=
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
    )
    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
    )
    )
    此处的笑脸为)。
    用sqlplus程序通过test.testserver.com网络服务名测试,如sqlplus system/manager@test.testserver.com。

    关于为什们在网络服务名后面加db_domain参数,需要了解sql*plus连接数据库的原理,我在后面解决12154常见故障中给出了详细的说明。

    如果上面的招数还不奏效的话,只好用一下乾坤大挪移了。
    将客户端的网络服务名部分
    test.testserver.com =
    (DESCRIPTION=
    (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
    )
    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
    )
    )
    此处的笑脸为)。
    拷贝到服务器的tnsnames.ora文件中。然后再服务器端用sqlplus system/manager@test.testserver.com连接到数据库。
    如果能连接成功,说明你的客户端与服务器端的网络有问题。
    如果连接不成功,用前面的部分检查网络服务名部分部分是否正确,如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题,建议重新安装数据库。

    常见故障解决办法:
    TNS-12154 (ORA-12154):TNS:could not resolve service name
    该错误表示用于连接的网络服务名在tnsnames.ora文件中不存在,如上面的tnsnames.ora中的网络服务名只有test,假如用户在连接时用sqlplus system/manager@test1则就会给出TNS-12154错误。
    要注意的是,有时即使在tnsnames.ora文件中有相应的网络服务名,可是用该网络服务名连接时还会出错,出现这种情况的典型配置如下(在客户端的机器上):
    sqlnet.ora文件:
    NAMES.DIRECTORY_PATH = (TNSNAMES, ….)
    NAMES.DEFAULT_DOMAIN = server.com
    tnsnames.ora文件:
    test =
    (DESCRIPTION=
    (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
    )
    (CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
    )
    )
    此处的笑脸为)。

    sql*plus运行基本机理:
    在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@test.server.com ,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如#NAMES.DEFAULT_DOMAIN = server.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。
    另外原则上tnsnames.ora中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与tnsnames.ora中配置的完全一样。

    ORA-12514: 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参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

    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:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。

    Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。


    抱歉,我写的有错误的地方:


    Code: [Copy to clipboard]
    如何利用配置的网络服务名连接到数据库:
    用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值,通过用sqlplus> show parameter db_domain命令察看。此处db_domain参数值为testserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:


    应该改为:
    如何利用配置的网络服务名连接到数据库:
    用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN参数的值,此处我的参数值为testserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:

    什么情况下会引起oracle自动设置NAMES.DEFAULT_DOMAIN参数?
    出现这种情况的典型环境为windows的客户端的‘我得电脑à属性à计算机名à更改à其它…à此计算机的主DNS后缀’中设置了‘primary dns suffix’,因为在这种情况下安装客户端时,会在sqlnet.ora文件中自动设置NAMES.DEFAULT_DOMAIN参数,或许当把计算机加入域中安装oracle客户端时也会出现这种情况,有条件的话大家可以试一下。

    我在设置oracle的客户端时一般手工修改tnsnames.ora文件,但是还有许多人喜欢用图形工具配置,该图形工具最终还是修改tnsnames.ora文件,但是它有时会引起其它的问题:
    在用oracle的图形配置软件'net assistant'或‘Net Configuration Assistant’配置网络服务名时,假如已经设置了‘primary dns suffix’,但是在图形配置软件中写的网络服务名的名字中没有‘primary dns suffix’,如只是写了test,则图形配置软件会自动在后面加上‘primary dns suffix’,使之变为test.testserver.com,并存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有NAMES.DEFAULT_DOMAIN参数。此时,用图形工具进行测试连接是通过的,但是假如此时sqlnet.ora文件中没有NAMES.DEFAULT_DOMAIN参数,则你在使用网络服务名时应该使用在tnsnames.ora中的test.testserver.com,而不是你在图形配置软件中键入的test。解决的办法为:
    <1>可以在sqlnet.ora文件中设置NAMES.DEFAULT_DOMAIN= testserver.com,这时你可以用test或test.testserver.com连接数据库
    <2>在sqlnet.ora文件中不设置NAMES.DEFAULT_DOMAIN参数,在tnsnames.ora文件中将test.testserver.com中的.testserver.com去掉,这时你可以用test连接数据库。
    展开全文
  • OID Provisioing Profile Trace File Reporting "Ora-12505, Tns:Listener Does Not Currently Know Of Sid Given In Connect Descriptor" (文档 ID 1448332.1) 转到底部 ...In th

    java应用连接oracle 11g R2 rac (用scanip连接报错) 

     ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was: 


       

    In this Document

    Symptoms
      Changes
      Cause
      Solution


    APPLIES TO:

    Oracle Internet Directory - Version 10.1.2 and later
    Information in this document applies to any platform.
    ***Checked for relevance on 13-Jan-2014***

    SYMPTOMS

    Provisioning profiles from Applications to OID reporting errors in the trace files with SCAN enabled.

    Example: (where MYHOST is the SCAN name)
    Using Service Name to connect - URL : jdbc:oracle:thin:@MYHOST:1521:ORCL,user : APPS
    Exception Connecting to DB :java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    MYHOST:1521:ORCL

    ODIException: 0:ODIException: Exception Connecting to DB :java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    MYHOST:1521:ORCL

    Exception connecting : java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    MYHOST:1521:ORCL

    ODI Exception while Initialising PLSQL Reader
    at oracle.ldap.odip.gsi.PLSQLReader.initialise(PLSQLReader.java:181)
    at oracle.ldap.odip.prov.ProvAppToOIDSync_2_0.initialise(ProvAppToOIDSync_2_0.java:128)
    at oracle.ldap.odip.engine.ProvThread.runOldVersion(ProvThread.java:548)
    at oracle.ldap.odip.engine.ProvThread.run(ProvThread.java:182)


    Testing the same connection using  a JDBC test the same error "ORA-12505, TNS:listener does not currently know of SID given in connect descriptor" is reported.

    However connections are successful outside of OID using sqlplus/tnsnames.ora with SCAN name

    CHANGES

    Changed provisioning profile orclodipprofileinterfaceconnectinformation to use a SCAN name
    rather than the physical or virtual name.
     

    CAUSE


    SCAN will ONLY work with the 11.2 version (Client or Database)
    If you want to use a process that uses the 11.1 or lower version of the Oracle client, you must connect using the VIP addresses (the normal method)

    SCAN is limited to only 11.2 because of certain parts of the code that have to negotiate DNS lookup.


    While the 10.2.x.x or 11.1.x.x JDBC driver can connect to an 11.2.0.1 database using a "traditional" connection, those versions do not support SCAN functionality

    SOLUTION


    You must connect using the VIP addresses (the normal method).  Scan is not supported with version 10g.


    可以通过更好应用的jdbc驱动来解决

    oracle 对应的JDBC驱动 版本

    Oracle  版本 jdk版本 推荐jar包 备注
    Oracle 8i JDK 1.1.x classes111.zip  
    Oracle 8i JDK 1.1.x classes12.zip  
    Oracle 9i JDK 1.1.x classes111.jar 或者 classes111.zip  
    Oracle 9i JDK 1.2 and JDK 1.3 classes12.jar 或者 classes12.zip  
    Oracle 9i JDK 1.4 ojdbc14.jar   
    Oracle 9i JDK 1.5 ojdbc5.jar  
    Oracle 9i JDK 1.6 ojdbc6.jar  
    Oracle 10g JDK 1.2 and JDK 1.3.   classes12.jar   
    Oracle 10g JDK 1.4 and 5.0 ojdbc14.jar    
    Oracle 11g jdk5 ojdbc5.jar  
    Oracle 11g jdk6 ojdbc6.jar

    如果一个jdbc的jar包你不知道是那个版本的,可以解压这个jar包,再META-INF\MANIFEST.MF 文件中找文件内容如下.

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.6.5
    Created-By: 1.5.0_51-b10 (Sun Microsystems Inc.)
    Implementation-Vendor: Oracle Corporation
    Implementation-Title: JDBC
    Implementation-Version: 11.2.0.4.0
    Repository-Id: JAVAVM_11.2.0.4.0_LINUX.X64_RELEASE
    Specification-Vendor: Sun Microsystems Inc.
    Specification-Title: JDBC
    Specification-Version: 4.0
    Main-Class: oracle.jdbc.OracleDriver
    sealed: true
    Name: oracle/sql/converter/
    Sealed: false
    Name: oracle/sql/
    Sealed: false
    Name: oracle/sql/converter_xcharset/
    Sealed: false
    Name: oracle/replay/driver/
    Sealed: false


    展开全文
  • informatica连接mysql数据库问题

    千次阅读 2017-09-15 11:31:26
    我安装的informatica 9.6.1,sever端是64位系统上,client端安装的是32位的系统上,上篇我们讲到配置Oracle数据源为32位的ODBC数据驱动,在配置mysql的数据源驱动,64位的不好使,它会默认安装到C:\Program Files\...

    我安装的informatica 9.6.1,sever端是64位系统上,client端安装的是32位的系统上,上篇我们讲到配置Oracle数据源为32位的ODBC数据驱动,在配置mysql的数据源驱动,64位的不好使,它会默认安装到C:\Program Files\MySQL\Connector ODBC 5.3,不过在informatica 数据源导入表,连接数据源时,报错找到不到C:\Program Files(x86)\MySQL\Connector ODBC 5.3\myodbc5a.dll,这个试了很多64位的版本都不好用,放弃了。改试用32位的mysql connector驱动,32位的默认安装路径是C:\Program Files(x86)\MySQL\Connector ODBC 5.3,感觉对头

    InformaticaMySQLinformatica安装了mysql驱动,在配置数据源时mysql数据库已经测试连通,然而在Designer中sources配置源端数据库连接时,DLL name entry missing...., using EXTODBC.DLL to support MySQL. for native support of mysql make an entry in the .ini file.

    但是如果上图中不输入口令,但是可以看到库里的表。
    但是在后面执行workflows时报错:
    老是提示连不上mysql数据库,找不到驱动。

    解决方案:
    在那个配置powrmart.ini文件在ODBCDLL添加一行
    MySQL = PMODBC.DLL
    在导入的时候也不需要制定owner。

    另外可以使用INFA pc自带的DataDirector驱动。Designer使用本地ODBC导入元数据,但是workflow需要使用server上的Connection进行数据的处理,两者的定义不是一个东东

    在那个配置powrmart.ini文件中原来没有mysql项,后来重做之后有了,不过此项为
    mysql=extodbc.dll

    安装驱动了,后来证明mysql在workflow里connection中需引用数据源的名称,且数据源应创建于系统DNS。

    至此,我已经成功连接到mysql数据库了,YES!!!


    展开全文
  • 然后在tomcat目录/conf/server.xml文件里相应的元素,添加如下子元素: 引用资源的JNDI名" auth="Container" type="javax.sql.... driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驱动)" url

    数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接(预加载),当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去

    我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。


    数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP)。数据库连接池到底是什么?它比jdbc数据库连接有什么优势呢?它又怎么使用呢?


              一,先看一下JDBC连接,每次用户访问数据库时,需要JDBC为我们创建数据库连接,我们使用,然后关闭。而当我们加断点测试,可以发现这个过程中创建数据库连接这个过程是比较费时间的,而不是我们在数据库中操作数据费时间。所以JDBC这种方式的效率大大折扣。而且如果过多的人同时并发来访问数据库,连接数量创建过多,会导致性能降低,更严重可能会导致数据库崩溃。而,数据库连接池就是来解决这两种问题的。

     

             二,数据库连接池是什么?

               顾名思义就是盛放多个数据库连接的一个池子!当我们访问数据库时我们直接从这个池子中拿连接对象即可,省去了初始化创建的过程,大大提高了效率。而且这个池子可以控制数据库连接的数量,我们里边可以至少放上几个,不够用了再进行创建,最多能够创建几个等等来控制连接的数量。它就是这么一个技术。准确一点说,连接池是一种缓存技术(cache,因为这个池子是在缓存中存放的。


              三,连接池的优势呢?

                其实就是解决了JDBC的劣势。提前准备好连接对象,提高了访问效率,控制连接数量,防止同时过多用户访问导致性能大大降低,数据库崩溃。


             四,DBCP怎么使用?

                编写数据库连接池是比较麻烦的,而且编写出来的效果如何另说。所以一般我们都使用现成的。各种服务器都为我们提供了,这里先看一下Tomcat服务器的数据库连接池如何使用。


              1,在tomcatcatalina_home/webapps/webapp/meta-inf/目录下新建context.xml文件,来编写DBCP,这是针对此应用程序的(当然也可以之间在tomcatcatalina_home/conf/context.xml中编写,这个这个是针对这个tomcat服务器的),编写内容如下:


    <span style="font-size:18px;">  <?xml version="1.0" encoding="GBK"?>  
        <!--这是数据连接池的配置文件,只有name可以自己定义 -->  
        <Context reloadable="true">  
            <Resource name="jdbc/ljh"   
                      auth="Container"   
                      type="javax.sql.DataSource"  
                      maxActive="100"   
                      maxIdle="30"   
                      maxWait="10000"   
                      username="ljh"   
                      password="ljh"  
                      driverClassName="oracle.jdbc.driver.OracleDriver"   
                      url="jdbc:oracle:thin:@192.168.1.27:1521:ljh"   
            />  
        </Context>  
    </span>  

    1. #数据库驱动  

    2. driverClassName=com.mysql.jdbc.Driver  

    3. #数据库连接地址  

    4. url=jdbc:mysql://localhost/test  

    5. #用户名  

    6. username=root  

    7. #密码  

    8. password=123456  

    9. #连接池的最大数据库连接数。设为0表示无限制  

    10. maxActive=30  

    11. #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连  

    12. #接将被标记为不可用,然后被释放。设为0表示无限制  

    13. maxIdle=10  

    14. #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制  

    15. maxWait=1000  

    16. #超过removeAbandonedTimeout时间后,是否进行没用连接(废弃)的回收(默认为false,调整为true)  

    17. removeAbandoned=true  

    18. #超过时间限制,回收没有用(废弃)的连接(默认为 300秒)  

    19. removeAbandonedTimeout=180  



     大家可以通过名字看出,这都是在设置dbcp的各个属性,例如,最大连接数,最小连接数,最长等待时间等等,设置好以后我们就可以使用了。


             那么怎么使用呢?这里就涉及到了JNDIJNDIJ2EE13个规范之一,也是非常重要的。这里我来先简单介绍一下JNDI

    • JNDIJava Naming and Directory Interface java命名和目录服务接口
    • 降低程序和程序之间的耦合性
    • 降低设备和设备的耦合性
    • Tomcat服务器实现了JNDI服务,启动Tomcat服务器,等同于启动JNDI服务器
    • JNDISUN制定的一套规范,这套规范可以和JDBC进行类比,JDBC也是一套规范,我们面向JDBC接口调用就可以获取数据库中的数据。同样,我们面向JNDI接口调用,可以获取“资源”,这个资源不是在底层数据库中。
    • JNDI提供了一种服务,这个服务可以将“名称”和“资源”进行绑定,然后程序员通过面向JNDI接口调用方法lookup可以查找到相关的资源。

     

             由于只是简单了解,要想了解更多关于JNDI的资料,请查看:JNDI是什么  JNDI简介  tomcat配置JNDI  

    jboss配置JNDI

    看我们怎么通过JNDI来获取连接池:

    <span style="font-size:18px;">   //获取JNDI的上下文对象Context  
            Context context = new InitialContext();  
            //根据名称和资源的绑定来获取数据源连接池,其中java:/com/env是tomcat实现JNDI的路径,后边是我们连接池名字  
                  DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/ljh");   
                     //get,获取一种的一个连接,当然下边的close就是返回一个连接给连接池,这里的连接池都对Connection中的方法进行重写,例如close,是返回给连接池,而不是关闭数据库连接。    
                  conn = ds.getConnection();  
    </span>  


    这样我们就可以使用连接对象了。

     

           综上为连接池DBCPJNDI的联合使用访问数据库。在实际开发中我们经常使用C3P0连接池,因为它开源的,而且和各种框架一起使用非常方便,效率也更高。不过原理跟上边的差不多,都是依赖JDBC规范和JNDI规范,来实现的,这里看一些它的资料吧!  C3P0英文文档   C3p0百科

     

              综上为数据库连接,顺便简单总结了一下JNDI。数据库连接在每个系统中都会使用,虽然可能就需要我们配置一次,编写一次,但是是非常重要的,因为数据的安全是非常重要的哈。所以还是需要我们好好掌握的。



    -------------------------------------------------------------------------------------------------------------------------------------------------------

      然后在tomcat目录/conf/server.xml文件里相应的<Context>元素,添加如下子元素:

    <Resource name="引用资源的JNDI名" 
              auth="Container" 
              type="javax.sql.DataSource"  
              driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驱动,数据库驱动)"  
              url="jdbc:pointbase:server://localhost/acme(数据库连接url)"  
              username="root(用户名)" 
              password="root(密码)" 
              maxActive="20(连接池dbcp的相关配置,连接池的最大数据库连接数。设为0表示无限制         
              maxIdle="10"(最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用然后被释放。设为0表示无限制)                   
              maxWait="10000" (最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制)/>  
    



     然后再server.xml里修改:

    <Context path="/ACMEWeb" reloadable="true" docBase="E:\eclipseproject\ACMEWeb" workDir="E:\eclipseproject\ACMEWeb\work">  
             <Resource name="sunvsjay" auth="Container" type="javax.sql.DataSource" 
    driverClassName="com.pointbase.jdbc.jdbcUniversalDriver" 
    url="jdbc:pointbase:server://localhost/acme" username="root" password="root"
     maxActive="20" maxIdle="10" maxWait="10000"/>  
    </Context>  
    

    JNDI是J2EE中一个很重要的标准,通常我们是在EJB编程中用到,

    Tomcat4.0中提供了在JSP和Servelt中直接使用JNDI的方法,下面谈一下在Tomcat4.0中配置和使用JNDI的方法

    (以通过JNDI连接数据库为例)

    假设使用的数据库是mysql,实验例子在TOMCAT_HOME/webapps/DBTest目录中

    A.将mysql的JDBC连接库mm.mysql-2.0.9-bin.jar放入TOMCAT_HOME/common/lib中

    B.配置TOMCAT_HOME/conf/serer.xml文件在<Service>段中加入一个Context:

    <Context path="/DBTest" docBase="DBTest"  
    debug="5" reloadable="true" crossContext="true">  
    </Context>  




    需要注意的是JNDI NAME要在前面加上"java:comp/env/"

    package com.bluedot.jclg.util;
    import java.sql.Connection;
    import java.sql.SQLException;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    public class DBUtil {
     public  static Connection getConnection(){
      Connection conn=null;
      try {
       //初始化容器
       Context ctx=new InitialContext();
       //通过容器来查找容器中的数据源,注意,必须按照制定的目录java:comp/env,最后一个zyy随便写
       DataSource ds=(DataSource)ctx.lookup("java:comp/env/sunvsjay");
       //从数据源中获取一个空闲的连接
       conn=ds.getConnection();
      } catch (NamingException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      
      return conn;
     }
    }


    http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html


    借鉴,http://blog.csdn.net/cyxlzzs/article/details/7352837


    JDBC编程步骤:
    ----java与Oracle数据的连接(lomboz_eclipse环境下)
      1.在Oracle数据库安装文件夹中找到jdbc文件夹→lib文件夹→classesl2.jar
      2.lomboz_eclipse中导入此Jar包
        导入方法:
               建立一个项目,在项目名称上右键鼠标选择Build Path→Add External Archives→
               选择classesl2.jar进行导入

      3.新建一程序编写与Oracle连接的代码
        步骤如下:
                1.实例话驱动类
              class.forName("Oracle.jdbc.driver.OracleDriver");
                2.建立到数据库的连接
              Connection conn = DriverManager.getConnection("jdbc:oracle:thin:
                                @192.168.8.1:1521:yuewei","scott","tiger");
                3.将数据发送到数据库中
              Statement stm = conn.CreatStatement();
                4.执行语句(select语句)
              ResultSet rs = stm.executeQuery(select * from dept);
                5.显示语句
              rs.getString("deptno");

    import java.sql.*;
    
    public class TestJDBC {
    
     public static void main(String[] args) {
      ResultSet rs = null;
      Statement stmt = null;
      Connection conn = null;
      try {
       Class.forName("oracle.jdbc.driver.OracleDriver");
       //new oracle.jdbc.driver.OracleDriver();
       conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:yuewei", "scott", "tiger");
       stmt = conn.createStatement();
       rs = stmt.executeQuery("select * from dept");
       while(rs.next()) {
        System.out.println(rs.getString("deptno"));
        //System.out.println(rs.getInt("deptno"));
       }
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      } catch (SQLException e) {
       e.printStackTrace();
      } finally {
       try {
        if(rs != null) {
         rs.close();
         rs = null;
        }
        if(stmt != null) {
         stmt.close();
         stmt = null;
        }
        if(conn != null) {
         conn.close();
         conn = null;
        }
       } catch (SQLException e) {
        e.printStackTrace();
       }
      }
     }
    
    }



    元素名

    属性

    解释

    server

    port

    指定一个端口,这个端口负责监听关闭tomcat 的请求

    shutdown

    指定向端口发送的命令字符串

    service

    name

    指定service 的名字

    Connector ( 表示客户端和service之间的连接)

    port

    指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求

    minProcessors

    服务器启动时创建的处理请求的线程数

    maxProcessors

    最大可以创建的处理请求的线程数

    enableLookups

    如果为true ,则可以通过调用request.getRemoteHost() 进行DNS 查询来得到远程客户端的实际主机名,若为false 则不进行DNS 查询,而是返回其ip 地址

    redirectPort

    指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号

    acceptCount

    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    connectionTimeout

    指定超时的时间数( 以毫秒为单位)

    Engine ( 表示指定service 中的请求处理机,接收和处理来自Connector的请求)

    defaultHost

    指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是一样的

    Context ( 表示一个web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范)

    docBase

    应用程序的路径或者是WAR 文件存放的路径

    path

    表示此web 应用程序的url 的前缀,这样请求的url为http://localhost:8080/path/ ****

    reloadable

    这个属性非常重要,如果为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,我们可以在不重起tomcat 的情况下改变应用程序

    host ( 表示一个虚拟主机 )

    name

    指定主机名

    appBase

    应用程序基本目录,即存放应用程序的目录

    unpackWARs

    如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序

    Logger ( 表示日志,调试和错误信息)

    className

    指定logger 使用的类名,此类必须实现org.apache.catalina.Logger 接口

    prefix

    指定log 文件的前缀

    suffix

    指定log 文件的后缀

    timestamp

    如果为true ,则log 文件名中要加入时间,如下例:localhost_log.2001-10-04.txt

    Realm ( 表示存放用户名,密码及role 的数据库)

    className

    指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口

    Valve ( 功能与Logger 差不多,其prefix 和suffix 属性解释和Logger 中的一样)

    className

    指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类可以记录应用程序的访问信息

    directory

    指定log 文件存放的位置

    pattern

    有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多






    2. Tomcat处理一个HTTP请求的过程
    假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp
    1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
    2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
    3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
    4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
    5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
    6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
    7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
    8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
    9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
    10)Context把执行完了之后的HttpServletResponse对象返回给Host
    11)Host把HttpServletResponse对象返回给Engine
    12)Engine把HttpServletResponse对象返回给Connector
    13)Connector把HttpServletResponse对象返回给客户browser


    Tomcat下部署多个项目

    在service标签下面写一个service标签。复制上面service,再修改里面的端口号为8081。

    -------------------------------------------------------------------------------------------------------------------------

    同一服务器部署多个tomcat时,存在端口号冲突的问题,所以需要修改tomcat配置文件server.xml,以tomcat7为例。

    • 首先了解下tomcat的几个主要端口:

    <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="60000"  redirectPort="8443" disableUploadTimeout="false"  executor="tomcatThreadPool" URIEncoding="UTF-8"/>

    其中8080为HTTP端口,8443为HTTPS端口


    <Server port="8005" shutdown="SHUTDOWN">   

    8005为远程停服务端口


    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

    8009为AJP端口,APACHE能过AJP协议访问TOMCAT的8009端口。


    • 部署多个tomcat主要修改三个端口:


    1.HTTP端口,默认8080,如下改为8081
    [html] view plain copy
    1. <Connector port="8081" protocol="HTTP/1.1"   
    2.                connectionTimeout="60000"   
    3.                redirectPort="8443" disableUploadTimeout="false"  executor="tomcatThreadPool"  URIEncoding="UTF-8"/>  


    2.远程停服务端口,默认8005,如下改为8006

    [html] view plain copy
    1. <Server port="8006" shutdown="SHUTDOWN">......  


    3.AJP端口,默认8009,如下改,8010

    [html] view plain copy
    1. <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />  

    展开全文
  •  由于工作需要,需将oracle的数据导入到sqlserver2008,经同事推荐使用kettle工具。   2.kettle简介  kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。  kettle中有两种脚本...
  • webmagic采集CSDN的Java_WebDevelop页面

    万次阅读 2016-05-23 10:26:24
    使用webmagic采集博客类的网站示例
  • 并发管理器opp错误举例2

    千次阅读 2015-07-29 18:10:30
    报错日志:[6/25/14 12:44:43 PM] [main] Starting GSF service with concurrent process id = 521892.[6/25/14 12:44:43 PM] [main] Initialization Parameters: oracle.apps.fnd.cp.opp.OPPServiceThread:2:0:max_...
  • 用Powerdesigner 连接mysql 逆向工程时 报错 "在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014", 在网上查到的资料说是 安装的 mysql-connector-odbc-5.3.6-winx64.msi ,应该安装 ...
  • 1.环境:系统:Windows 2008R2vCenter版本:VMware vCenter Server 5.1.799731数据库:Oracle 11.2.02.故障描述:用VMware vSphere Client客户端无法登录,提示“出现未知连接错误。(由于连接故障,请求失败。无法...
  • 我在用笔记本进行远程连接数据库测试的过程中遇到的问题, 笔记本与连接主机上都安装了完整ORACLE数据库, 刚开始的时候是按照上面说的配置,看数据库,监听程序是否启动,我还将服务器端的监听程序删掉之后重新建...
  • Oracle 11g R2 RAC 增加节点详解(一)

    千次阅读 2017-05-23 08:46:28
    最近准备给我的RAC环境加个节点,看了下官网,表示写的很简单,也应该是比较简单 第一步当然是准备一台虚拟机,最好是host01的拷贝,在未安装前,安装完毕后 $ cluvfy stage -pre nodeadd -n node3 [-fixup [-...
  • 报错号 原因 参考 建议 Oracle ORA-609 The ORA-609 error is thrown when a client connection of any kind failed to complete or aborted the connection process...
  • 错误信息如下:## An unexpected error has been detected by Java Runtime Environment:## EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x61d32910, pid=8776, tid=5824## Java VM: Java HotSpot(TM) Client ...
  • OBIEE访问hive数据环境搭建

    千次阅读 2014-03-06 14:38:02
    OBIEE访问hive数据的环境搭建  OBIEE 11.1.1.7.x支持hive数据源,本人想测试下hive数据和...1、 OS环境:Oracle VMVirtualBox 4.3.8,Oracle Linux Server release 5.9。 2、 软件环境(按安装先后顺序列举): a
  • 问题描述:登陆oracle数据库时,无论是从SQL Plus还是从Toad登陆,都会出现登陆不上去的现象。出现提示“提示包接收失败:ORA-12637”。 ...   下面是转载的关于oracle网络配置listener.ora、sqlnet.ora、tnsname
  • JNDI和数据源

    千次阅读 2018-09-02 17:31:06
    JDBC和JNDI都是一种规范,是一组统一的API,里面包含了一组接口规范要求服务提供商来实现,包含了一组应用规范供编程人员使用,这样的好处是有利于编程人员可以用同一种方式来访问不同的数据库,使用同一种方式...
  • WebLogic JDBC & Transaction版精华帖整理

    千次阅读 2009-04-15 23:18:00
    所属产品:WebLogic Server所属技术:JDBC关键字:JDBC, 事务处理,连接池摘要:关于WebLogic JDBC的基本配置知识,连接池使用,事务处理,以及常见问题的解答。WebLogic JDBC & Transaction版精华帖整理崔飞飞 ...
  • 一、 安装前准备1. 2台或多台linux服务器 2. 每台服务器一个公用ip一个私有ip 3. 公有ip:其他主机访问 2台主机最好同一ip段 4.... Oracle安装包,grid安装包,相关插件安装包(已准备)。 7. ...
  • tnsnames.ora配置小结

    万次阅读 2010-07-11 00:09:00
    oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下。 1. sqlnet.ora—–作用类似于linux或者其他unix的nsswitch.conf文件,通过...
  • oracle 奇葩问题集合

    2014-11-09 01:54:50
    不得不说,oracle是一个很复杂但也是很奇怪的软件系统,几年一路下来,各种奇葩问题层出不穷,逐一记录。。。 sqlpus 1、不设置set define off 的话,包括@ & 等字符都会导致执行失败,或者可以通过char(10)等...
1 2 3 4 5 ... 20
收藏数 706
精华内容 282
关键字:

dns报错 jdbc连oracle