Oracle数据库配置管理(一)

Oracle配置管理:

   我们前面学习了安装oracle以及创建数据库,如果想要将客户端与服务器连接起来,这就需要学习数据库的连接配置。在数据库的启动过程中需要打开控制文件,并利用控制文件打开数据文件、重做日志文件,从而打开数据库。本次文档给大家介绍连接配置,此外还有日志文件的原理及操作,以及如何使用和操作数据字典视图。

我们前面学习了安装oracle以及创建数据库,如果想要将客户端与服务器连接起来,这就需要学习数据库的连接配置。在数据库的启动过程中需要打开控制文件,并利用控制文件打开数据文件、重做日志文件,从而打开数据库。本次文档给大家介绍连接配置,此外还有日志文件的原理及操作,以及如何使用和操作数据字典视图。

  • Oracle客户端与服务器端的通信机制

Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接,服务器端配置监听器,客户端配置网络服务名。

  1. oracle net协议

Oracle通过oracle net协议实现客户端与服务器端的连接及数据传递。Oracle net是同时驻留在服务器端和客户端上的一个软件层,它封装了TCP/IP,负责建立与维护客户端应用程序到数据库服务器的连接。有协议就要有相应的端口,所以oracle NET有个默认的侦听端口1521。

客户端发出的请求首先通过oracle net协议转换,转换成可以通过网络传输的信息,通过tcp/ip网络将请求传输到数据库服务器端,服务器端收到客户端请求后通过oracle net协议转换,将请求转换成数据库可以解释执行的本地指令,并在服务器端执行,并将结果通过tcp/ip和oracle  net协议传输给客户端显示。

 

2、客户端与服务器端的连接过程

Oracle服务器通过一个名为“oracle  net监听器”的组件接收来自客户端的连接请求,监听位于服务器端的一个后台进程。发送的客户端连接请求,首先被服务器的监听器所侦听,并交给对应的数据库实例,从而建立起客户端与服务器的连接。连接建立后,客户端与服务器端就可以直接进行通信,不需要监听器参与。要实现监听器对客户请求的监听,需要对监听器进行配置。

Oracle网络服务名是一个标识符,代表客户端连接服务器的配置信息。

客户端与服务器端的连接过程如下:

  1. 在服务器端有一个常驻的监听器,监听客户端发出的连接请求。
  2. 用户在客户端使用(企业管理器或sql工具),输入用户名、口令及网络服务名,或在sql命令行中输入类似“CONNECT username/password@net_service_name”的请求。
  3. 客户端查看网络服务配置文件tnsnames.ora文件,将网络服务名映射为包含oracle服务器地址、监听端口和全局数据库名的连接描述符。
  4. 客户端根据连接描述符定位监听器,并通过网络连接信息传递给监听器。
  5. 监听器查询监听配置文件listener.ora,找出所要连接的服务器。
  6. 客户端和服务器开始通信。

 

配置和管理Oracle网络配置的工具常见的有以下几种:

netca方式:

查看监听文件

开启新的监听器

查看监听器状态

netmgr方式:

添加监听器即可

  1. 命令方式

修改vim /opt/oracle/product/11.2/db_1/network/admin/listener.ora

增加新的侦听器,代码如下:

开启新的监听器

上面红框中的代码the  listener supports no services显示没有任何服务注册到该监听器上,这与监听和数据库实例的启动先后顺序有关。

 

解决方法:监听启动和数据库实例启动的顺序

根据前面的知识,启动完数据库实例后,启动监听,在连接数据库时,只有这二者兼备,oracle才能向外提供服务。

监听和实例启动顺序的先后会对二者之间的工作协调产生影响,具体如下:

 

先启动监听,后启动实例:此时远程客户端连接实例是正常的,不会有问题,因为监听先启动,在启动实例时后台进程PMON会向监听注册服务器,当用户请求服务时,两者的协调工作已准备就绪。

先启动实例,后启动监听:如果监听刚启动,用户马上连接实例,可能会报“监听程序当前无法识别连接描述符中请求的服务”的错误,原因在于PMON还没来得及向监听注册实例服务。但是这个问题只会存在很短的一段时间,再连接就不会有问题了,为什么等一会就好了呢?因为PMON每隔一段时间都会看有无服务需要向监听注册,此时若监听已启动,PMON就能注册成功,二者的协调工作就准备就绪了。

有没有办法解决很短的一段时间内的这个问题呢?答案是一定的。就是以静态注册的方式,即将实例的服务描述添加到listener.ora,这样只要启动监听,对应的服务在监听中就注册了。这是只要实例正常启动完成,就可以对外提供服务器了。在Listener.ora代码中添加如下代码即可。

4、客户端的连接

客户端连接到数据库服务器必须知道一些信息,如数据库服务器的主机名或ip地址,使用的通信协议、端口号、以及对应的数据库服务名,这些需要在客户端设置

在win7上安装oracle客户端软件

双击上图中第二个文件安装

安装完成时候会在c:盘下生成oracle文件夹:

找到c:\oracle\product\11.2.0\client_lite\network\admin\tnsnames.ora文件,并修改,修改结果如下:

注意:需要在hosts文件里面添加解析

在win7客户端上打开命名行,执行命令连接

已经远程连接到oracle服务器

  • 管理控制文件

控制文件是非常重要的文件,主要掌握以下内容:

  1. 了解控制文件在数据库启动的作用
  2. 获得控制文件信息
  3. 查看控制文件中所存内容的信息
  4. 存储多重控制文件
  5. 备份和恢复控制文件控制文件在数据库启动的作用

对于dna来讲,oracle数据库控制文件是非常重要的文件,他是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息。其它任何用户都无法修改控制文件,只有数据库运行过程中,数据库实例可以修改控制文件中的信息。控制文件主要包括以下内容:

  1. 数据库名称,一个控制文件只能属于一个数据库。
  2. 数据库创建时间。
  3. 数据文件的名称、位置、联机、脱机状态信息。
  4. 重做日志文件的名称、位置及归档信息。
  5. 所有表空间信息。
  6. 当前日志序列号。
  7. 最近检查点信息。

 

控制文件在数据库启动的mount阶段被读取,数据库启动与控制文件的关系如下图:

在数据库启动时首先使用默认规则找到并打开参数文件,在参数文件中含有控制文件的位置信息,打开控制文件后,会通过控制文件中记录的各种数据库文件的位置打开数据库,从而启动数据库到可用位置,所以在数据库启动后,在数据库的运行过程中,数据库服务器可不断地修改控制文件中的内容,所以在数据库被打开的阶段,控制文件必须是可读写的,但是其他任何用户都无法修改控制文件,只有数据库实例可以修改控制文件中的信息。

获得控制文件信息

可以从V$CONTROLFILE视图中查看控制文件信息,包括控制文件名称。

还可以从V$PARAMETER视图中查看

查看控制文件中所存内容的信息

从截图当中可可以看到控制文件中存放了创建数据库的信息、重做日志信息、数据文件及归档日志文件记录等信息。这些有价值的信息用于数据维护和管理,很多数据字典视图是从控制文件中获得的信息。

 

存储多重控制文件

由于控制文件非常重要,所以要求控制文件不能只有一个,通常数据库中控制文件要多于3个,并且存放在不同的磁盘上,这种使用控制文件的方法也称为控制文件的多路复用。实现多重的一个方法就是通过复制控制文件到多个位置并修改初始化参数文件中的CONTROL_FILES参数,使之包含所有控制文件名称。需要注意,当存在多个控制文件时,oracle会同时更新所有的控制文件,但是仅对CONTROL_FILES中所列举的第一个控制文件进行读取操作。

举例说明实现多路复用控制文件的方法:

数据库状态为打开状态,修改SPFILE中的CONTROL_FILES参数。

关闭数据库

使用操作系统命令将文件复制到新的位置

重新启动实例

备份和恢复控制文件

1. 备份控制文件

有两种方式备份:一种是备份为二进制文件,另一种是备份为脚本文件,常用的备份为二进制文件的方法(备份二进制文件即对控制文件进行复制)

使用oracle 用户登录,

先执行 mkdir  /opt/oracle/oradata/orcl/backup

2. 恢复控制文件

删除控制文件control01.ctl(模拟损坏)

启动数据库(报错)

执行命令恢复

查看三个文件都回来了(因为只要有一个文件不丢,就可以执行上面的命令,然后就会生成另外的两个文件),数据库也可以启动。

或者:

如果control01.ctl丢失,可以直接使用control02.ctl将control01.ctl替换,或者复制一份改名为control01.ctl即可。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值