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';
最后给出自己总结的一份思维导图
相关文章推荐
- 初学oracle之virturalbox安装快完成的时候立即回滚rollback,并弹出严重错误?----已解决
- 不安装oracle11g客户端,用plsql连接oracle11g
- 转帖:PLSQL怎么创建oracle数据库用户
- linux下Oracle 10g安装(超级详细图解教程)
- Oracle 中使用fetch bulk collect into 批量效率的读取游标数据
- oracle的另外一个图形界面开发工具
- 阅读Oracle官方文档一步步学习Oracle知识的正确顺序
- oracle优化几点注意
- Oracle11gR2的安装和卸载
- Oracle 中Merge into 的用法
- 将VF的dbf文件导入到oracle数据库的方法
- Oracle函数列表速查
- 利用TOAD实现EXCEL数据在oracle的导入导出
- Oracle 常用SQL技巧收藏
- Oracle事务处理
- Oracle 表操作(三)
- Oracle12c学习(一)---Redhat Enterprise Linux7安装Oracle12c(Oracle11g)
- Oracle函数
- Oracle安装后,服务中没有监听器怎么处理?
- Oracle 序列(二)