当前位置:首页 » 操作系统 » linuxc连接oracle数据库连接

linuxc连接oracle数据库连接

发布时间: 2023-05-19 22:35:54

linux C/C++用什么连接oracle数据库啊解决办法

在Windows的控制面板中,查找ODBC数据源,配置一个能够连接Oracle的数据源,并测试能够成功连接。然后在VS中连接这个数据源即可。

㈡ 如何连接到linux上的oracle数据库

装好oracle数据库,我们准备用PLsql Developer 这个软件来连接服务器的数据库!

下面简单介绍设置此软件并连接oracle数据库的方法:

一、下载并安装好PLSQL Developer(绿色版的也可以);

二、下载并解压

Oracle免安装版的客户端:

http://download.oracle.com/otn/nt/instantclient/112030/instantclient-basic-nt-11.2.0.3.0.zip



三、建立tns配置文件。
1、在解压的:“nstantclient-basic-nt-11.2.0.3.0”文件夹的下面建文件夹,路径像这样“nstantclient-basic-nt-11.2.0.3.0 eidownadmin“,其实这个倒是无所谓的,只是看起来与服务端上的更接近而已,与文章后面的环境变量要对应。
2、拷贝服务端目录“$ORACLE_HOME$ etworkadmin nsnames.ora”到客户端的“nstantclient-basic-nt-11.2.0.3.0 eidownadmin“目录,这个文件的内容如下:(也可自行建立)

  • # tnsnames.ora Network Configuration File: /home/oradb/oracle/proct/11.2.0/db_1/network/admin/tnsnames.ora

  • # Generated by Oracle configuration tools.

  • ORCL =

  • (DESCRIPTION =

  • (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

  • (CONNECT_DATA =

  • (SERVER = DEDICATED)

  • (SERVICE_NAME = orcl.localdomain)

  • )

  • )

  • 复制代码以上的代码 做个简要的介绍,本例中安装在linux中的oracle数据库,其环境配置如下:
  • ORACLE_BASE=/home/oradb/oracle

  • ORACLE_HOME=$ORACLE_BASE/proct/11.2.0/db_1

  • ORACLE_SID=orcl

  • PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

  • LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

  • LANG=C

  • 复制代码拷贝到客户端后,用记事本打开它,修改如下几个参数:
  • # tnsnames.ora Network Configuration File: /home/oradb/oracle/proct/11.2.0/db_1/network/admin/tnsnames.ora

  • # Generated by Oracle configuration tools.

  • ORCL =

  • (DESCRIPTION =

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))

  • (CONNECT_DATA =

  • (SERVER = DEDICATED)

  • (SERVICE_NAME = orcl.localdomain)

  • )

  • )

  • 复制代码重要:以上除了HOST是服务器ip外,其他三个红字必须与服务端的这个文件一致,否则连接的时候将会导致ORA-12514错误。


  • 四、设置PLSQL Developer程序的oci库路径。

  • 运行PLSQL Developer程序,在弹出的登录框点“取消”

  • 在菜单“工具-首选项”中的“连接”中,

    找到“Oracle主目录名”,输入

  • 解压的:“nstantclient-basic-nt-11.2.0.3.0”文件夹的路径 比如:

  • "D:PLSQLinstantclient_11_2"

  • 找到“OCI库”,输入

  • 解压的:“nstantclient-basic-nt-11.2.0.3.0”文件夹下oci.dll文件的路径,比如:

  • "D:PLSQLinstantclient_11_2oci.dll"

  • 如下图:



  • 如果服务器中的数据库字符编码是GBK则设置为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  • 如果设置不对会乱码。

  • 注意:设定了环境变量之后,要注销或者重启电脑生效。

㈢ linux下c++远程连接oracle数据库

你说的复合结构应该是结构体吧。若是举个例子给你看看

/*
* sample2.pc
*
* This program connects to ORACLE, declares and opens a cursor,
* fetches the names, salaries, and commissions of all
* salespeople, displays the results, then closes the cursor.
*/
#include <stdio.h>
#include <sqlca.h>
#define UNAME_LEN 20
#define PWD_LEN 40
/*
* Use the precompiler typedef’ing capability to create
* null-terminated strings for the authentication host
* variables. (This isn’t really necessary--plain char *’s
* does work as well. This is just for illustration.)
*/
typedef char asciiz[PWD_LEN];
EXEC SQL TYPE asciiz IS STRING(PWD_LEN) REFERENCE;
asciiz username;
asciiz password;
struct emp_info
{
asciiz emp_name;
float salary;
float commission;
};
/* Declare function to handle unrecoverable errors. */
void sql_error();
main()
{
struct emp_info *emp_rec_ptr;
/* Allocate memory for emp_info struct. */
if ((emp_rec_ptr =
(struct emp_info *) malloc(sizeof(struct emp_info))) == 0)
{
fprintf(stderr, "Memory allocation error. ");
exit(1);
}
/* Connect to ORACLE. */
strcpy(username, "SCOTT");
strcpy(password, "TIGER");
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error--");
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf(" Connected to ORACLE as user: %s ", username);
/* Declare the cursor. All static SQL explicit cursors
* contain SELECT commands. ’salespeople’ is a SQL identifier,
* not a (C) host variable.
*/
EXEC SQL DECLARE salespeople CURSOR FOR
SELECT ENAME, SAL, COMM FROM EMP WHERE JOB LIKE ’SALES%’;
/* Open the cursor. */
EXEC SQL OPEN salespeople;
/* Get ready to print results. */
printf(" The company’s salespeople are-- ");
printf("Salesperson Salary Commission ");
printf("----------- ------ ---------- ");
/* Loop, fetching all salesperson’s statistics.
* Cause the program to break the loop when no more
* data can be retrieved on the cursor.
*/
EXEC SQL WHENEVER NOT FOUND DO break;
for (;;)
{
EXEC SQL FETCH salespeople INTO :emp_rec_ptr;
printf("%-11s%9.2f%13.2f ", emp_rec_ptr->emp_name,emp_rec_ptr->salary, emp_rec_ptr->commission);
}
/* Close the cursor. */
EXEC SQL CLOSE salespeople;
printf(" Arrivederci. ");
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}
void sql_error(msg) char *msg;
{
char err_msg[512];
int buf_len, msg_len;
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf(" %s ", msg);
/* Call sqlglm() to get the complete text of the
* error message.
*/
buf_len = sizeof (err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
printf("%.*s ", msg_len, err_msg);
EXEC SQL ROLLBACK RELEASE;
exit(1);
}

㈣ linux中连接Oracle数据库报ORA-12514错误,找不到原因

服务没有注册到监听上,请把下面命令执行结果贴出来

  1. cat /etc/hosts

  2. cat /opt/oracle/app/proct/11.2.0/dbhome_1/network/admin/listener.ora

  3. show parameter local_listener

  4. hostname

㈤ 如何在linux虚拟机上使用win7安装的oracle数据库

在linux虚拟机上使用win7安装的oracle数据库:
1.环境及安装前规划:虚拟机及OS如下
环境:VMware Wordstation ACE版 6.0.2
操作系统:OracleLinux-R5-U8-Server-i386-dvd 3.2G
操作系统下载地址:http://mirrors.dotsrc.org/oracle-linux/

安装操作系统,这里需要注意的是磁盘空间要预留足够。
我的规划是:
虚拟机槐历分配1024M内存,当然如果主机内存足够,安装时内存设置2048M可以更快。
虚拟机分配一块磁盘,30G磁盘空间。
/boot 100M ext3
/ 20G ext3
swap 2048M
剩余的近8G空间留着做ASM时用。
同时最好安装系统时选择凯明吵图形模式安装,直接安装好图形模式,比较省事。

2.OS的配置:
操作系统安装好后,暂时需要配盯侍置以下内容
固定IP及DNS /etc/sysconfig/network-scripts/ifcfg-eth0
主机名 /etc/sysconfig/network
修改开机运行级别 /etc/inittab
关闭SELINUX /boot/grub/menu.lst
修改sshd_config,解决SSH超时自动断开问题

login as: root
[email protected]'s password:
Last login: Wed Jun 5 09:11:26 2013
[root@oel-01 ~]# hostname
oel-01
[root@oel-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970[PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0C:29:99:8B:C9
ONBOOT=yes
NETMASK=255.255.255.128
IPADDR=192.168.1.212
GATEWAY=192.168.1.254
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes

[root@oel-01 ~]# cat /etc/resolv.conf
nameserver 222.88.88.88

[root@oel-01 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=oel-01

[root@oel-01 ~]# vi /etc/inittab
id:3:initdefault:

[root@oel-01 ~]# vi /boot/grub/menu.lst
在kernel 行末尾增加selinux=0关闭SELINUX。也可以在安装完系统时的图形配置界面中关闭。

[root@oel-01 ~]# cd /etc/ssh/
[root@oel-01 ssh]# grep "ClientAlive" sshd_config
#ClientAliveInterval 0
#ClientAliveCountMax 3
[root@oel-01 ssh]# cp sshd_configsshd_config.bak
[root@oel-01 ssh]# sed -i "s/#ClientAliveInterval 0/ClientAliveInterval 60/g" sshd_config
[root@oel-01 ssh]# grep "ClientAlive" sshd_config
ClientAliveInterval 60
#ClientAliveCountMax 3
[root@oel-01 ssh]# sed -i "s/#ClientAliveCountMax 3/ClientAliveCountMax 10/g" sshd_config
[root@oel-01 ssh]# grep "ClientAlive" sshd_config
ClientAliveInterval 60
ClientAliveCountMax 10

[root@oel-01 ssh]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]

到此应该将系统重启,验证以上各项配置是否生效。如生效,关机,在VMWARE中做快照
3.创建安装ORACLE的用户组

[root@oel-01 ~]# groupadd -g 1000 oinstall
[root@oel-01 ~]# groupadd -g 1031 dba
[root@oel-01 ~]# groupadd -g 1032 oper
[root@oel-01 ~]# useradd oracle
[root@oel-01 ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionaryword
Retype new UNIX password:
passwd: all authentication tokens updatedsuccessfully.
[root@oel-01 ~]# usermod -g oinstall -Gdba,oper oracle
[root@oel-01 ~]# mkdir -p/u01/app/oracle/proct/11.2.0/dbhome_1
[root@oel-01 ~]# chown -R oracle:oinstall/u01/
[root@oel-01 ~]# chmod 775 /u01/
[root@oel-01 app]# pwd
/u01/app
[root@oel-01 app]# ls -al
total 16
drwxrwxr-x 4 oracle oinstall 4096 Jun 5 10:56 .
drwxrwxr-x 3 oracle oinstall 4096 Jun 5 10:55 ..
drwxrwxr-x 2 oracle oinstall 4096 Jun 5 10:55 oracle

4.挂载光盘,安装软件
[root@oel-01 ~]# cd /etc/yum.repos.d/
[root@oel-01 yum.repos.d]# ls
[root@oel-01 yum.repos.d]# viOEL_CDROM.repo
[root@oel-01 yum.repos.d]# catOEL_CDROM.repo
[OEL5.8]
name=oracle linux
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=0
[root@oel-01 yum.repos.d]# cd /mnt/
[root@oel-01 mnt]# mkdir cdrom
[root@oel-01 mnt]# mount /dev/cdrom/mnt/cdrom
mount: block device /dev/cdrom iswrite-protected, mounting read-only
[root@oel-01 mnt]# ls
cdrom
[root@oel-01 mnt]# cd cdrom/
[root@oel-01 cdrom]# ls
blafdoc.css eula.py README-en.html Server
Cluster GPL RELEASE-NOTES-en supportinfo
ClusterStorage images RELEASE-NOTES-en.html TRANS.TBL
EULA isolinux RPM-GPG-KEY VT
eula.en_US README-en RPM-GPG-KEY-oracle
[[root@oel-01 Server]# pwd
/mnt/cdrom/Server
[root@oel-01 Server]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY RPM-GPG-KEY-fedora RPM-GPG-KEY-oracle
RPM-GPG-KEY-EL4 RPM-GPG-KEY-fedora-test
[root@oel-01 Server]# rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

开始安装软件
方法一:
[root@oel-01 Server]# yum -y install oracleasm-support-2.1.7-1.el5.i386.rpm
[root@oel-01 Server]# yum -y install readline-devel-5.1-3.el5.i386.rpm
[root@oel-01 Server]# yum -y install unixODBC
[root@oel-01 Server]# yum -y install make* gcc* glibc* compat-db* compat-gcc*compat-gcc* compat-libstdc++* compat-libstdc* openmotif* setarch*
[root@oel-01 Server]# yum -y install elfutils-libelf-devel-* lio-devel-0.3.106-5.i386.rpm sysstat-7.0.2-11.el5.i386.rpm unixODBC-devel-2.2.11-10.el5.i386.rpm
安装rlwrap-0.37.tar.gz,这里我也是上传上去的,这个软件可以在网上自己找。
[root@oel-01 ~]# ls
anaconda-ks.cfg install.log rlwrap-0.37
Desktop install.log.syslog rlwrap-0.37.tar.gz
[root@oel-01 ~]# tar -zxvfrlwrap-0.37.tar.gz
[root@oel-01 rlwrap-0.37]# pwd
/root/rlwrap-0.37
[root@oel-01 rlwrap-0.37]# ./configure
[root@oel-01 rlwrap-0.37]# make
[root@oel-01 rlwrap-0.37]# make install

㈥ c连接oracle数据库的连接语句

我只会在unix下面写,嘿嘿win的我还不会呢。。
把代码贴上。至于怎么
编译,再查查吧~
int
main()
{
EXEC
SQL
BEGIN
DECLARE
SECTION;
char
oc_passwd[101];
/*数据库密码*/
char
oc_userid[101];
/*数据库用户名*/
char
oc_dbname[101];
/*数据库名*/
char
oc_coad[101];
EXEC
SQL
END
DECLARE
SECTION;
memset(oc_passwd,
0x00,
sizeof(oc_passwd));
memset(oc_userid,
0x00,
sizeof(oc_userid));
memset(oc_dbname,
0x00,
sizeof(oc_dbname));
/*取数据库用户名*/
strcpy(oc_userid,
"userid");
/*取数据库用户密码*/
strcpy(oc_passwd,
"passwd")
;
/*取数据库名*/
strcpy(oc_dbname,
"dbname");
EXEC
SQL
CONNECT
:oc_userid
IDENTIFIED
BY
:oc_passwd
USING
:oc_dbname;
if
(sqlca.sqlcode
!=
0)
{
printf("用户名[%s]密码[%s]数据库[%s]\n",
oc_userid,
oc_passwd,
oc_dbname);
printf("连接数据库失败,sqlcode=%d\n",
sqlca.sqlcode);
return
-1;
}
/*读table取coad字段*/
memset(oc_coad,
0x00,
sizeof(oc_coad));
EXEC
SQL
SELECT
coad
INTO
:oc_coad
FROM
table
WHERE
1=1;
if
(sqlca.sqlcode
==
NORECORD)
{
printf("查询无记录\n");
return
-1;
}
else
if
(sqlca.sqlcode
!=
0)
{
printf("查询失败,sqlcode=%d\n",
sqlca.sqlcode);
return
-1;
}
return
0;
}

㈦ linux怎么登陆oracle数据库

×

loading..

资讯
安全
论坛
下载
读书
程序开发
数据库
系统
网络
电子书
微信学院
站长学院
QQ
手机软件
考试

频道栏目

SQL Server|
MySQL|
Oracle|
DB2|
Sybase|
其他综合|
SQL教程|

登录注册

首页 > 数据库 > Oracle > 正文

连接Linux服务器操作Oracle数据库

2013-03-20 10:48:47
0个评论

收藏
我要投稿

连接Linux服务器操作Oracle数据库

由于项目已经上线,现场的数据库服务器不允许直接用Oracle的客户端plsqldev.exe来连接,只能通过Linux服务器的命令来操作。 以下是用SecureCRT 5.1客户端连接Linux服务器来操作Oracle数据库:

1.连接到Linux服务器(输入服务器的ip地址)

ssh 10.199.94.227

连接成功后会提示输入密码,输入成功会提示。

2.切换到操作Oracle数据库

su - oracle

切换成功会提示相关数据库的实例。例如:oracle@linux-cg01:~>

3.切换到sqlplus操作

sqlplus /nolog

切换成功会提示相关的提示:例如:

SQL*Plus: Release 11.2.0.2.0 Proction on Thu Jan 19 11:19:48 2012

Copyright (c) 1982, 2010, Oracle. All rights reserved.

4.输入数据库的用户名和密码

conn personal/personal

5.会提示Connected.(连接成功),显示 SQL> :

6.以下是相关的SQL语句操作:

(1) 查询的语句后面要一定要加 ; ,否则不能执行查询,相当于plsqldev.exe工具的命令窗口的操作

select *from newuseraccount (记得查询的时候一定要加;)

select email,password from userreg where accountstype=1 and userstate=1;

(2)插入或更新的语句记得还要加提交语句,才能提交事务。相当于plsqldev.exe工具的命令窗口的操作。

update newuseraccount set address='address ' where userid=638 ;

commit ;

㈧ 怎么在linux环境下通过c/c++语言连接oracle数据库

推荐你使用pc语言,用这个编写代码很容易对数据库oracle进行操作.各种操作都非常简单.
例如:
EXEC SQL CONNECT :UserName IDENTIFIED BY :PassWord using :ServerName;
这样一个简单语句就可以实现连接数据库.
EXEC SQL CALL insert_data_sms(:spnumber,:usernumber,:content,:flag,:priority,:spnode,:sequenid_sp,:iresult);
EXEC SQL COMMIT;/*提交事务*/
可调用存储过程.
你可以找找这方便的书看看

㈨ linux怎样连接oracle数据库

Linux系统下可以用sqlplus命令连接oracle数据库,方法如下:
sqlplus命令语法:
#sqlplus usr/pwd@//host:port/sid
#usr:用户名
#pwd:密码
#host:数据库服务器IP
#port:端口
#sid:数据库标识符
sqlplus命令连接Oracle示例:
[oracle@mzl ~]$ sqlplus risenet/1@//192.168.130.99:1521/risenet
SQL*Plus: Release 10.2.0.1.0 - Proction on Mon Feb 18 15:53:34 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Proction
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Proction
#测试数据库select查询语句
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
risenet OPEN
SQL>

㈩ c程序通过什么连接oracle

一般C语言连接oracle数据库通过使用oracle提供的OCI接口和PROC编程接口两种方式。
OCI方式纯粹是一些函数接口。
PROC是oracle提供的一种C与ORACLE
SQL的混合编程。程序(以.pc为后缀)编好之后,使用oracle提供的proc预编译程序,将pc文件编译成c文件(这一过程,相当于将SQL转换为OCI的接口),然后再使用c语言编译器生成可以执行文件。
OCI方式不容易入门,它拥有大量的接口函数,要很快熟悉它,非常难。但OCI方式的编程效率很高。
porc方式简单易用。可用于对性能要求不太高的项目。

热点内容
电子产品存储要求 发布:2025-04-23 07:58:30 浏览:214
imac存储硬盘位置 发布:2025-04-23 07:55:18 浏览:327
sql远程连接端口 发布:2025-04-23 07:55:16 浏览:782
vmos脚本不生效 发布:2025-04-23 07:48:25 浏览:991
奔驰怎么连接安卓的手机 发布:2025-04-23 07:39:54 浏览:594
ipad怎么设置长密码 发布:2025-04-23 07:39:54 浏览:573
冷媒压缩机 发布:2025-04-23 07:39:53 浏览:223
php1970 发布:2025-04-23 07:30:36 浏览:854
c语言中e的表示 发布:2025-04-23 07:12:25 浏览:810
活跃度算法 发布:2025-04-23 07:10:41 浏览:110