请问:DELPHI7如何连接ORACLE11G? 请问:DELPHI7如何连接ORACLE11G?能不能不依靠第三方工具?如:OracleSQLHandler或Oracle10[1].2_Client_Lite如果可以,请告诉小弟,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 连接oracle你必须知道oracle服务器的ip地址、数据库的ID、端口,然后自己在本地建立tns解析。 这些都是oracle的配置,跟连接都没关系,但要建立连接又必须有这些前提。 在建立连接的时候,必须知道tns名称,和数据库用户名和密码,就可以建立连接了。其中的3个参数就相当于sql server的服务器地址,用户名名和密码一样... 使用ODAC1)服务器端配置Listener: 添加Listeners , 设置选择 DataBase Name方式,填写2个参数 { HomeDir = /ora/ , SID =ora8 } 2)启动Net8服务lsnrctl start 3)停止Net8服务lsnrctl stop 4)参数文件摘要 5)客户端配置:添加 Net Service Name ,同Windows客户端一样格式 1)服务器端配置Listener: 执行/ora/bin/netasst 填写描述-> 首选Oracle服务: 。PROTOCOL = TCP 。HOST = 172.17.2.22 。PORT = 1521 查看生成的 Net8 Server配置文件:listener.ora [oracle@lin admin]$ more listener.ora # LISTENER.ORA Configuration File:/ora/network/admin/listener.ora # Generated by Oracle Net8 Assistant LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.22)(PORT = 1521)) (PROTOCOL_STACK = (PRESENTATION = TTC) (SESSION = NS) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /ora) (SID_NAME = ora8) ) ) ### 如果指明监听服务的 "全局名 ",则有类似这一行:(GLOBAL_DBNAME = ora8) 2)启动Net8服务lsnrctl start 首先你可以这样取得帮助: [oracle@lin /ora]$ lsnrctl LSNRCTL> help 然后开始启动:start [oracle@lin bin]$ lsnrctl start 联接时,机器会逐步告诉你正在启动…,正在联接…,已经联接的状态,最后他说成功啦! 下面是一些简要信息: LSNRCTL for Linux: Version 8.1.5.0.0 - Production on 19-NOV-99 22:02:54 (c) Copyright 1998 Oracle Corporation. All rights reserved. Starting /ora/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 8.1.5.0.0 - Production System parameter file is /ora/network/admin/listener.ora Log messages written to /ora/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521)) (PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521)) (PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 8.1.5.0.0 - Production Start Date 19-NOV-99 22:02:54 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security OFF SNMP OFF Listener Parameter File /ora/network/admin/listener.ora Listener Log File /ora/network/log/listener.log Services Summary... ora8 has 1 service handler(s) The command completed successfully 以上提示说,1个服务被处理,命令成功完成。 3)停止Net8服务lsnrctl stop 最简单的方法是 [oracle@lin /ora]$ lsnrctl stop 有时侯,进程出了差错,tnslsnr没有响应,像WindowsNT常犯的毛病一 样, 这里有一个强硬的手段:先找出它的进程号,然后 kill掉! [oracle@lin /ora]$ ps -ef|grep tns oracle 1331 1 0 15:51 ? 00:00:00 /ora/bin/tnslsnr LISTENER -inher 或使用更少的参数也能找到tnslsnr: [oracle@lin /ora]$ ps -e PID TTY TIME CMD 1331 ? 00:00:00 tnslsnr 现在杀死PID = 1331的进程: [oracle@lin /ora]$ kill 1331 LSNRCTL象 SVRMGRL一样,是一个服务器管理程序,有不少参数,或者说是 子程序,带星号的是一个外部程序。 [oracle@lin bin]$ lsnrctl stop LSNRCTL for Linux: Version 8.1.5.0.0 - Production on 19-NOV-99 22:02:50 (c) Copyright 1998 Oracle Corporation. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521)) (PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS))) The command completed successfully Listeners =DataBase Name = Global DB Name =ora8, HomeDir = /ora/ ,SID =ora8 [oracle@lin oracle]$ cd /ora/net*/ad* [oracle@lin admin]$ ls listener.ora namesini.sql samples sqlnet.ora namesdrp.sql namesupg.sql sqlnet.fdf tnsnames.ora 下面是在 Windwos NT/98 上远程控制 TNSLSNR 的情形(图略)。 4)参数文件摘要 [oracle@lin admin]$ more /u01/app/oracle/admin/ora8/pfile/initora8.ora db_name = ora8 instance_name = ora8 ## "事例名 "是关键字 service_names = ora8 control_files = ( "/u01/app/oracle/oradata/ora8/control01.ctl ", "/u01/app/oracle/oradata/ora8/control02.ctl ") db_block_buffers = 8192 shared_pool_size = 4194304 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 processes = 50 log_buffer = 163840 log_archive_start = true log_archive_dest_1 = "location=/u01/app/oracle/admin/ora8/arch " log_archive_format = %t_%s.dbf # 切记打开回滚段 rollback_segments = (r01, r02, r03, r04) # global_names = false ### 监听服务无需指明 "全局名 " # oracle_trace_enable = true # define directories to store trace and alert files background_dump_dest = /u01/app/oracle/admin/ora8/bdump core_dump_dest = /u01/app/oracle/admin/ora8/cdump user_dump_dest = /u01/app/oracle/admin/ora8/udump db_block_size = 2048 remote_login_passwordfile = exclusive os_authent_prefix = " " compatible = "8.1.5 " ## 也可以兼容 "8.0.5 " 5)客户端网络配置 [oracle@lin admin]$ more tnsnames.ora # TNSNAMES.ORA Configuration File:/ora/network/admin/tnsnames.ora # Generated by Oracle Net8 Assistant 使用net8助理,结果自动保存在 tnsnames.ora 中, [oracle@lin /ora]$ netass* 添加Service: 名称ora8,参数如下: PROTOCOL=TCP HOST=172.17.2.22 PORT=1521 Oracle_SID=ora8 机器解释成一个Oracle服务器地址包: ( DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521)) (PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS)) ) 一般说来,客户端采用Windows9x/NT/2000,因为这里软件开发容易,程序员和工具较为普及。 Windows 客户端网络配置与此类似,其内容见于: \OraNT\net80\Admin\tnsname.ora ORA8.WORLD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.22)(PORT = 1521)) (CONNECT_DATA = (SID = ora8)) ) Oracle Data Access Components http://crlab.com/odac/ 可以不用oracle的客户端TNS,直接采用net方式,即通过IP地址:断口:sid的方式连接oracle数据库。是目前为止delphi开发oracle数据库的比较理想的控件。 好像有oracle的控件,很方便的。 在Delphi里怎么定义无符号char? Delphi8怎样使才好啊? 怎样将ParamStr(1)取得的短路径/文件名转换成长路径/文件名? 网页给ActiveX赋值 ActiveX给网页赋值 socketconnection.appserver intraweb中报表打印如何实现 Delphi中我拉了一个按钮 但是在文件中只看到了TButton的变量定义 为什么没有Create? 20分钟内回答对问题的人得100分! Help me! 打开Excel表格 连接SQL2000 error opening serial port如何释放占用的串口
这些都是oracle的配置,跟连接都没关系,但要建立连接又必须有这些前提。 在建立连接的时候,必须知道tns名称,和数据库用户名和密码,就可以建立连接了。其中的3个参数就相当于sql server的服务器地址,用户名名和密码一样...
添加Listeners , 设置选择 DataBase Name方式,填写2个参数 { HomeDir = /ora/ , SID =ora8 }
2)启动Net8服务lsnrctl start
3)停止Net8服务lsnrctl stop
4)参数文件摘要
5)客户端配置:添加 Net Service Name ,同Windows客户端一样格式
1)服务器端配置Listener:
执行/ora/bin/netasst
填写描述-> 首选Oracle服务:
。PROTOCOL = TCP
。HOST = 172.17.2.22
。PORT = 1521
查看生成的 Net8 Server配置文件:listener.ora
[oracle@lin admin]$ more listener.ora
# LISTENER.ORA Configuration File:/ora/network/admin/listener.ora
# Generated by Oracle Net8 Assistant LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.22)(PORT = 1521))
(PROTOCOL_STACK =
(PRESENTATION = TTC)
(SESSION = NS)
)
) SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /ora)
(SID_NAME = ora8)
)
)
### 如果指明监听服务的 "全局名 ",则有类似这一行:(GLOBAL_DBNAME = ora8)
2)启动Net8服务lsnrctl start
首先你可以这样取得帮助:
[oracle@lin /ora]$ lsnrctl
LSNRCTL> help
然后开始启动:start
[oracle@lin bin]$ lsnrctl start
联接时,机器会逐步告诉你正在启动…,正在联接…,已经联接的状态,最后他说成功啦! 下面是一些简要信息:
LSNRCTL for Linux: Version 8.1.5.0.0 - Production on 19-NOV-99 22:02:54
(c) Copyright 1998 Oracle Corporation. All rights reserved.
Starting /ora/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 8.1.5.0.0 - Production
System parameter file is /ora/network/admin/listener.ora
Log messages written to /ora/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521))
(PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521))
(PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.5.0.0 - Production
Start Date 19-NOV-99 22:02:54
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /ora/network/admin/listener.ora
Listener Log File /ora/network/log/listener.log
Services Summary...
ora8 has 1 service handler(s)
The command completed successfully
以上提示说,1个服务被处理,命令成功完成。
3)停止Net8服务lsnrctl stop
最简单的方法是 [oracle@lin /ora]$ lsnrctl stop
有时侯,进程出了差错,tnslsnr没有响应,像WindowsNT常犯的毛病一 样,
这里有一个强硬的手段:先找出它的进程号,然后 kill掉!
[oracle@lin /ora]$ ps -ef|grep tns
oracle 1331 1 0 15:51 ? 00:00:00 /ora/bin/tnslsnr LISTENER -inher 或使用更少的参数也能找到tnslsnr:
[oracle@lin /ora]$ ps -e
PID TTY TIME CMD
1331 ? 00:00:00 tnslsnr 现在杀死PID = 1331的进程:
[oracle@lin /ora]$ kill 1331
LSNRCTL象 SVRMGRL一样,是一个服务器管理程序,有不少参数,或者说是 子程序,带星号的是一个外部程序。 [oracle@lin bin]$ lsnrctl stop
LSNRCTL for Linux: Version 8.1.5.0.0 - Production on 19-NOV-99 22:02:50
(c) Copyright 1998 Oracle Corporation. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521))
(PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS)))
The command completed successfully
Listeners =DataBase Name = Global DB Name =ora8, HomeDir = /ora/ ,SID =ora8 [oracle@lin oracle]$ cd /ora/net*/ad*
[oracle@lin admin]$ ls
listener.ora namesini.sql samples sqlnet.ora
namesdrp.sql namesupg.sql sqlnet.fdf tnsnames.ora 下面是在 Windwos NT/98 上远程控制 TNSLSNR 的情形(图略)。
4)参数文件摘要
[oracle@lin admin]$ more /u01/app/oracle/admin/ora8/pfile/initora8.ora
db_name = ora8
instance_name = ora8 ## "事例名 "是关键字
service_names = ora8 control_files = ( "/u01/app/oracle/oradata/ora8/control01.ctl ", "/u01/app/oracle/oradata/ora8/control02.ctl ")
db_block_buffers = 8192
shared_pool_size = 4194304
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 50
log_buffer = 163840 log_archive_start = true
log_archive_dest_1 = "location=/u01/app/oracle/admin/ora8/arch "
log_archive_format = %t_%s.dbf
# 切记打开回滚段
rollback_segments = (r01, r02, r03, r04) # global_names = false ### 监听服务无需指明 "全局名 "
# oracle_trace_enable = true
# define directories to store trace and alert files
background_dump_dest = /u01/app/oracle/admin/ora8/bdump
core_dump_dest = /u01/app/oracle/admin/ora8/cdump
user_dump_dest = /u01/app/oracle/admin/ora8/udump
db_block_size = 2048
remote_login_passwordfile = exclusive
os_authent_prefix = " "
compatible = "8.1.5 " ## 也可以兼容 "8.0.5 "
5)客户端网络配置
[oracle@lin admin]$ more tnsnames.ora
# TNSNAMES.ORA Configuration File:/ora/network/admin/tnsnames.ora
# Generated by Oracle Net8 Assistant 使用net8助理,结果自动保存在 tnsnames.ora 中,
[oracle@lin /ora]$ netass* 添加Service: 名称ora8,参数如下: PROTOCOL=TCP HOST=172.17.2.22 PORT=1521 Oracle_SID=ora8
机器解释成一个Oracle服务器地址包:
( DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.2.22)(PORT=1521))
(PROTOCOL_STACK=(PRESENTATION=TTC)(SESSION=NS))
)
一般说来,客户端采用Windows9x/NT/2000,因为这里软件开发容易,程序员和工具较为普及。
Windows 客户端网络配置与此类似,其内容见于: \OraNT\net80\Admin\tnsname.ora
ORA8.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.22)(PORT = 1521))
(CONNECT_DATA = (SID = ora8))
)