您的位置:首页 > 数据库 > Oracle

oracle实例管理

2015-11-22 23:36 429 查看

oracle实例管理

oracle实例,其实就是oracle instance,在oracle数据库体系结构中,是组成oracle服务器的重要部分。那为什么需要这个instance呢?专业上的一种说法是说oracle instance是用于和操作系统进行联系的标识,也就是数据库和操作系统之间的交互使用的是数据库实例。换句话说,我们用户,是通过”操作系统-》数据库实例-》数据库”和”操作系统《-数据库实例《-数据库”这样的流程来和oracle数据库打交道的(尽管现在这样说有点不完整,因为其中还有各种工具什么的)。也就是说,如果没有oracle instance,我们用户就无法和数据库打交道,也谈不上管理oracle数据库了。

那么,什么是oracle实例管理呢?

粗略来说,包括了:

对初始化参数文件的管理

启动database的方式

置为限制模式

杀死不需要的用户进程

诊断文件的管理

初始化参数文件

先说说所谓的参数

oracle数据库中有很多参数,这些参数决定着数据库的一些基本信息

而有些参数,不会在参数文件上显示,它们采用系统默认值,叫做隐式参数

在参数文件上有这个参数的,叫做显示参数

参数文件

存放参数的文件分为两类,一种是静态的正文文件pfile,一般文件名为initSID.ora,另一种是动态的二进制文件spfile,一般文件名为spfileSID.ora(SID为实例名,如果没有,默认使用init.ora)。它们的位置都在$ORACLE_HOME/dbs下,在启动数据库时,用户可以自定义用哪种文件启动数据库。而以pfile启动数据库和以spfile启动数据库时有区别的:

当以pfile启动时,如果你需要改变一些初始化参数,那么你只有关闭数据库,然后跑去文件所在的位置,去改动其参数项,然后重新启动数据库



如图,如果是没有initSID.ora,那么系统在以pfile方式下启动时会默认使用init.ora

当以spfile启动时, 要改变初始化参数时,可以动态改动,不需要重启数据库。但是要注意,不要手动去更改这个文件,否则,很可能会变成无效文件。除了这些之外,它还是由oracle服务器自动维护的,拥有自我调优的能力。



用户还可以利用CREATE SPFILE语句自行创建spfile,下面是个不完整的例子:



上面的语句会利用默认的pfile文件创建默认的spfile文件。

当用户需要查看spfile的内容时,是不能直接查看的,需要用点工具,例如spool,



之后关闭spool

SQL> spool off


然后去相应的目录找到就可以查看了



然后用vim打开



初始化参数文件的内容

参数文件的内容,毫无疑问就是参数了,这些参数包含有哪些信息呢?

实例名和与该实例相关的数据库名

控制文件名字和位置

系统全局区的配置,如shared pool的配置

还原段(回滚段)的配置

该实例所能同时启动的进程数

标准数据块大小

是否允许DBA远程登录

启动数据库的方式



按参数文件(个人觉得这里会让人误解,不过没找到好词)分

直接startup,然后就会经历一些步骤

首先找到spfileSID来启动实例

如果找不到,就找默认的spfile来启动

如果找不到,就找initSID来启动

如果找不到,就找默认的pfile来启动

SQL> startup


这样子启动,可以看出,是优先使用spfile,也就是动态参数文件。

除此之外,还可以指定参数文件来启动

SQL> startup pfile=文件名     #注意,文件名要加上路径,且不需要引号


按启动状态分

以非加载模式启动

SQL> startup nomount


解释:只启动实例但不打开数据库中任何文件

适用场景:只有在创建数据库时或重建控制文件时使用

工作:启动所需的全部后台进程;打开报警文件alertSID.ora和追踪文件trace

以加载模式启动

SQL> startup mount


解释:启动实例并且打开控制文件

适用场景:特殊的维护期间,如系统表空间的恢复,修改数据文件名,移动数据文件等

工作:将一数据库与已启动的实例关联起来;利用初始化参数文件中的说明锁定并打开控制文件;读控制文件以获取数据文件和重做日志文件的名字和状态信息,但不检查其是否存在

以开启模式启动

SQL> startup


上下相同效果

SQL> startup open


解释:启动实例,打开控制文件,打开数据库

适用场景:正常状态

工作:包括上面两种所有工作;打开所有联机数据文件;打开所有联机重做日志文件

按读写权限分

只读方式

SQL> alter database open read only;
#可做的事情:
#将数据文件脱机和联机,但不能对表空间进行这样的操作
#执行数据文件和表空间的脱机恢复
#使用本地管理的表空间来执行磁盘排序
#执行查询


读写方式(这是默认状态)

SQL> alter database open read write;


置为限制模式

进入该模式的命令

SQL> startup restrict  #如果数据库还没运行


SQL> alter system enable restricted session; #如果数据库运行了


适用场景

维护数据库结构

数据库导入和导出

特点

只有拥有restricted session系统权限的用户才能登录数据库

只保证此模式启动后拥有restricted session系统权限的用户登录数据库,但是在开启这个模式之前,如果有用户已经登录,是不能自动kill掉这个用户的

关闭数据库的方式

由于数据库是允许多个会话,多个事务,过个用户连接,并且做的事情有时和检查点有关,所以在关闭一个数据库时,这些因素必须考虑。根据oracle给出的关闭方式,我们也不难看出这种“级别”关系。所有的关闭方式有一个共性——都是禁止新的链接的

normal

#等待所有会话和事务结束,并且会强制检查点和关闭文件
SQL> shutdown normal


transactional

#等待事务结束,并且会强制检查点和关闭文件,但是不会等所有会话结束
SQL> shutdown transactional


immediate

#会强制检查点和关闭文件 但是不会等待所有事务和会话结束
SQL> shutdown immediate
#没提交的数据将自动回滚,重新启动不需要恢复,但用户需要重新输入那些没有提交的数据


abort

#什么都不等,直接关了
SQL> shutdown abort


找到并且杀死不需要的用户进程

步骤:

以数据库管理员用户登录

select sid,serial#,username,type from v$session; #查表看看会话信息


alter system kill session 'SID,SERIAL#';  #利用找到的信息杀死相应进程


我们可以做个实验,利用xshell创建两个会话连接到虚拟机上的linux上,并且登录进去oracle数据库,然后一个以sys登录,一个以scott登录,然后我们试着kill掉scott用户进程









诊断文件的管理

诊断文件可以获取数据库的很多有用信息,特别是当你在管理数据库时,遇到各种报错,无从下手时,通常看一下诊断文件,可以有所帮助。通常有3种主要的诊断文件:报警文件alterSID.log后台进程跟踪文件background trace files用户进程跟踪文件user trace files

报警文件alterSID.log

位置:由BACKGROUND_DUMP_DEST参数定义(这里提供两种方法可以获取)

SQL> show parameter BACKGROUND_DUMP_DEST


SQL> select value from v$diag_info where name='Diag Trace';




权限:必须由数据库管理员来管理

建议:作为一个DBA,应该每天都查看,由下往上看

文件的内容:数据库启动或关闭的时间;所有非默认初始化参数;LGWR正在写的日志序列号;日志的切换信息;执行的ALTER语句;创建的表空间和还原段等。

后台进程跟踪文件background trace files

位置:同样在BACKGROUND_DUMP_DEST下,获取方法同上

文件的内容:任何后台进程所遇到的错误

用户进程跟踪文件user trace files

位置:由USER_DUMP_DEST参数定义,可通过show parameter来获得具体值

作用:追踪用户SQL语句的统计信息,包含用户的错误信息

在会话一级需要追踪SQL语句的统计信息时,需要

alter session set SQL_TRACE = TRUE;


在会话一级需要关闭时,需要

alter session set SQL_TRACE = FALSE;


同样可以在实例一级需要开启或关闭,就修改初始化参数文件的参数来完成

SQL_TRACE = TRUE


注意,开启这个系统开销会变大

大小:由MAX_DUMP_FILE_SIZE决定

除了上面提到的查看文件位置的办法外,其实有一个方法会更直接

select name,value from v$parameter where name like '%_dest';




最后给出自己总结的一份思维导图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: