1.下载Oracle Client Package .
从http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载
Instant Client Package – Basic包( 标注:All files required to run OCI, OCCI, and JDBC-OCI applications)这里下载的是Version 11.1.0.7
2.本地保存Oracle Client Package:
创建文件夹,比如oracle_client,将下载的文件加压缩到此文件夹里.(笔者目录: D:/oracle_client/instantclient_10_2)
3.在当前目录下,新建立两个文件,sqlnet.ora和tnsnames.ora然后再手动配置sqlnet.ora和tnsnames.ora
比如这里是:
sqlnet.ora文件内容:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora文件内容(斜体表示需要替换的内容):
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
4.配置环境变量
变量名: TNS_ADMIN
变量值: D:/oracle_client/instantclient_10_2
否则出现:ORA-12154: TNS:could not resolve the connect identifier specified错误
如果之前安装了Oracle 又卸载,会遗留NLS_LANG=NA的键值.输入RegEdit打开注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE.在右面找到NLS_LANG=NA并删除掉
否则会报ORA-12705: Cannot access NLS data files or invalid 错误.
5.安装pl/sql软件(过程略)
6.配置pl/sql的Oracle连接参数:
选择pl/sql的工具/首选项(too/ preference/)里的连接,在右面设置Oracle主目录名(即安装目录)和OCI库.
Oracle主目录名: D:/oracle_client/instantclient_10_2
OCI库: D:/oracle_client/instantclient_10_2/oci.dll
7.登陆pl/sql测试成功
http://www.javaeye.com/topic/575626
Navicat和Toad都支持Direct的连接方式
我关心的是能不能做数据的导出。
现在一直用oracle 客户端的精简版,占用资源等都很满意,但是导出数据就不行了。
lz推荐的这个能导出数据不?
用Oracle官方的Oracle SQL Developer 2.1
http://www.oracle.com/technology/software/products/sql/index.html
由于是Java编写,所以可以跨平台使用,连客户端都不用装就可以直连,而且支持多种导出方式,甚至可以导出为SQL*Loader用的控制文件。
确实够精简,但连接上plsql 好像不能进行导出操作啊
精减绿色版Oracle9X客户端
http://www.javaeye.com/topic/421485
我们项目中主要使用Oracle数据库,但每次重装自己的系统之后,都必须安装100多兆Oracle客户端工具,而项目组中多数人需要的仅仅只是用PL/SQL Developer 或TODA之类工具连接Oracle功能而已,既浪费时间又浪费磁盘。
今天忽发奇想,有没有办法弄一个绿色版的Oracle出来呢?经过参考网上相关资料及自己的N(N>10)次试验,终于搞出来一个山寨版的Oracle客户端(见附件)。已经做成自解压安装包,下载后把扩展名改为.exe然后执行一下,然后用 PL/SQL Developer连接数据库试试,如果连不上,那就重启一下操作系统再试。
另外,今天也因这而学到了如何通过注册来配置系统环境变量和用户环境变量,呵呵。
========================
2009-08-06:
今天网上搜到了Oracle官方的解决方案:
Oracle官方提供了名为“Instant Client Package”的软件,较好的实现了Oracle客户端绿化的解决方案。
首先从:
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载程序包:
instantclient-basic-win32-11.1.0.x.0.zip (目前有版本: 11.1.0.6.0 和 11.1.0.7.0)
或
instantclient-basic-win32-10.2.0.x.zip (目前有版本: 10.2.0.3 和 10.2.0.4)
或
instantclient-basic-win32-10.1.0.5-20060419.zip
然后解压到一个目录,例如:c:/ora92,然后在这个目录下建立NETWORK文件夹,接着再这个文件夹下再建立ADMIN文件夹,然后在ADMIN内建立tnsnames.ora文件,格式如下:
yourDataBaseName =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yourhostIp )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = yourSID )
)
)
例如:
# TNSNAMES.ORA Network Configuration File: C:/oracle/ora90/NETWORK/ADMIN/tnsnames.ora
# Generated by Oracle configuration tools.
XMDS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 145.24.16.181)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XMDS)
)
)
XMDS_SC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
这里根据自己的实际情况配置。接着打开PL/SQL,在“Tools-->perference”里面设置OCI Library和Oracle_home,我的设置是
Oracle_home=c:/orac9i
OCI Library=c:/ora9i/oci.dll,
。
上面的配置工作完成后,还需要做一点来解决中文乱码的问题:
写一个批处理PLSql_run.bat放到Pplsqldeveloper安装目录下,内容如下:
set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
PLSQLDev.exe
这个脚本的作用是告诉PLSqlDev服务器端的字符集,以便于在客户端进行正确处理,如果服务端字符集不是ZHS16GBK,则上面的脚本文件也要相应改动,常用几个中文字符集如下:
set nls_lang=simplified chinese_china.zhs16cgb231280
set nls_lang=simplified chinese_china.ZHS16GBK
set nls_lang=simplified chinese_china.Utf8
#########
另外,网上有些说法是不同版本的包支持不同的Oracle服务器版本:
instantclient-basic-win32-11.1.0.x.0.zip -这个是支持Oracle 9i 以上的版(不包括Oracle9i)
instantclient-basic-win32-10.2.0.x.zip -这个是支持Oracle8i 和Oracle9i 的。
但在官网上我还没看到相关说明,我自己也没作测试,如果谁做过测试,不妨告知一下。
Oracle92_Client_green.exe.jpg (1.9 MB)
从客户端PLSQL连接到ORACLE服务器
http://hi.baidu.com/ydwcn/blog/item/eee4a1ec463a114378f055ef.html
首先,在安装ORACLE服务器的机器上搜索下列文件,
oci.dll
ocijdbc10.dll
ociw32.dll
orannzsbb10.dll
oraocci10.dll
oraociei10.dll (可能服务器没有,如果没有则pl sql 随便用户名密码可以登陆,可以网上找找,或找我QQ:524820337)
sqlnet.ora
tnsnames.ora
classes12.jar
ojdbc14.jar
放到一个文件夹,如 oraclient
2、配置tnsnames.ora,如果本机上没有安装oracle,可以从安装了oracle的机上拷贝一个(tnsnames.ora文件在%ORACLE_HOME%/network/admin下)放在上面的目录D:/oraclient下。
oracledata =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracledata)
)
)
3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径(如:D:/oraclient,特别是重装后或其它操作,忘了TNS_ADMIN变量,plsql登陆就会报无法解析指定的连接标识符),这是为了能够找到上面说的tnsnames.ora。如果本机上安装了ORACLE,并且设置了ORACLE_HOME环境变量,那么会自动在%ORACLE_HOME%/network/admin/位置查找tnsnames.ora文件。
4、设置ORACLE的语言,添加环境变量:
“NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,(AMERICAN_AMERICA.US7ASCII 是ASCII编码类型,其它类型可自己到服务器看一下或网上查找一下)
(本步骤暂时要做对,如果编码不对,会产生乱码)
5、下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
Oracle Home=D:/oracleclient
OCI library=D:/oracleclient/oci.dll
6、再次打开plsql则会在database中有oracledata 选项输入用户名密码就可以登陆。
------------------------------------------------------------------------------------------------------------------------------
运行平台: 客户端 XP, 服务器端 WIN2003 软 件: PLSQL 7.0.1.1066 , oracle 9i 步骤1: 在客户端先安装oracle客户端和PLSQL软件,就是在oracle安装过程中选择安装客户端就可以了 。
步骤2: 在服务器端安装oracle服务器端就可以了
步骤3: 修改oracle客户端tnsnames.ora文件(目录在C:/oracle/ora92/network/admin) MYACCP= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=tcp)(HOST=superich-accp )(PORT=1521)) )
(CONNECT_DATA=(SERVICE_NAME = ACCP) ) ) 注: superich-accp 为服务器主机名称 ACCP为oracle服务名 OracleServiceACCP
步骤4 : 在listener.ora中的 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = superich-accp )(PORT = 1521)) ) ) ) listener.ora中HOST的值必须和 tnsnames.ora 中的HOST值一样
步骤5:用PLSQL连接 用户名:username 密码: password 数据库: MYACCP (tnsnames.ora 中最上面的名称) 连接为:NORMAL
经过测试,OK
在连接的过程中可能遇到以下问题:
问题1: ORA-12541 没有监听器 解决:用命令 lsnrctl start 启动监听服务,或者直接在服务的控制台启动(测试过)
问题2: ORA-03113: 通信信道的文件结束 解决:可能由于网络的时通时断,故存在不活动的连接。 1。在文件C:/oracle/ora92/network/admin/listener
关于plsql developer 连 Oracle 的配置文件 tnsnames.ora
http://blog.csdn.net/programpoet/archive/2009/04/03/4045262.aspx
Oracle10g所在目录大概是:
E:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora
Oracle9i所在目录大概是:
D:/oracle/ora90/network/admin/tnsnames.ora
配置该文件,诸如:
# TNSNAMES.ORA Network Configuration File: D:/oracle/ora90/network/admin/tnsnames.ora # Generated by Oracle configuration tools.
MAO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = maowenlei)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mao.name) ) )
APP_172.22.22.6 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.22.22.6)(PORT = 1521)) ) (CONNECT_DATA = (SID = app) (SERVER = DEDICATED) ) )
APP_172.22.22.1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.22.22.1)(PORT = 1521)) ) (CONNECT_DATA = (SID = app) (SERVER = DEDICATED) ) )
APP_CESHI = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.141.200)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = APP) ) )
INST1_HTTP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = maowenlei)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = MODOSE) (PRESENTATION = http://HRService) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
APP_10.10.141.200 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.141.200)(PORT = 1521)) ) (CONNECT_DATA = (SID = app) (SERVER = DEDICATED) ) )
之后在plsql developer登陆时就有以上下拉选择框了.
----------------------------------------------
关于9i换成10g后,使用plsql developer登陆报错的问题.
原因:还在找老版本的tnsnames.ora.
解决方案,重新安装plsql developer,自动找新安装的数据库10g.
tnsnames.ora配置小结
http://hi.baidu.com/atinic/blog/item/e9e5b00e90c09ae337d12268.html/cmtid/fe0b272e4b40505b4ec2263b
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 = us.oracle.com
上面的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 = us.oracle.com——表示采用默认的domain name为us.oracle.com,在tnsnames.ora中如果配置对应的解析,如果原来的别名oralocal,那么,当启用这个参数后,在 tnsnames中的配置要改成oralocal.us.oracle.com。在使用tnsping时或者sqlplus登录时,只需写前面的别名,系 统会自动加上后面的domain name来进行解析。
检查完毕sqlnet.ora,一般都会发现是使用tnsname来解析别名的,那么,tnsnames.ora中可以有哪些配置种类呢?
# TNSNAMES.ORA Network Configuration File: $ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora
# Generated by Oracle configuration tools.
###### 一般的配置 ##################################
ORALOCAL
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
127.0.0.1
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVER
=
DEDICATED
)
(
SERVICE_NAME
=
oralocal
)
)
)
###### 这样也行,用SID=oralocal ###########################
ORALOCAL_2
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
127.0.0.1
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVER
=
DEDICATED
)
(
SID
=
oralocal
)
)
###### RAC的配置(3节点rac) ###############################
ORALOCAL
=
(
DESCRIPTION
=
(
load_balance
=
yes
)
(
failover
=
on
)
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.1
)(
PORT
=
1521
))
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.2
)(
PORT
=
1521
))
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.3
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVICE_NAME
=
oralocal
)
(
SERVER
=
DEDICATED
)
(
failover_mode
=
(
type
=
select
)(
method
=
basic
)(
retries
=
20
)(
delay
=
20
))
)
)
ORALOCAL_NODE1
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.1
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVICE_NAME
=
oralocal
)
(
INSTANCE_NAME
=
oralocal_node1
)
)
)
ORALOCAL_NODE2
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.2
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVICE_NAME
=
oralocal
)
(
INSTANCE_NAME
=
oralocal_node2
)
)
)
ORALOCAL_NODE3
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.1.3
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVICE_NAME
=
oralocal
)
(
INSTANCE_NAME
=
oralocal_node3
)
)
)
)
###### DATA GUARD配置(primary库和standby库都需要配置)##############
standby
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.2.2
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVER
=
DEDICATED
)
(
SERVICE_NAME
=
oralocal
)
)
)
primary
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)(
HOST
=
192.168.2.1
)(
PORT
=
1521
))
)
(
CONNECT_DATA
=
(
SERVER
=
DEDICATED
)
(
SERVICE_NAME
=
oralocal
)
)
)
另外需要注意的2点情况: (1)如果tnsnames中的service_name配置错误,配置成了instance_name了,这个时候会发生tnsping能通,但是 sqlplus连接不上的奇怪情况。报错ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor。这个时候查错的时候,需要检查对应的service_name。 (2)如果远程数据库是rac,而且本地客户端端远程数据库处于不同的网段,通过公网链接,rac对外的ip映射只有一个,即只映射到一个节点。请注意在 客户端配置tnsnames的时候按照单机的情况来配置。呵呵,dba不仅仅要学习oracle,了解一些网络的知识,特别是自己系统的网络架构,也是需 要的。
|
|