【Oracle学习14】 Oracle网络

330 阅读1分钟

##【Oracle学习14】 Oracle网络

Defining Oracle Net Services Components

14.1 配置Oracle Net服务

相关知识:

  • 数据库实例名: 是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。
查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询。
数据库实例名与ORACLE_SID
虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。
ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。

SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
orcl
SQL> select value from v$parameter where name = 'service_names';
VALUE
---------------------------------------------
orcl

SQL> show parameter service_name;

NAME         TYPE      VALUE
----------- ---------- -------
service_names  string   orcl

14.1.1 Oracle Net 和客户端-服务器范例

Oracle Net Services: Overview

Oracle Net Listener: Overview

Establishing Oracle Network Connections

14.1.2 建立会话

会话建立过程

  • 连接本地: 唯一不要数据库侦听器。
  • 远程链接: listener要开启,并且实例要open
-- 假设oracle 地址为192.168.56.103
nc -z 192.168.56.103 1521
tnsping 192.168.56.103:1521/orcl
sqlplus [username[/password[@database]]]
sqlplus sys/oracle@ORCL@192.168.56.103 as sysdba
sqlplus sys/oracle as sysdba
sqlplus  scott/tiger@orcl
sqlplus  scott/tiger@oracldb01:1521/orcl

-- instance name 
SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
orcl

SQL> show parameter service_name;
NAME         TYPE      VALUE
----------- ---------- -------
service_names  string orcl

SQL> select value from v$parameter where name = 'service_names';
VALUE
--------------------------------------------------------------------
orcl

14.1.3 创建数据库侦听器

监听器在listener.ora中配置,位于$ORACLE_HOME/network/admin/ 目录。

  • listener.ora: 监听配置文件,可同时配置多个监听。

listener.ora:

$cd  $ORACLE_HOME/network/admin/ 
$ls -l 
/u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
/u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora

-- 示例文件
$ls -l samples/
-rw-r--r--. 1 oracle oinstall  3867 Sep  9  1997 listener.ora
-rw-r--r--. 1 oracle oinstall 32844 May 21  2014 sqlnet.ora
-rw-r--r--. 1 oracle oinstall  2939 Feb 13  1997 tnsnames.ora

$cat /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.103)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

启动/停止监听

  • 用netca 创建监听。
  • lsnrctl : stop,start,status 监听。
  • listener.ora : 可以配置多个监听
--创建监听
netca 
-- 查看
listener.ora
--多个监听可指定名称
lsnrctl start LISTENER1  
lsnrctl status LISTENER1  

14.1.4 动态服务注册

oracle数据库启动可尝试动态服务注册。 侦听注册(LREG:Listener Registration Process)注册服务。

14.1.5 共享服务器

  • 专用服务器体系:
  • 共享服务器体系:

User Sessions: Dedicated Server Process

User Sessions: Shared Server Processes

SGA and PGA Usage

Shared Server Configuration Considerations

14.2 使用工具配置和管理Oracle 网络

  • listener.ora: 监听配置件
  • tnsnaes.ora: 连接别名文件
  • silent.ora : 连接规则文件(黒白名单) 文件位置: $ORACLE_HOME/network/admin/ 。
  • 动态监听: 启动监听后 启动实例,过一段时间就自动注册上。
  • 静态监听: 启动监听后,会马上去找相关联的实例。 SID-Listenxx

Defining Oracle Net Services Components

14.2.1 Net Manager

  • netmgr : net manager

Using Oracle Net Manager

14.2.2 Net Configuration Assistant

  • netca : net configureation assistant

Using Oracle Net Configuration Assistant

14.2.3 侦听器控制实用程序

  • lsnrctl : 用法 lsnrctl [ status|start|stop ] [listener_name]
$lsnrctl [ status|start|stop ]  [listener_name]
$lsnrctl
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start           stop            status          services        
servacls        version         reload          save_config     
trace           spawn           quit            exit            
set*            show*       

14.2.4 TNS_ADMIN 环境变量

  • tnsnaes.ora: 连接别名文件

tnsnames.ora

cd $ORACLE_HOME/network/admin/ 
cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.103)(PORT = 1521))


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

TNS_ADMIN:

export TNS_ADMIN='/Users/teachertao/oracle'

14.3 配置客户端网络

Naming Methods

14.3.1 Easy Connect 名称解析

Easy Connect

14.3.2 本地命名名称解析

Local Naming

14.3.3 目录命名和外部命名

Directory Naming

External Naming Method

14.3.4 测试 Oracle Net 的链接性

Testing Oracle Net Connectivity

$tnsping 192.168.56.103:1521/orcl
$tnsping orcl
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 13-FEB-2020 06:02:14
Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.103)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)

14.4 理解数据库驻留连接池

14.5 配置数据库之间的通信

Configuring Communication
Between Databases

Connecting to Another Database

CREATE DATABASE LINK <remote_global_name>
CONNECT TO <user> IDENTIFIED BY <pwd>
USING '<connect_string_for_remote_db>';

14.6 总结