Oracle TNS配置 与程序连接Oracle数据库

Oracle 专栏收录该内容
7 篇文章 0 订阅

Oracle11g安装完整教程并创建数据库实例

连接数据库

先安装Oracle Client 这会安装Oracle的ODBC驱动。

使用“PLSQL Developer 12绿色汉化版”打开界面,输入连接信息即可。

先要创建一个用于连接用户

权限设置为连接,最好还要设置有创建表的权限,不然这个用户无法创建表也挺扯淡的。

create user zhangsan identified by 123456;
grant create any table to zhangsan; 

表空间权限

no privileges on tablespace 'USERS'

grant  resource to ccrt;

plsql dev中Dynamic Performance Tables not accessible分析解决

Oracle字符集基本原理

查看数据库字符集

select userenv('language') from dual;

C++连接Oracle远程数据库

本机要装Oracle Client客户端,装了客户端以后ODBC数据源里才可以配置连接数据源:

TNS

如果通过TNS连接Oracle,那么客户端必须安装Oracle client程序

TNS no listener无监听程序

解决方法(操作Oracle数据库所在的机器)

    步骤一:配置客户端tnsnames.ora

...\instantclient-basic-win32-11.2.0.1.0\instantclient_11_2\NETWORK\ADMIN
  • 1

这里写图片描述
    步骤二:配置服务端listener.ora

...\product\11.2.0\dbhome_1\NETWORK\ADMIN
  • 1

这里写图片描述

    步骤三:重启一下监听(管理员命令行):lsnrctl stoplsnrctl start 

 

listener.ora配置文件

配置文件位置:

D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora

配置文件主要内容:

IP:这个如果是本机最好写成本机计算机名:carea-PC,不要写成localhost或者具体的IP

查看本机计算机全名:我的电脑,属性,计算机全名

否则会出现如下错误:

“Enterprise Manager配置失败-监听程序未启动或数据库服务未注册到该监听程序解决办法”

 

PORT

SID

对应的服务端服务:

TNSListener

配置文件的主要作用:

  • 用来供远程客户端访问本地数据库,具体过程如下:
    • 远程客户端通过当地的TNS文件:IP/PORT/SID来到本机
    • 本机的TNSListener通过跟本机的listener.ora中的内容匹配:
    • 全局数据库名称= find(ip/port/sid)得到一个唯一的数据库实例
  • 访问方式为IP/PORT/TNS(SERVICE_NAME/SID),SID主要用来映射本地“全局数据库名”

SID配置:

 

监听配置:

 

正常的配置如下:

# listener.ora Network Configuration File: D:\app\product\11.2.0\dbhome_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = D:\app\product\11.2.0\dbhome_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:D:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")

)

)

 

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-MM5L6U6)(PORT = 1521))

)

)

 

ADR_BASE_LISTENER = D:\app\carea

tnsnames.ora配置文件

位置:

    • 本机如果装了oracle数据库,则配置文件:
      • D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
    • 如果本机只装了客户端,则配置文件:
      • D:\app\Administrator\product\11.2.0\client_2\network\admin
    • 还可以自己设置配置文件的位置:
      • 设置环境变量:%TNS_ADMIN%

 

作用:

  • 用来本地客户端连接远程Oracle数据库
  • 其中每一个分支里面有对方的IP/PORT/SID(SERVICE_NAME)信息
  • 连接本地数据库也需要此配置文件
  • 修改此文件不需要重启任何服务

 

内容:

远程数据库的基础信息:

  • IP:这个应该写成具体的IP,哪怕是本机,不要写localhost这样的地址
  • PORT
  • SID:SERVICE_NAME

完整示例:

# tnsnames.ora Network Configuration File: D:\app\product\11.2.0\dbhome_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

 

LISTENER_ORCL =

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

 

 

ORACLR_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(CONNECT_DATA =

(SID = CLRExtProc)

(PRESENTATION = RO)

)

)

 

ORCL = 【这个名字是可以重命名的,用于本地使用】

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl) 【这个名字是固定的,是对方机器上的数据库服务名】

)

)

TNSListener service无法启动

 

启动不起来的原因:

可能是listener.ora配置文件添加了一些其他IP地址(非本机IP地址)

解决方法:

将非本机IP删掉

Oracle 'no privileges on tablespace 表空间名称' 问题解决

create user bryan identified by bryan;

grant create session to bryan;

grant create table to bryan;

connect  bryan/bryan;

create table bryan_employees

(

     emp_no number,

     emp_name varchar2(50)

);

创建表时会报如下错误:'no privileges on tablespace 'USERS'

原因在于users表空间中没有为bryan用户提供配额空间(在此默认的表空间为users)

有两种解决方案:

1.为bryan用户在users表空间上设置配额就可以了

alter user bryan quota 4M on users;       //quota:配额,限额

2.GRANT UNLIMITED TABLESPACE TO bryan;

 

C++ OTL 读写Oracle数据库

Oracle数据库C++ OTL插入乱码解决:

1 C++程序运行的机器设置注册表计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1 NLS_LANG AMERICAN_AMERICA.ZHS16GBK ;

2 C++代码插入数据使用UTF8编码;

3 Oracle数据库中的编码为 select userenv('language') from dual; 结果 AMERICAN_AMERICA.AL32UTF8

原理请参考:https://blog.csdn.net/calmreason/article/details/108001111

 

 

 

 

 

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

知乎:C加加辅导袁老师

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值