Summer Blog

Linux网络基础

网络模型

OSI TCP/IP Linux tcp协议
应用层 应用层 应用程序 HTTP,FTP
表示层 - - -
会话层 - - -
传输层 传输层 操作系统 TCP, UDP
网络层 网络层 操作系统 IP
链路层 链路层 设备驱动程序与网络接口 ARP, RARP
物理层 - 设备驱动程序与网络接口 -

网络层

IP地址

IP封包

每一层协议在下一层的基础上加入自己的首部信息,组成自己的数据报文

data-package

Redis命令

管理redis键的命令

Oracle错误码

最近才开始使用Oracle,踩了很多坑比较惨兮兮的,这里我来记录一下遇到的错误码,做一个总结吧。

ORA-12505

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

项目部署到生产环境一启动就遇到了这个问题,查了百度上说的是SIDsSERVICE_NAME不配对。然后就去找DBA解决,以为是人家提供的数据库配置不对。

结果问了DBA是JDBC链接串配的有问题。因为生产环境的Oracle做了高可用多节点的方式部署,所以JDBC连接串不能使用简单的IP形式,而是要使用TNS连接多节点的Oracle。下面是有4个ip和2个服务名的链接串模板。这个具体需要DBA提供,要把这一大串东西放到jdbc:oracle:thin:@后面。

(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)
  (DESCRIPTION=(ENABLE=BROKEN)(CONNECT_TIMEOUT=3)(RETRY_COUNT=2)
      (ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)
      (ADDRESS=(PROTOCOL=TCP)(HOST=IP1)(PORT=1521))
      (ADDRESS=(PROTOCOL=TCP)(HOST=IP2)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME=SN1))
  )
  (DESCRIPTION=(ENABLE=BROKEN)(CONNECT_TIMEOUT=3)(RETRY_COUNT=2)
     (ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)
     (ADDRESS=(PROTOCOL=TCP)(HOST=IP3)(PORT=1521))
     (ADDRESS=(PROTOCOL=TCP)(HOST=IP4)(PORT=1521))
      )
      (CONNECT_DATA=(SERVICE_NAME=SN2))
  )
)