oracle连接:客户端与服务端。
客户端有2个配置文件 一个是tnsname, 一个是sqlnet,配套的还有相应的环境变量tns_admin我理解tnsnames.ora配置文件,其实就是个给远程连接搞个别名对照表吧(当然还有些访问方式方面的参数等),sqlnet.ora是个辅助性配置文件
我参照下文完整配置了客户端,(配置文件的路径略有调整,我调整到 E:\Tool\instantclient_12\NETWORK\ADMIN)
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的错误解决办法
多次安装后,各种错误,干脆全部删除:
还有,oem 安装过程中,提示有些问题,我一时用不到,查了到一个文档,没看,先记录一下:Oracle OEM 重建 及案例说明
导入数据:用sqlplus 导入:Oracle使用sqlplus导入大文件sql脚本
-
oracle_01653
-
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.