Pro*c链接oracle数据库

Pro*c链接oracle数据库,第1张

[oracle]Proc链接oracle数据库

一程序链接oracle数据库

EXEC SQL CONNECT :DbUser IDENTIFIED BY :DbPasswd USING :DbServer;

其中DbServer为UCRC

查文件未发现一IP地址的定义 如何链接的远端数据库

tnsnames ora 文件的存放路径为 $ORACLE_HOME/neork/admin 以下是一个示例

OID LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost localdomain)(PORT = )) ) (CONNECT_DATA = (SERVICE_NAME = oid) ) ) CAMS LOCALDOMAIN = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost localdomain)(PORT = )) ) (CONNECT_DATA = (SERVICE_NAME = cams) ) ) INST _>

假设数据库所在服务器IP地址:19216801

数据库实例名为:ora92

用户名:umap

密码:umap

第一步打开配置程序

位于:程序-->Oracle - OraHome92-->Configuration and Migration Tools-->Net Configuration Assistant ;

第二步:选择配置项:

打开程序后,出现的界面中有四个选项, 分别为(1)监听程序配置,(2)命名方法配置,(3)本地NET服务名配置,(4)目录使用配置 这里我们选择第3个,点下一步

第三步:根据需要选择 *** 作内容,是添加还是对以前的配置进行修改或删除;

第四步:根据您要连接的Oracle数据据库版本选择, 这里我们选择Oracle8i或更高版本数据库或服务;

第五步:服务名,输入示例中的实例名;

第六步:选择TCP;

第七步:主机名:输入示例中的IP地址; 使用默认端口1521;

第八步:使用您的登录帐户与密码进行连接测试

“ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务”的解决方法

ORA-12154:TNS:无法处理服务名

解决方案:

1服务是否打开

2监听是否打开

3C:\oracle\ora92\network\admin目录下tnsnamesora文件中是否有你建的库名和主机名

比如:

AA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =1014410089)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = AA)

)

)

SQL SERVER连接oracle数据库几种方法2010年08月27日星期五 09:35 PM--1 方式

--查询oracle数据库中的表

SELECT

FROM OPENDATASOURCE(

'MSDAORA',

'Data Source=GE160;UserID=DAIMIN;Password=DAIMIN'

)DAIMINJOBS

举一反三:在查询分析器中输入:

SELECT

FROM OPENDATASOURCE(

'MSDAORA',

'Data Source=ORCL;User ID=SYSTEM;Password=manager'

)HKDYS_HD_HKDY

--在sqlserver中创建与oracle数据库中的表同名的表

select into JOBS from

OPENDATASOURCE(

'MSDAORA',

'Data Source=GE160;User ID=daimin;Password=daimin'

)DAIMINJOBS

select from JOBS

--2、方式

--在master数据库中查看已经存在的链接服务器

select from sysservers

EXEC sp_addlinkedserver

@server = 'GE160',

@srvproduct = 'Oracle',

@provider = 'MSDAORA',

@datasrc = 'GE160'

exec sp_addlinkedsrvlogin 'GE160', false,'sa', 'daimin', 'daimin'

--要在企业管理器内指定登录帐号

exec sp_dropserver GE160

select from GE160DAIMINJOBS

delete from GE160DAIMINJOBS

--备注:引用ORACLE服务器上的表时,用户名称与表名一定要大写字母。

SELECT

FROM OPENQUERY(GE160, 'SELECT FROMDAIMINJOBS')

--3、方式

SELECT a

FROM OPENROWSET('MSDAORA',

'GE160';'DAIMIN';'DAIMIN',

DAIMINJOBS) AS a

ORDER BY aJOB_ID

--4、方式 ODBC

--ODBC方式比较好办

SELECT A

FROMOPENROWSET('MSDAORA','GE160';'DAIMIN';'DAIMIN', --GE160是数据源名

DAIMINJOBS) AS A

ORDER BY AJOB_ID

sqlplus 中直接敲入存储过程代码(create or replace procedure ), / 结束,\x0d\如果代码没有错误,该过程就被保存到数据库中。 \x0d\可以用 exec 过程名 运行。\x0d\\x0d\如果是plsql developer之类的工具,那更简单,编辑完存储过程后,有运行按钮,点击即可。

有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据 或者访问其他oracle数据库上的数据 要想完成这些 *** 作 我们首要的是创建数据库链接

数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上 并且像 *** 作本地数据库一样 那么怎么创建数据库链接呢我现在有两种方法可以实现

第一种 在 sqlserver 企业管理器中 建立 这个比较简单的 首先在 安全性 〉数据库链接 上点右键  在出现的菜单中点 新建数据库链接  然后会d出一个界面 需要我们填写的有 链接服务器(这是一个名字 自己根据情况自行定义 以后就要通过他进行远程访问了) 提供程序名称(这个就是选择数据驱动 根据数据库类型来选择 不能乱选 否则链接不上的) 数据源(对于sqlserver就是远程数据库服务器的主机名或者IP 对于 oracle 就是在 oracle net config 中配置的别名) 安全上下文用户和口令(也就是远程服务器的用户和口令)

第二种 利用系统存储过程

创建一个sqlserver对sqlserver的数据库链接

exec sp_addlinkedserver link_northsnow SQLOLEDB 远程服务器主机名或域名或ip地址

exec sp_addlinkedsrvlogin link_northsnow false null 用户名 用户口令

创建一个sqlserver对Oracle的数据库链接

exec sp_addlinkedserver link_ora Oracle MSDAORA oracle数据库服务器别名

exec sp_addlinkedsrvlogin link_ora false sa 用户名 用户口令

有了数据库链接我们就可以使用了 对于sqlserver和oracle中的使用方法是有区别的

对于sqlserver

create view v_lhsy_user as select from link_northsnow lhsy dbo sys_user

select from v_lhsy_user

其中lhsy为远程的数据库名

sys_user为表名

对于 oracle

create view vvv as select from link_ora NORTHSNOW SYS_USER

select from vvv;

其中northsnow为远程oracle数据库服务器的一个用户名 SYS_USER为该用户在该服务器上的一个表 要非常注意的是 数据库链接(link_ora)后面有两个点( ) 再往后面必须全部大写 查询的对象一般为表格或者视图 不能查询同义词

要想删除数据库链接 也有两种方法

一种是在企业管理器中 *** 作 这个简单

另一种是用系统存储过程

lishixinzhi/Article/program/SQLServer/201311/22533

Oracle全文检索配置方法:

1检查数据库是否具有全文检索功能(这是针对已经建成使用的数据库)

查看用户中是否存在ctxsys用户,查询角色里是否存在ctxapp角色。以上两个中的1个不满足(不存在),则说明没有装过全文检索功能。

使用contains函数的时候,若没有全文检索则会报错的。

2若没有,则需要手动建立,先建立全文检索要使用的空间

sqlplus / as sysdba  --进入控制台

create tablespace Idx_ctxsys datafile '/oradata/sg186fx/ctxsys01dbf size 10240M autoextend on next 32M maxsize 20480M;--创建全文检索使用的表空间

3创建全文检索使用的用户和角色及相应的包,则需要执行oracle自带的一个脚本:cd $ORACLE_HOME/ctx/admin/catctxsql

还是在sqlplus中执行:

@/ctx/admin/catctxsql ctxsys Idx_ctxsys temp nolock

在执行这个脚本的时候,输入了几个参数,第一个参数ctxsys为ctxsys用户的密码

第二个参数Idx_ctxsys为ctxsys用户要使用的表空间

第三个参数temp为ctxsys用户使用的临时表空间

第四个参数nolock为ctxsys用户处于解锁状态。

4创建完成后,要登录ctxsys用户

connect ctxsys/ctxsys

执行以下脚本:@/ctx/admin/defaults/drdefussql(这是个很重要的脚本,后面创建索引会使用该脚本创建的信息)

5创建全文索引语法分析器

先要明确使用全文索引的用户,我要使用全文索引的是sgpm用户

因此

grant execute on ctxsysctx_ddl to sgpm with grant option;

connect sgpm/sgpm

设置语法分析器:

exec ctx_ddldrop_preference('chinalexer');

exec ctx_ddlcreate_preference('chinalexer','chinese_lexer');

设置词法属性:

exec ctx_ddldrop_preference('idx_c_store');begin

ctx_ddlcreate_preference('idx_c_store','BASIC_STORAGE');

ctx_ddlset_attribut('idx_c_store','I_TABLE_CLAUSE','tablespaces  Idx_ctxsy');

ctx_ddlset_attribute('idx_c_store','I_INDEX_CLAUSE','tablespace  Idx_ctxsy compress 2');

end;

/

6创建索引

create index sgpmidx_c_cons_name on sgpmc_cons(cons_name) indextype is ctxsyscontext parameters('lexer chinalexer storage idx_c_store');

7同步索引

variable jobno number;

begin

dbms_jobsubmit(:jobno,'pkg_sp_toolsp_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');  --执行的是个性化方法。

end;

/

普通的就是用:

exec ctx_ddlsync_index('idx_c_cons_name');

到此,全文检索创建成功,contains函数就可以正常使用了。

注意:创建的过程中会出现ORA-29879:cannot create multiple domain index on a column listusing same indextype ,这说明在其他用户下已经建立了该索引。

以上就是关于Pro*c链接oracle数据库全部的内容,包括:Pro*c链接oracle数据库、Oracle数据库服务器配置步骤、oracle怎么配置数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9705318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存