查看: 1036|回复: 0

[Oracle数据库] Oracle配置管理

发表于 2018-4-3 08:00:08

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

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

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

1、oracle net协议
Oracle通过oracle net协议实现客户端与服务器端的连接及数据传递。Oracle net是同时驻留在服务器端和客户端上的一个软件层,它封装了TCP/IP,负责建立与维护客户端应用程序到数据库服务器的连接。有协议就要有相应的端口,所以oracle NET有个默认的侦听端口1521。
Oracle配置管理
客户端发出的请求首先通过oracle net协议转换,转换成可以通过网络传输的信息,通过tcp/ip网络将请求传输到数据库服务器端,服务器端收到客户端请求后通过oracle net协议转换,将请求转换成数据库可以解释执行的本地指令,并在服务器端执行,并将结果通过tcp/ip和oracle net协议传输给客户端显示。

2、客户端与服务器端的连接过程
Oracle服务器通过一个名为“oracle net监听器”的组件接收来自客户端的连接请求,监听位于服务器端的一个后台进程。发送的客户端连接请求,首先被服务器的监听器所侦听,并交给对应的数据库实例,从而建立起客户端与服务器的连接。连接建立后,客户端与服务器端就可以直接进行通信,不需要监听器参与。要实现监听器对客户请求的监听,需要对监听器进行配置。
Oracle网络服务名是一个标识符,代表客户端连接服务器的配置信息。
Oracle配置管理
客户端与服务器端的连接过程如下:
1)在服务器端有一个常驻的监听器,监听客户端发出的连接请求。
2)用户在客户端使用(企业管理器或sql工具),输入用户名、口令及网络服务名,或在sql命令行中输入类似“CONNECT username/password@net_service_name”的请求。
3)客户端查看网络服务配置文件tnsnames.ora文件,将网络服务名映射为包含oracle服务器地址、监听端口和全局数据库名的连接描述符。
4)客户端根据连接描述符定位监听器,并通过网络连接信息传递给监听器。
5)监听器查询监听配置文件listener.ora,找出所要连接的服务器。
6)客户端和服务器开始通信。

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

Oracle配置管理
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理

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

解决方法:监听启动和数据库实例启动的顺序
根据前面的知识,启动完数据库实例后,启动监听,在连接数据库时,只有这二者兼备,oracle才能向外提供服务。
监听和实例启动顺序的先后会对二者之间的工作协调产生影响,具体如下:

先启动监听,后启动实例:此时远程客户端连接实例是正常的,不会有问题,因为监听先启动,在启动实例时后台进程PMON会向监听注册服务器,当用户请求服务时,两者的协调工作已准备就绪。
先启动实例,后启动监听:如果监听刚启动,用户马上连接实例,可能会报“监听程序当前无法识别连接描述符中请求的服务”的错误,原因在于PMON还没来得及向监听注册实例服务。但是这个问题只会存在很短的一段时间,再连接就不会有问题了,为什么等一会就好了呢?因为PMON每隔一段时间都会看有无服务需要向监听注册,此时若监听已启动,PMON就能注册成功,二者的协调工作就准备就绪了。
有没有办法解决很短的一段时间内的这个问题呢?答案是一定的。就是以静态注册的方式,即将实例的服务描述添加到listener.ora,这样只要启动监听,对应的服务在监听中就注册了。这是只要实例正常启动完成,就可以对外提供服务器了。在Listener.ora代码中添加如下代码即可。
Oracle配置管理
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理

二、管理控制文件

控制文件是非常重要的文件,主要掌握以下内容:
?了解控制文件在数据库启动的作用
?获得控制文件信息
?查看控制文件中所存内容的信息
?存储多重控制文件
?备份和恢复控制文件

1、控制文件在数据库启动的作用
对于dna来讲,oracle数据库控制文件是非常重要的文件,他是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息。其它任何用户都无法修改控制文件,只有数据库运行过程中,数据库实例可以修改控制文件中的信息。控制文件主要包括以下内容:
?数据库名称,一个控制文件只能属于一个数据库。
?数据库创建时间。
?数据文件的名称、位置、联机、脱机状态信息。
?重做日志文件的名称、位置及归档信息。
?所有表空间信息。
?当前日志序列号。
?最近检查点信息。

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

2、获得控制文件信息
1)可以从V$CONTROLFILE视图中查看控制文件信息,包括控制文件名称。
Oracle配置管理
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理

三、管理重做日志文件

重做日志文件也称联机重做日志,目的是恢复数据。
在数据库运行过程中,用户更改的数据会暂时存放在数据库的高速缓冲区中。为了提高写数据库的速度,并不是一旦有数据变化,就把变化的数据写到数据库文件中。频繁的读写磁盘会使数据库系统效率降低,所以,要等到数据库高速缓冲区中的数据达到一定的量或满足一定条件时,DBWR进程才会将变化了的数据写到数据文件中。这种情况下,如果DBWR把变化了的更改写到数据文件之前发生了宕机,那么数据库高速缓冲区中的数据就会全部丢失。如果在数据库服务器重启动后无法恢复这部分用户更改的数据,显然是不可以的。
重做日志就是把变化了的数据首先保存起来,其中LGWR进程负责把用户更改的数据先写到重做日志文件中,这样数据库重新启动时,数据库系统从重做日志文件中读取这些变化了的数据,将用户更改的数据提交到数据库中,写入数据文件。
为了提高磁盘效率和防止重做日志文件损坏,oracle引入了一种重做日志文件结构,如图:
Oracle配置管理
上图可以看出有3个重做日志组,每组包含两个重做日志成员。当第一个日志组写满之后,就会停止写入,而转向第二个日志组,第二个写满后,转向第三个日之组,第三个写满就向第一个日志组写入,oracle以这种循环方式使用重做日志组。
Oracle规定每个数据库至少有两个日志组,每组至少包含一个或者多个日志成员。
使用新的重做日志之前,DBWR进程需要将所有的数据更改写到数据文件中。如果数据库处于归档模式下,当发生日之组切换时,归档进程ARCH会把当前已满的重做日志文件中的数据复制到归档日志中。
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理
Oracle配置管理

四、管理归档日志文件

1、归档日志介绍
Oracle数据库有两种运行方式,归档(ARCHIVELOG)方式和非归档(NO ARCHIVELOG)方式。在非归档方式下,日志切换时直接覆盖以前的重做日志文件,不产生归档日志。数据库在归档方式下运行,在日志切换后,ARCH进程会对自己写满的重做日志文件进行存档。默认情况下,oracle采用非归档的运行方式,主要因为归档方式会给系统带来一定的性能问题,只有当数据库运行在归档方式时,ARCH进程才存在,ARCH进程是oracle的可选后台进程,将日志存档,以便保存对数据库做的所有修改,这样,及时在数据文件磁盘损坏的情况下,数据库管理员也能将对数据库恢复至故障发生时的状态。
1)归档进程
?是可选的后台进程
?为数据库设置ARCHIVELOG(归档)模式时会自动归档联机重做日志文件
? 保留对数据库所有更改的记录
2)归档日志文件
?数据库在允许覆盖重做日志信息之前生成联机重做日志组的副本。
? 这些副本又称为“归档日志”。

Oracle配置管理
2、配置数据库归档日志步骤:
?查询数据库归档方式,确定当前不处于归档方式
?关闭数据库并启动数据库到MOUNT状态
?将数据库设置位归档模式,并验证
SQL>archive log list;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理

五、数据字典

1、数据字典定义
数据字典是oracle存储关键信息的表和视图的集合。是数据库的说明,包含数据库中所有对象的名称和属性。Oracle进程会在SYS模式中维护这些表和视图,也就是说数据字典的所有者为SYS用户,数据存放在SYSTEM表空间中。
数据字典描述了实际数据是如何组织的,如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。对他们可以像处理其他数据库表或视图一样进行查询,但不能进行任何修改。
Oracle数据字典通常是在创建和安装数据时被创建的。
Oracle数据字典是oracle数据库系统工作的基础。
没有数据字典的支持,oracle数据库系统就不能进行任何工作。

2、数据字典的构成
数据字典分为数据字典表和数据字典视图。数据字典中的表不可以直接被访问,但是可以访问数据字典中的视图。数据字典视图分为两类:静态数据字典视图和动态数据字典视图。
Oracle配置管理
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理

六、动态数据字典视图及使用

1、概念
除了静态数据字典中的3类视图,其他的字典视图中主要是V$视图,之所以这样命名是因为他们都是以V$或GV$开头的,这些视图会不断地进行更新,可以反映出当前实例和数据库的运行状况。动态性能表用于记录当前数据库的活动,只存在于数据库运行期间,实际的信息都取自内存和控制文件,dba可以使用动态视图来监视和维护数据库。下面列举几个dba维护数据库中经常使用的几个动态数据字典视图。
Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理Oracle配置管理



回复

使用道具 举报