项目连接oracle数据库配置(连接oracle数据库需要安装客户端吗)

软件开发 65
本篇文章给大家谈谈项目连接oracle数据库配置,以及连接oracle数据库需要安装客户端吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 oracle 11g怎样配置才能连接远程数据库 1、$ORACLE_HOME/network/admin/tnsnames.ora文件是连接远程数据库的配置文件 2、例如 YOURDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =

本篇文章给大家谈谈项目连接oracle数据库配置,以及连接oracle数据库需要安装客户端吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

oracle 11g怎样配置才能连接远程数据库

1、$ORACLE_HOME/network/admin/tnsnames.ora文件是连接远程数据库的配置

文件

2、例如 YOURDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =

172.16.1.2)(PORT = 1521)) (CONNECT_DATA = (SERVER =

DEDICATED) (SERVICE_NAME = yourdb) ) )

3、使用 sqlplus /nolog

SQLconn system/123456@YOURDB

java eclipse 创建web project 项目 HTML 怎么连接oracle数据库

首先静态的html标签是无法直接调用java程序连接数据库的。

下面是实现的几种方法:

第一种方法:

将按钮放到form表单中,当按钮点击时提交表单(或者直接将input的type属性定义成submit),表单可以指向JSP或Servlet,在JSP或Servlet里调用java程序

第二种方法:

在按钮的onclick时间中添加js代码

self.location="url";其中url指向JSP或Servlet

第三种方法:

使用第三方的javascript包,dwr是一个不错的选择:

1、需要准备dwr的jar包,并将之放到lib目录下;

2、修改web.xml文件,添加DWRServlet的映射;

3、配置dwr,即在WEB-INF目录下,添加dwr.xml文件,让dwr知道在运行时给哪些JavaBean生成相应的javascript库;

4、将需要的脚本库引入到html页面中就可以通过dwr的API访问java类了。

第四种方法:

使用MVC框架更简单,以struts为例,可以仿照第一或第二种方法,将url替换成配置文件中配置的地址就能访问java程序了。

C#连接oracle数据库Add.config配置文件怎么写

C#连接Oracle数据库(查询数据)

using System;

using System.Collections.Generic;

using System.ComponentModel;

//这行和下一行都要先在引用中填加system.data.oracleclient

using System.Data.OracleClient;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

#region 从region到endregion是手工写的。别的都是系统自动生成的

//定义连接数据库的字符串

string constring = "data source=wzd;user=wzd;password=wzd;";

//进行连接

OracleConnection conn = new OracleConnection(constring);

try

{

conn.Open();//打开指定的连接

OracleCommand com = conn.CreateCommand();

//写好想执行的Sql语句

com.CommandText =

"select name from mytable where card_no='0000000002'";

OracleDataReader odr = com.ExecuteReader();

//读取数据,如果返回为false的话,就说明到记录集的尾部了

while (odr.Read())

{

//将读取到的值显示到定义的控件中。

this.lbl.Text = odr.GetOracleString(0).ToString();

}

odr.Close();//关闭reader.这是一定要写的

}

catch

{

MessageBox.Show("erro");//如果发生异常,则提示出错

}

finally

{

conn.Close();//关闭打开的连接

}

#endregion

}

}

}

C#中与Oracle连接的代码

注意:一定要添加这个:

项目-添加引用-.NET-System.Data.OracleClient.dll

using System;

using System.Data;

using System.Windows.Forms;

using System.Data.OracleClient;

namespace Test

{

/// summary

/// 简洁期间,直接将实现写在构造函数中

/// /summary

public class Test

{

public Test()

{

//

// TODO: 在此处添加构造函数逻辑

//

string ConnectionString =

"Data Source=LiPu; User Id=SCOTT; Password=scott";

//连接字符串,Data Source 是指数据库名字.如我用的是本机的Oracle

//的数据库,名字为LiPu. user id 是

//用户名,你可以用System 或是你自己添加的一个用户.Password是

//对应用户的密码.

//创建一个新连接

OracleConnection conn = new OracleConnection(ConnectionString);

try

{

conn.Open(); //打开连接

OracleCommand cmd = conn.CreateCommand();

cmd.CommandText = "select * from emp"; //SQL语句

OracleDataReader rs = cmd.ExecuteReader();

//读取数据,如果rs.Read()返回为false的话,就说明到记录集的尾部了

while(rs.Read())

{

MessageBox.Show(rs.GetString(1));

}

rs.Close();

}

catch (Exception e)

{

MessageBox.Show(e.Message);

}

finally

{

conn.Close();

}

}

}

}

C#连接Oracle数据库(更改数据库中的记录并查询更改后的数据)

using System;

using System.Collections.Generic;

//这行和下一行都要先在引用中填加system.data.oracleclient

using System.ComponentModel;

using System.Data.OracleClient;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

#region 从region到endregion是手工写的。别的都是系统自动生成的

//定义连接数据库的字符串

string constring = "data source=wzd;user=wzd;password=wzd;";

//进行连接

OracleConnection conn = new OracleConnection(constring);

try

{

conn.Open();//打开指定的连接

OracleCommand com = conn.CreateCommand();

com.CommandText =

"select name from fin_ipr_inmaininfo where card_no="+

"'0000000002'";//写好想执行的Sql语句

OracleDataReader odr = com.ExecuteReader();

//读取数据,如果返回为false的话,就说明到记录集的尾部了

while (odr.Read())

{

//将读取到的值显示到定义的控件中。

this.lbl.Text = odr.GetOracleString(0).ToString();

}

odr.Close();//关闭reader.这是一定要写的

}

catch

{

MessageBox.Show("erro");//如果发生异常,则提示出错

}

finally

{

conn.Close();//关闭打开的连接

}

#endregion

}

private void button2_Click(object sender, EventArgs e)

{

#region 从region到endregion是手工写的。别的都是系统自动生成的

//定义连接数据库的字符串

string constring = "data source=wzd;user=wzd;password=wzd;";

//进行连接

OracleConnection conn = new OracleConnection(constring);

try

{

conn.Open();//打开指定的连接

OracleCommand com = conn.CreateCommand();

//写好想执行的Sql语句

com.CommandText =

"update fin_ipr_inmaininfo set name='wzd' where card_no='0000000002'";

com.ExecuteNonQuery();

}

catch

{

MessageBox.Show("erro");//如果发生异常,则提示出错

}

finally

{

conn.Close();//关闭打开的连接

}

#endregion

}

}

}

如何配置oracle数据库环境

1.安装oracle 11g

2.Oracle自带的SQL Developer

在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL DeveloperW工具,在操作系统菜单的所有程序中找到SQL Developer如下所示,并单击:

结果却提示缺少快捷方式,没找到“SQLDEVELOPER.BAT”,**

在Oracle的安装目录D:DataBaseInstallOralce_11g_r2product11.2.0dbhome_1sqldevelopersqldeveloperbin下的确也没找到sqldeveloper.bat文件。网上很多人都说重新下载SQL Developer替换掉安装Oracle时自带的那个。

重新到Oracle官网下载SQL Developer,当前最新版下载地址:

将下载下来的 sqldeveloper64-3.2.20.09.87-no-jre.zip解压到Oracle安装目录下

这时重新单击操作系统菜单中的“SQL Developer”,看到命令窗口闪一下就消失了。看了一下SQL Developer的“readme.html”文档知道了SQL Developer 3.2支持的Java版本至少要1.6.0_04。

那就下载当前最新JDK安装,在这里我下载的是jrockit-jdk1.6.0_37-R28.2.5-4.1.0-windows-x64.exe。下载完成后双击出现如下安装界面:

在欢迎窗口中单击“Next”:

设置JDK安装目录,单击“Next”:

这里问你是否需要安装示例或源代码,根据需要选择,这里我就不选了直接单击“Next”:

这里是否安装JRE,选择“Yes”,单击“Next”:

设置JRE安装目录,单击“Next”:

安装过程:

安装完毕,单击“Done”关闭。

现在新的JDK安装完后,重新单击操作系统菜单中的“SQL Developer”,这时“SQL Developer”可以启动,但是报了如下的异常:

Exception initializing 'oracle.dbtools.raptor.plsql.PLSQLAddin' in extension 'Or

acle SQL Developer': java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap

at oracle.jdevimpl.debugger.jdi.DebugJDIConnector.getVersion(DebugJDICon

nector.java:30)

at oracle.jdevimpl.debugger.support.DebugFactory.(DebugFactory.j

ava:81)

at oracle.dbtools.raptor.plsql.PLSQLAddin.initialize(PLSQLAddin.java:97)

at oracle.ideimpl.extension.AddinManagerImpl.initializeAddin(AddinManage

rImpl.java:407)

at oracle.ideimpl.extension.AddinManagerImpl.initializeAddins(AddinManag

erImpl.java:214)

at oracle.ideimpl.extension.AddinManagerImpl.initProductAndUserAddins(Ad

dinManagerImpl.java:128)

at oracle.ide.IdeCore.initProductAndUserAddins(IdeCore.java:1941)

at oracle.ide.IdeCore.startupImpl(IdeCore.java:1565)

at oracle.ide.Ide.startup(Ide.java:703)

at oracle.ideimpl.DefaultIdeStarter.startIde(DefaultIdeStarter.java:35)

at oracle.ideimpl.Main.start(Main.java:184)

at oracle.ideimpl.Main.main(Main.java:146)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at oracle.ide.boot.PCLMain.callMain(PCLMain.java:62)

at oracle.ide.boot.PCLMain.main(PCLMain.java:54)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodA

ccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.classloader.util.MainClass.invoke(MainClass.java:128) at oracle.ide.boot.IdeLauncher.bootClassLoadersAndMain(IdeLauncher.java: 189) at oracle.ide.boot.IdeLauncher.launchImpl(IdeLauncher.java:89) at oracle.ide.boot.IdeLauncher.launch(IdeLauncher.java:65) at oracle.ide.boot.IdeLauncher.main(IdeLauncher.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.ide.boot.Launcher.invokeMain(Launcher.java:713) at oracle.ide.boot.Launcher.launchImpl(Launcher.java:115) at oracle.ide.boot.Launcher.launch(Launcher.java:68) at oracle.ide.boot.Launcher.main(Launcher.java:57)

看着异常就不爽啊,解决呗。运行命令行窗口查看是否设置了JDK系统环境变量,这里显然是没有设置JDK系统环境变量:

设置系统环境变量

在桌面选中“计算机”右键选择“属性”,单击“高级系统设置”:

在高级选项卡中单击“环境变量”:

在系统变量下单击“新建”,填入变量名“JAVA_HOME”,变量值为JDK的安装目录,我这里为“ D:JAVAEEServiceInstallJavajrockit-jdk1.6.0_37-R28.2.5-4.1.0 ”,单击“确定”:

在系统变量中找到“Path”,单击“编辑”,在变量值中加入“%JAVA_HOME%bin”以“;”相隔,单击“确定”:

系统环境变量设置完成后,重新启动命令行窗口,检查是否成功。如下为设置成功:

重新单击操作系统菜单中的“SQL Developer”,这时“SQL Developer”可以正常启动:

如果希望不出现“[WARN ][jrockit] MaxPermSize=128M ignored: Not a valid option for JRockit”警告,那用记事本打开SQL Developer的bin目录下的“sqldeveloper.bat”文件,找到“-XX:MaxPermSize=128M”直接删除。因为jrockit已经不需要-XX:MaxPermSize这样的参数了。

注:1.JDK一定要是1.6版本的即U6版本。

2.发现SQL_developer还是会一闪而过,但是SQL_developerW可以方面使用。

3.Oracle SQL Developer 添加SQLServer 和Sybase 连接

1. 开始只有oracle 和access 连接

喎?"/kf/ware/vc/" target="_blank" class="65f97cae9fd1bb3f keylink"vcD4KPHA+CjxzdHJvbmc+Mi4gtPK/qk9yYWNsZSBTUUwgRGV2ZWxvcGVyo7o8L3N0cm9uZz48L3A+CjxwPgo8c3Ryb25nPrmkvt+hqqGqPHN0cm9uZz4mZ3Q7PC9zdHJvbmc+ytfRoc/uoaqhqjxzdHJvbmc+Jmd0Ozwvc3Ryb25nPsr9vt2/4qGqoaomZ3Q7tdrI/be9SkRCQ8f9tq+zzNDyoaqhqiZndDvM7bzTx/22r8z1xL88L3N0cm9uZz48YnI+CjwvcD4KPHA+CjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20160421/20160421091223242.jpg" alt=""

3. 自动加载到目录,JTDS.jar 下载后就到放这里。

(我的路径:C:Documents and SettingsAdministratorApplication DataSQL Developer)

我的JTDS.jar免费下载地址:

4. 完成后添加连接有SQLServer 和Sybase了。

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

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

还有一种添加方法是:

1. 帮助——检查更新

2. 选择可更新的相关软件查件

3. 单击下一步自动更新,则出现下列详细插件,选取JTDS JDBC Driver……

4. 填写在官方网址上的账户信息,确定。

4.sqlserver 转oracle

上一次,我使用手工转换SQL脚本的方式进行数据库的迁移,其间过程相当繁琐,特别是标识符长度的限制让我焦头烂额,因为我们的系统中长标识符真是多如繁星,另外,表结构建好之后,数据的迁移又是一个相当复杂的过程,因为修改了不少的表名,需要把导出的数据和表一一对应上。

但是,除了手工的方式之外,其实我们还有更为简便和自动化的解决方案,那就是ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench。

什么是Oracle SQL Developer?在官方页面上,是这样介绍它的:

Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL statements and SQL scripts, and edit and debug PL/SQL statements. You can also run any number of provided reports, as well as create and save your own. SQL Developer enhances productivity and simplifies your database development tasks .

另外,通过第三方驱动包,该工具还支持连接和管理各种主流数据库服务器。

下面就把我使用这个工具迁移Microsoft SQL Server 2008数据库到Oracle 11G的过程记录下来,为了积累也为分享。

第一部分:获取工具

第二部分:建立资料档案库(Migration Repository)

第三部分:数据库移植向导

第四部分:SqlServer中的架构到Oracle中的模式,名称的处理

第五部分:转移数据

第六部分:存储过程和函数

首先,当然是获得工具,该工具在Oracle Sql Developer官方下载页面里面可以直接下载到。Windows 32位直连地址:Windows 32bit Sql Developer。Oracle Sql Developer需要JDK的支持,在下载页面中提供了包含JDK的下载包,还有支持各种操作系统的下载选项。

下载后,解压到任意位置。直接运行程序。第一次运行,需要指定JDK的目录。

启动后,我们要做的第一件事,不干别的,先下载SQL SERVER的驱动程序。点击菜单帮助,选择检查更新,弹出检查更新向导窗口,第一页一般是废话,直接下一步,等更新中心列表加载完毕后,只选择“Third Party SQL Developer extensions”,点击下一步,等待更新搜索完毕后,中列表中找到并选中 JTDS JDBC Driver,如下图:

image

下一步,在许可协议页面,点击“我同意”按钮后再点下一步,等下载完毕后关闭窗口,弹出提示需要重启程序才能完成更新,点击“是”。等程序重启完毕。

环境准备完毕,开始进入到正题移植数据库。

建立资料档案库(Migration Repository)

一、连接到Oracle

在程序左边的连接窗口中,点击加号按钮,添加一个到Oracle数据库的dba连接,如下图:

image

配置完成后,点击连接按钮,连接到数据库。

二,建立用户

打开到Oracle数据的连接,新建一个用户,我们要在该用户的模式中建立所谓的“资料档案库”,并使用该用户去建立SQL Server移植后的用户名,以及做其它的一些工作。按照帮助中的说明,这个用户最少需要以下权限和角色:

Roles

CONNECT WITH ADMIN OPTION,RESOURCE WITH ADMIN OPTION

Privileges

ALTER ANY ROLE,ALTER ANY SEQUENCE,ALTER ANY TABLE,ALTER TABLESPACE,ALTER ANY TRIGGER,COMMENT ANY TABLE,CREATE ANY SEQUENCE,CREATE ANY TABLE,CREATE ANY TRIGGER,CREATE VIEW WITH ADMIN OPTION,CREATE PUBLIC SYNONYM WITH ADMIN OPTION,CREATE ROLE

CREATE USER,DROP ANY SEQUENCE,DROP ANY TABLE,DROP ANY TRIGGER,DROP USER,DROP ANY ROLE,GRANT ANY ROLE,INSERT ANY TABLE,SELECT ANY TABLE,UPDATE ANY TABLE

以下语句直接建立一个名为migrations的用户:

-- Create the user

create user MIGRATIONS

identified by MIGRATIONS

default tablespace USERS

temporary tablespace TEMP

profile DEFAULT;

-- Grant/Revoke role privileges

grant connect to MIGRATIONS with admin option;

grant resource to MIGRATIONS with admin option;

-- Grant/Revoke system privileges

grant alter any role to MIGRATIONS;

grant alter any sequence to MIGRATIONS;

grant alter any table to MIGRATIONS;

grant alter any trigger to MIGRATIONS;

grant alter tablespace to MIGRATIONS;

grant comment any table to MIGRATIONS;

grant create any sequence to MIGRATIONS;

grant create any table to MIGRATIONS;

grant create any trigger to MIGRATIONS;

grant create any view to MIGRATIONS;

grant create materialized view to MIGRATIONS with admin option;

grant create public synonym to MIGRATIONS with admin option;

grant create role to MIGRATIONS;

grant create session to MIGRATIONS with admin option;

grant create synonym to MIGRATIONS with admin option;

grant create tablespace to MIGRATIONS;

grant create user to MIGRATIONS;

grant create view to MIGRATIONS with admin option;

grant drop any role to MIGRATIONS;

grant drop any sequence to MIGRATIONS;

grant drop any table to MIGRATIONS;

grant drop any trigger to MIGRATIONS;

grant drop tablespace to MIGRATIONS;

grant drop user to MIGRATIONS;

grant grant any role to MIGRATIONS;

grant insert any table to MIGRATIONS;

grant select any table to MIGRATIONS;

grant unlimited tablespace to MIGRATIONS with admin option;

grant update any table to MIGRATIONS;

再次点击连接中的加号按钮,添加一个使用刚刚新建立的用户的连接。

image

连接后,在该连接上点击右键,选择移植资料档案库-关联移植资料档案库,程序会在该用户下建立移植资料档案库所需要的表、存储过程等等,弹出一个对话框显示当前建立的进度,稍等片刻即建立完毕。

数据库移植向导

一,建立到源SqlServer数据库的连接

在连接窗口中,点击绿色加号按钮,打开连接配置窗口,按下图建立到SqlServer的连接:

image

因为动态商品的使用,使得原来SqlServer配置页中默认的1433往往没有办法连接到SqlServer2008数据库,修改为1434即可。

二、启动数据库移植向导

建立到SqlServer的连接后,开始对数据库进行移植。有两个地方可以启动数据库移植向导,一个是在新建的SqlServer连接上点击右键,选择移植到Oracle,另一个是在菜单工具-移植-移植,启动向导后,第一页当然是向导的简介,通过简介,我们可以知道整个移植过程有7步,并且有两个先决条件,如下图:

image

直接点击下一步。

三、选择资料档案库

在这个页面中,我们也可以去建立连接和资料档案库,也就是前一部分中我们所做的工作在这里也可以进行。当然选择我们刚刚建立的migrations连接,如下图:

image

这里截断的意思是将资料档案库清空,我们建立一个移植项目后,所有抓取的数据库结构信息、统计信息还有转换记录等都保存在这个资料档案库中,只要项目名称不同,即使不清空资料档案库也不会影响到移植工作。当然,如果希望更“清爽”一点,也可以勾选。这是后话。

四、为转换项目命名

选择好资料档案库后,点击下一步,为我们的转换项目输入名称和备注,以便识别。另外,还需要指定脚本生成目录,用于存放向导执行过程中生成的脚本。

五、选择源数据库连接

然后继续下一步,选择源数据库,在这里有联机和离线两种模式,联机即是直接连接到源数据进行抓取,而离线则是在SqlDeveloper不直接连接到源数据库的情况下,通过SqlDeveloper提供的脚本预先捕获数据库,得到数据库结构文件后,通过向导导入。

这里当然是选择我们刚才建立的SqlServer连接。

六、选择捕获源数据库

如何连接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:

dossqlplus “/ as sysdba”

sqlplus startup

Oracle 8i:

dossvrmgrl

svrmgrlconnect internal

svrmgrlstartup

命令启动数据库

如果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文件为例:

该文件的位置为: …networkadmintnsnames.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)后面加上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连接数据库。

关于为什们在网络服务名后面加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系统有问题,建议重新安装数据库。

该错误表示用于连接的网络服务名在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)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。

关于项目连接oracle数据库配置和连接oracle数据库需要安装客户端吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

项目连接oracle数据库配置 java连接oracle数据库配置springboot连接oracle数据库配置plsql连接oracle数据库配置navicat连接oracle数据库配置java项目连接oracle数据库springboot项目连接oracle数据库maven项目连接oracle数据库tomcat配置连接oracle数据库plsql连接oracle配置完没有数据库显示oracle配置远程连接数据库
扫码二维码