《oracle管理4》

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《oracle管理4》相关的知识,希望对你有一定的参考价值。

Oracle NET

 

1.客户端通过@ora10g的名字去tnsname.ora文件获取服务器的具体连接信息

2.客户端通过tnsname.ora中的描述向服务器发出链接请求服务器端

3.服务器的监听器接收到连接请求后,验证请求的服务的有效性

4.服务器端产生一个服务进程和客户端进程建立连接

 

查看会话建立过程:

$ netstat -tlnp | grep 1521

$ sqlplus sys/[email protected] as sysdba

$ netstat -tnp | grep sqlplus

$ kill -9 1234 杀死维护sqlplus的进程

 

 

修改ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0  //第一块网卡
cat /etc/hosts 

修改主机名:
cat /etc/sysconfig/network
cat /etc/hosts   

监听的配置

配置文件:

$ vi $ORACLE_HOME/network/admin/listener.ora

通过netca添加新的监听服务Listener15210,端口使用15210

$ vi listener.ora

$ netstat -tln|grep 1521

$ lsnrctl status listener15210

 

通过netmgr配置高级选项

 

通过lsnrctl命令来启动/停止/查看/重载监听器/服务

lsnrctl start|stop|status|reload|service

指定监听的名称:

$ lsnrctl status listener15210

 

网络环境变化,需要检查listener.ora和/etc/hosts文件

 

netca删除Listener15210

 

 

 

 

实例的配置

静态注册和动态注册

什么是静态注册

就是监听器的配置文件中写明了监听哪个实例 需要配置SID_DESC字段

定位实例的方式可以使用SID_NAME或者SERVICE_NAME来定位

什么是动态注册

就是监听器的配置文件中没写明监听哪个实例

要通过PMON告知监听器要监听的具体实例

PMON是将SERVER_NAME告诉给监听器 这个过程就是注册

默认一分钟PMON注册一次 也就是说启动监听 还没注册时 是无法连接的

添加3种方式,后面的删掉,用文档改写

区分静态注册和动态注册

lsnrctl status

是 ready 就是动态

是 unknow 就是静态

 

静态注册listener.ora文件信息:

$ vi listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

        (SID_DESC =

                (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

                (SID_NAME =ora11g)

        )

  )

$ lsnrctl reload

.....

Services Summary...

Service "ora11g" has 1 instance(s).

  Instance "ora11g", status UNKNOWN, has 1 handler(s) for this service...

状态总是显示未知的,当有请求时,监听器才去确认数据是否存在

 

动态注册

Oracle9i起实例使用动态服务注册来通知监听程序有关其数据库服务的信息。

服务注册依赖PMON 进程向监听程序注册实例信息 注册间隔为1分钟左右

手动注册命令 alter system register;

无需在listener.ora 文件中设置任何信息 此文件可以不存在

 

3种注册方式:

本地默认端口(1521)监听        // 监听和数据库在一起

本地非默认端口监听                   //数据库端设置local_ listener

远程监听                                              remove_listener         

                               

Netca

Netmgr

 

本地非默认端口:(监听端做的事情)

netca创建listener15210,使用15210端口

$ netstat -tlnp | grep 15210

 

写入监听的别名:(数据库端做的事情)

$ cd $ORACLE_HOME/network/admin

$ vi tnsnames.ora

listener15210 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 15210))

  )

  

修改参数:

SQL> ALTER SYSTEM SET LOCAL_LISTENER=listener15210;

SQL> ALTER SYSTEM register;     立即注册(可选)

 

服务信息已添加到新的监听中:

$ lsnrctl status listener15210

客户端指定新端口连接:

$ sqlplus sys/[email protected]:1521/orcl as sysdba 报错

$ sqlplus sys/[email protected]:15210/orcl as sysdba

 

删除配置:

SQL> ALTER SYSTEM SET LOCAL_LISTENER=‘‘;

SQL> ALTER SYSTEM register;

$ vi tnsnames.ora 删除listener15210别名

netca删除15210端口的监听

 

 

 

客户端配置

 

轻松连接:   监听所在的主机,监听工作的端口号,索要连接的数据库 

$ sqlplus sys/[email protected]:1521/orcl as sysdba

适用于临时性的连接

 

本地命名:自己的客户端

查看现有的主机连接字符串

$ cd $ORACLE_HOME/network/admin

$ vi tnsnames.ora

 

$ sqlplus sys/[email protected] as sysdba

@主机连接字符串

使用netca添加新的主机连接字符串orcl192

$ sqlplus sys/[email protected] as sysdba

SQL> select name from v$database;

 

tnsping测试,不需要用户名和口令:

$ tnsping 192.168.0.1:1521/orcl

$ tnsping orcl192

 

解析方法的顺序:

$ vi sqlnet.ora

netca可以修改

 

恢复默认设置:

SQL> alter system set local_listener=‘‘;

SQL> alter sytem register;

 

netca删除不需要的监听和连接配置

 

共享服务器模式

专有服务和共享服务模式

专有模式

 

每个用户进程和服务进程间通过监听器建立连接

进程信息存放于PGA中,也就是说有多少个用户进程就有多少个PGA产生

单单只有进程连接还不足以操作数据库,还需要产生的会话信息

会话信息存储在UGA中,UGA在专有模式中存在于PGA

因为进程和进程间是相互隔离的,所以会话信息也相对独立

这就导致了服务进程只能获知当前用户进程的会话请求信息 只能为当前用户进程服务

 

共享模式

用户进程的请求被监听器接收,监听器不委派服务器进程,而是将调度器信息返回给客户端

调度器将用户进程的请求放入请求队列

多个服务进程中的一个服务进程从队列中获取用户进程的请求,并处理这个用户进程的请求

服务进程处理完后将处理结果放入响应队列,每个调度器都有自己的响应队列

响应队列的信息反馈给对应的调度器

调度器再把服务进程处理的结果返回给用户进程

 

共享模式中的用户进程的会话信息对每一个服务器进程来说都是可见的.

因为共享模式的UGA信息存在于SGA中,所以此时一个用户进程的请求可以由多个服务进程来完成.

 

 

共享服务器的配置 通过初始化参数dispatchers来配置

 

[[email protected] dbs]$ cp spfileorcl.ora  asd      备份重命名

可以通过DBCA来修改

$ lsnrctl service

SQL> show parameter disp

SQL> show parameter shared_server

 

专有模式和共享模式是可以兼容在一起使用的

此时看用户如何选择

 

tnsnames.ora中

ORA10G =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dba.up.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED) # 不写这个值就是按服务器的模式来匹配

   # shared 指定使用共享方式连接

   # DEDICATED 指定使用专有模式连接

      (SERVICE_NAME = raw10g)

    )

  )

 

测试三种模式

 

ORCL_default =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

 

ORCL_dedicated =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

ORCL_shared =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = SHARED)

      (SERVICE_NAME = orcl)

    )

  )

 

测试:

$ sqlplus sys/[email protected]_default as sysdba

$ sqlplus sys/[email protected]_dedicated as sysdba

$ sqlplus sys/[email protected]_shared as sysdba

 

SQL> select SID, SERVER, PROGRAM from v$session where USERNAME=‘SYS‘;

SQL> select distinct sid from v$mystat;

 

管理维护、大数据量导入、备份恢复等工作不适合用共享方式:

SQL> shutdown immediate 共享连接下不能发布管理命令

 

恢复原有设置:

dbca修改为dedicated方式

db link

数据库A访问远程数据库B上面的表:

在数据库A中,使用netca创建主机描述字符串orcl_dblink指向数据库B

$ netca

$ tnsping orcl_dblink

在数据库A中创建数据库链接:

SQL> create database link orcl_dblink_hr connect to hr identified by hr using ‘orcl_dblink‘;

using使用主机描述字符串orcl_dblink

用户和口令都是数据库B上的

db link的名字不要求和主机描述字符串一致

 

访问数据库B中的表:

SQL> select count(*) from [email protected]_dblink_hr;

SQL> select count(*) from hr.employees, [email protected]_dblink_hr;






以上是关于《oracle管理4》的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据库管理

oracle表空间管理

[oracle]Oracle数据库安全管理

[oracle]Oracle数据库安全管理

oracle10g集成管理工具怎样用

Oracle体系结构和用户管理