linuxc连接oracle数据库连接
㈠ 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程序,在弹出的登录框点“取消”
- 解压的:“nstantclient-basic-nt-11.2.0.3.0”文件夹的路径 比如:
- "D:PLSQLinstantclient_11_2"
- 解压的:“nstantclient-basic-nt-11.2.0.3.0”文件夹下oci.dll文件的路径,比如:
- "D:PLSQLinstantclient_11_2oci.dll"
- 如下图:
- 如果服务器中的数据库字符编码是GBK则设置为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- 如果设置不对会乱码。
- 注意:设定了环境变量之后,要注销或者重启电脑生效。
在菜单“工具-首选项”中的“连接”中,
找到“Oracle主目录名”,输入
找到“OCI库”,输入

㈢ 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错误,找不到原因
服务没有注册到监听上,请把下面命令执行结果贴出来
cat /etc/hosts
cat /opt/oracle/app/proct/11.2.0/dbhome_1/network/admin/listener.ora
show parameter local_listener
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方式简单易用。可用于对性能要求不太高的项目。