zoukankan      html  css  js  c++  java
  • oracle之网络

    Oracle 网络

    sqlplus sys/123123@192.168.143.90:1521/urpdb as sysdba

    15.1 Oracle Net 基本要素:

    15.1.1 服务器端的listener (监听器)

    1)listener:在oracle server 上启动,负责接收user process 并派生server process ,与user process 建立session
    2)建立listener :通过 netca 或netmgr
    3)listener的注册:oracle server信息,有动态注册和静态注册两种
    4)listener的启动/关闭/查看lsnrctl start|stop|status
    5)$ORACLE_HOME/network/admin/listener.ora 配置程序,动态注册可以不使用这个配置程序。


    15.2 客户端链接:

    1)$ORACLE_HOME/network/admin/tnsnames.ora 配置文件。
    如:
    myoracle =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = timran11g)
    )
    )

    2) 注意几个地方
    2.1 HOST=目标机的IP,如果是windows平台,习惯使用主机名。PORT=1521这是动态注册的默认端口号。
    2.2 SERVICE_NAME 是目标机的db_name.db_domain 单实例下一般与instance_name同名。
    2.3 myoracle是连接符,代表的是等号后面的网络连接描述,代表了对三个要素(ip地址,端口号,server_name)的网络描述。为便于记忆,它也常常和SERVICE_NAME同名。但含义不同。

    C:Documents and Settings imran>sqlplus sys/oracle@myoracle as sysdba

    试试没有配置tnsnames.ora下的轻松连接模式

    C:Documents and Settings imran>sqlplus scott/scott@192.168.0.88:1521/timran11g

    15.3 lisenter 注册

    1)动态监听:listener 采用的是默认端口(1521),当实例启动时,由pmon 每分钟自动将service name,本机的1521端口号注册到listener
    2)静态监听:当listener 一般使用的是非标准端口(如1522),在listener.ora的文件里手工注册(添加GLOBAL_DBNAME 和instance name)

    15.3.1 监听器的动态注册和静态注册

    静态注册:
    1)静态注册不需要数据库打开,通过读取listener.ora的静态注册描述完成监听器的注册,因为不需要数据库open,所以如果服务器端一旦启动了静态监听,便可以通过sqlplu以sys用户连接到服务器,实现远程启动/关闭数据库的任务。
    2)静态注册可以使用用户指定的端口号(非1521),相对隐蔽,安全。
    3)静态注册在一些特殊场合,如使用数据库复制技术时是很有用处的。

    动态注册:
    1)需要数据库打开才能注册成功,所以动态注册无法使用sysdba身份远程启动数据库。一般都是通过远程TELNET先以root登录服务器,这时你已经在服务器本地了,再转入oracle以sysdba身份打开数据库。之后监听器才可以进行动态注册。
    2)使用标准1521端口,自动注册。
    3)可以不使用listener.ora,因为动态注册由PMON后台进程自动注册信息,PMON每60秒查看listener进程是否启动,启动了就注册相关服务器信息。

    例:静态注册监听器一定要描述listener.ora,有两种方法:

    第一种 静态和动态都使用1521端口注册。

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

    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME= urpdb)
    (ORACLE_HOME = /u01/oracle)
    (SID_NAME = urpdb)
    )
    )


    start|stop|status---静态监听器

    [oracle@timran admin]$ lsnrctl start|stop|status


    第二种,静态注册监听器使用其他端口,如1522端口。

    LSN2 =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1522))
    )
    )

    SID_LIST_LSN2 =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME= timran11g)
    (ORACLE_HOME = /u01/oracle)
    (SID_NAME = timran11g)
    )
    )


    start|stop|status---静态监听器lsn2

    [oracle@timran admin]$ lsnrctl start|stop|status lsn2

    ...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.66)(PORT=1522)))
    Services Summary...
    Service "prod" has 1 instance(s).
    Instance "prod", status UNKNOWN, has 1 handler(s) for this service...
    The command completed successfully

    注意:端口是1522,且status UNKNOWN 这两个信息都说明监听是以静态注册的


    客户端的tnsnames.ora中的静态注册描述部分

    lsn2 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.88)(PORT = 1522))
    )
    (CONNECT_DATA =
    (SERVICE_NAME =timran11g)
    )
    )

    ==============
    THREE DAY
    ==============


    *考点:

    1)如果没有使用RAC,那么监听器必须与实例在同一台主机上运行。在RAC环境下,集群中任何主机的任何监听器作用都是一样的。
    2)如果监听器停止运行,那么不能启动任何新的服务器进程,但不会影响先前已经建立的会话。

    15.4 配置共享连接模式:sharded server mode

    服务器端的几个参数

    dispatchers 调度进程数,以此参数一次性作为dispatcher process预先启动。一个despatcher process理论上可以支持256个user process请求。

    max_dispatchers 此参数规定了dispatcher process可以设置的最大数量,dispatchers<=max_dispatchers

    shared_servers 共享服务器进程最少启动的个数,与dispatcher process数有关 最大不超过shared_server_sessions

    max_shared_servers:最多启动几个shared server,是由oracle根据负载来自动分配

    shared_server_sessions 此参数是所有session可使用的共享进程的最大值,指定所有的shared server可以使用的session数

    SQL> alter system set dispatchers='(protocol=tcp)(dispatchers=3)';
    SQL> alter system set shared_servers=3;
    SQL> show parameter dispatcher

    NAME TYPE VALUE
    ------------------------------------ -----------
    dispatchers string (protocol=tcp)(dispatchers=4)
    max_dispatchers integer

    SQL> show parameter shared_server

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    max_shared_servers integer
    shared_server_sessions integer
    shared_servers integer 3

    查看状态:
    [oracle@timran ~]$ ps -ef |grep ora_d0
    oracle 4647 1 0 12:05 ? 00:00:00 ora_d000_timran11g
    oracle 4803 1 0 12:15 ? 00:00:00 ora_d001_timran11g
    oracle 4807 1 0 12:15 ? 00:00:00 ora_d002_timran11g
    oracle 4811 1 0 12:15 ? 00:00:00 ora_d003_timran11g
    oracle 4815 3303 0 12:15 pts/2 00:00:00 grep ora_d0

    [oracle@timran ~]$ ps -ef |grep ora_s0
    oracle 4743 1 0 12:08 ? 00:00:00 ora_s000_timran11g
    oracle 4747 1 0 12:08 ? 00:00:00 ora_s001_timran11g
    oracle 4751 1 0 12:08 ? 00:00:00 ora_s002_timran11g
    oracle 4827 3303 0 12:15 pts/2 00:00:00 grep ora_s0

    C:Documents and Settings imran>sqlplus sys/system@timran11g as sysdba

    SQL> select circuit,dispatcher,status from v$circuit;

    CIRCUIT DISPATCH STATUS
    -------- -------- ----------------
    36F80678 3925F5AC NORMAL


    查看监听dispatcher是否注册到监听服务器中:
    lsnrctl services


    [root@timran ~]# netstat -anp |grep lsn

    客户端:tnsnames.ore
    1(SERVER = DEDICATED): 表示此连接使用DEDICATED SERVER MODE 缺省的配置。
    2(SERVER = SHARED): 表示此连接使用SHARED SERVER MODE, 如果服务器端未配置dispatchers, 此连接失败
    3 不做任何说明: 如果服务器端配置了dispatchers,SHARED SERVER MODE优先。

    SH =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.50)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = SHARED)
    (SERVICE_NAME = orcl)
    )
    )

    DED =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.50)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = dedicated)
    (SERVICE_NAME = orcl)
    )
    )

    MO =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.50)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = urpdb)
    )
    )

    1.查询SID:select userenv('sid') from dual;
    2.查询PADDR:select SID,PADDR from v$session where sid=1628;
    3.查询系统进程:select ADDR,SPID from v$process where addr='514D8504';
    4.ps -ef |grep

  • 相关阅读:
    agc015D A or...or B Problem
    agc016E Poor Turkeys
    CTSC2016时空旅行
    假期的宿舍[ZJOI2009]
    上白泽慧音(luogu P1726
    小K的农场(luogu P1993
    Cashier Employment(poj1275
    Intervals(poj1201
    序列分割[Apio2014]
    特别行动队[APIO2010]
  • 原文地址:https://www.cnblogs.com/jinxf/p/9171293.html
Copyright © 2011-2022 走看看