资源描述:
《oracle数据库日常维护知识总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle数据库日常维护知识总结首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表 likethis:select*fromdictwheretable_namelike'%SESSION%'; 就可以查出一些表,然后根据这些表就可以获得会话信息。 像这样就是查询当前正在操作的会话: SELECTSID,SERIAL#,STATUS,USERNAME,SCHEMANAME,OSUSER,TERMINAL,MACHINE,PROGRAM,A.NAMEFROMV$S
2、ESSIONS,AUDIT_ACTIONSAWHERES.COMMAND=A.ACTION; 一、查看数据库的连接情况 DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。 以下的SQL语句列出当前数据库建立的会话情况: selectsid,serial#,username,program,machine,statusfromv$session; 其中, SID会话(session
3、)的ID号; SERIAL#会话的序列号,和SID一起用来唯一标识一个会话; USERNAME建立该会话的用户名; PROGRAM这个会话是用什么工具连接到数据库的; STATUS当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作; 如果DBA要手工断开某个会话,则执行: altersystemkillsession'SID,SERIAL#'; 注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任
4、何操作。 二、常用命令 selectcount(*)fromv$session#连接数Selectcount(*)fromv$sessionwherestatus='ACTIVE' #并发连接数showparameterprocesses#最大连接altersystemsetprocesses=valuescope=spfile;重启数据库#修改连接 1:oracle中怎样查看总共有哪些用户 select*fromall_users; 2:查看oracle当前连接数 怎样查看oracle当前的连接数呢?
5、只需要用下面的SQL语句查询一下就可以了。 select*fromv$sessionwhereusernameisnotnullselectusername,count(username)fromv$sessionwhereusernameisnotnullgroupbyusername#查看不同用户的连接数selectcount(*)fromv$session#连接数Selectcount(*)fromv$sessionwherestatus='ACTIVE' #并发连接数showparameterproces
6、ses#最大连接altersystemsetprocess 3:列出当前数据库建立的会话情况: selectsid,serial#,username,program,machine,statusfromv$session; 三、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: l数据库的启动、关闭,启动时的非缺省参数; l数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成
7、造成不能切换,会记录不能 换的原因; l对数据库进行的某些操作,如创建或删除表空间、增加数据文件; l数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600) DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理 问题处理 启动参数不对检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; 有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用
8、户的系统权限 出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 表空间不够增加数据文件到相应的表空间 出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁 四、数据库表空间使用情况监控(字典管理表空间) 数据库运行了一段时间后,由于不断