oracle连接过程中趟过的各种坑

本文详细介绍了Oracle数据库的客户端和服务端配置过程,包括监听器、tnsnames.ora和sqlnet.ora配置文件的作用和设置方法。同时探讨了字符集问题、表空间管理以及Spring Boot项目的Oracle连接池配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle连接:客户端与服务端。

客户端有2个配置文件 一个是tnsname, 一个是sqlnet,配套的还有相应的环境变量tns_admin我理解tnsnames.ora配置文件,其实就是个给远程连接搞个别名对照表吧(当然还有些访问方式方面的参数等),sqlnet.ora是个辅助性配置文件

我参照下文完整配置了客户端,(配置文件的路径略有调整,我调整到 E:\Tool\instantclient_12\NETWORK\ADMIN)

ps:sqlplus连接远程Oralce数据库

ps:sqlnet.ora 用在oracle client端,用于百配置连接服务端oracle的相关参数.主要用于配置Oracle查找网络时的一些行为方式。sqlnet.ora可以删除,度当它不存在时,会默认采用tnsnames.ora中的配置,或使用默认配置。我好像一直没改过这个文件。

Listener主要负责下面方面功能:

1、 监听客户端请求

监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程。Windows上名为TNSLSNR,Linux/Unix平台上是lsnrctl。

2、 为客户端请求分配Server Process

监听器只负责接听请求,之后将请求转接给Oracle Server Process。在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)作为代理。

监听器是服务端的事情;tnsname是客户端的事情。

监听器修改 除了配置文件外,还要注意一下注册表

# listener.ora Network Configuration File: D:\javas\Jsoft\oracle\listener.ora
# Generated by Oracle configuration tools.

 LISTENER =
  (ADDRESS_LIST=
	(ADDRESS=(PROTOCOL=tcp)(HOST=tbyf)(PORT=1521))
   )	

 SID_LIST_LISTENER=
   (SID_LIST=
	(SID_DESC=
			#BEQUEATH CONFIG
          (GLOBAL_DBNAME=salesdb.mycompany)
          (SID_NAME=sid1)			
          (ORACLE_HOME=/private/app/oracle/product/8.0.3)
			#PRESPAWN CONFIG
         (PRESPAWN_MAX=20)
	  (PRESPAWN_LIST=
           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
         )
        )
       )

sid 我理解是操作系统和oracle的桥梁,因此,必须在注册表中配置。

我装了11g、10g数据库,不晓得是误操作还是其他原因,注册表被破坏了,不过,注册表删除的部分,有备份,用注册表导出、导入功能,重新导入相关项目

(重新导入注册表相关项)

配置问题

oracle 字符集

Oracle的字符集AL32UTF8与UTF8的区别,字符集修改记录

oracle11 安装中一个小问题:

oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错

修改 oracle xe 默认中文字符集成为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

我们数据库一般设置为ZHS16GBK  可参考: 选择ORACLE数据库字符集   

Oracle 11g 卸载重装时出现的DIM-00019的错误解决办法

多次安装后,各种错误,干脆全部删除:

彻底删除Oracle 11g的方法

还有,oem 安装过程中,提示有些问题,我一时用不到,查了到一个文档,没看,先记录一下:Oracle OEM 重建 及案例说明

导入数据:用sqlplus 导入:Oracle使用sqlplus导入大文件sql脚本

  1. oracle_01653

  2. oracle_12505

oracle_01653

 1 第一步查看表空间  你只用关注fsdb

SELECTtablespace_name,

file_id,

file_name,

round(bytes/ (1024 * 1024), 0) total_space

FROMdba_data_files

ORDERBY tablespace_name;

第二步 查看表空间的使用情况  你只用关注fsdb

SELECTtablespace_name,

file_id,

file_name,

round(bytes/ (1024 * 1024), 0) total_space

FROMdba_data_files

ORDERBY tablespace_name;

 

如果fsdb空间使用超过90%

第三步 查看查询一下表空间是否可以自动扩展(YES or NO

SELECT T.TABLESPACE_NAME,D.FILE_NAME,

D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS

FROM DBA_TABLESPACES T,DBA_DATA_FILES D

WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME

ORDERBYTABLESPACE_NAME,FILE_NAME;

如果

3. 如果表空间不是自动扩展的,那么请设置成自动,SQL如下

alter database datafile'E:\app\Administrator\oradata\webdb\ep.dbf' AUTOEXTEND ON NEXT 100M
 MAXSIZE UNLIMITED;

文件是fsdb的数据文件

4. 如果表空间是自动扩展的,并且已经达到了上限,那么就为表空间增加一个数据文件,SQL如下

SQL> ALTER TABLESPACE "FSDB" ADD DATAFILE'E:\APP\ADMINISTRATOR\ORADATA\WEBDB\ep02.DBF' SIZE 500M

 AUTOEXTEND ONNEXT 50M MAXSIZE UNLIMITED;

oracle_12505:

ORACLE中SID和SERVICE_NAME的区别

查询SERVICE_NAME:show parameter service_names;  

查询sid: select instance_name from v$instance; 

oracle 8以后,建议全部用服务名格式的连接字符串

TNSName:

tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数;
记录客户端访问数据库的本地配置,其实就是定义网络服务.

HikariPool-1 - Connection is not available, request timed out after 30000ms:


spring boot 默认连接池是HikariPool

这个错误,就是从连接池获取不到连接

一个是加大连接池中的最大连接数

一个是把连接池连接空闲时间设置得短一点,比数据库中设置的时间更短,数据库默认好像是100s?

具体可以参见如下链接:

记一次springboot项目报HikariPool-10 - Connection is not available, request timed out after 30000ms的错误及排查

数据库连接异常: HikariPool-1 - Connection is not available, request timed out after 30000ms. 

ORACLE(DEDICATED)式(SHARE)的区别

数据库连接异常: HikariPool-1 - Connection is not available, request timed out after 30000ms.

Oracle专用服务器与共享服务器的区别

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值