Oracle数据库日常维护知识总结
DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表
like this:
select * from dict where table_name like '%SESSION% ';
就可以查出一些表,然后根据这些表就可以获得会话信息。
像这样就是 查询当前正在操作的会话:
SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER,TERMINAL, MACHINE,
PROGRAM, A.NAME FROM V$SESSION S, AUDIT_ACTIONS A WHERE S.COMMAND = A.ACTION;
一、查看数据库的连接情况
DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status
from v$session;
其中,
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果DBA要手工断开某个会话,则执行:
alter system kill session 'SID,SERIAL#';
注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
二、常用命令
select count(*) from v$session #连接数
Select count(*) from v$session where status='ACTIVE' #并发连接数
show parameter processes #最大连接
alter system set processes = value scope = spfile;重启数据库 #修改连接
1:oracle中怎样查看总共有哪些用户
select * from all_users;
2:查看oracle当前连接数
怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。
select * from v$session where username is not null
select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数
select count(*) from v$session #连接数
Select count(*) from v$session where status='ACTIVE' #并发连接数
show parameter processes #最大连接
alter system set process
3:列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status from v$session;
三、 Oracle警告日志文件监控
Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:
 数据库的启动、关闭,启动时的非缺省参数;
 数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能换的原因;
 对数据库进行的某些操作,如创建或删除表空间、增加数据文件;
 数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600)
DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理
问题:处理
启动参数不对:检查初始化参数文件;
因为检查点操作或归档操作没有完成造成重做日志不能切换:如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;
有人未经授权删除了表空间:检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限;
出现坏块:检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建;
表空间不够:增加数据文件到相应的表空间;
出现ORA-600:根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁;
四、 数据库表空间使用情况监控(字典管理表空间)
数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。
select tablespace_name,
count(*) chunks ,
max(bytes/1024/1024) max_chunk
from dba_free_space
group by tablespace_name;
上
面的SQL列出了数据库中每个表空间的空闲块情况,如下所示:
TABLESPACE_NAME CHUNKS MAX_CHUNK
-------------------- ---------- ----------
INDX 1 57.9921875
RBS 3 490.992188
RMAN_TS 1 16.515625
SYSTEM 1 207.296875
TEMP 20 70.8046875
TOOLS 1 11.8359375
USERS 67 71.3671875
其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合:
alter tablespace 表空间名 coalesce;
然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。
MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。
对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。
五、 控制文件的备份
在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:
执行SQL语句:
alter database
backup controlfile to '/home/backup/control.bak';
或:
alter database
backup controlfile to trace;
这样,会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的SQL命令。
六、 检查数据库文件的状态
DBA要及时查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:
select file_name,status
from dba_data_files;
如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。
七、 检查数据库定时作业的完成情况
如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:
select job,log_user,last_date,failures
from dba_jobs;
如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。
八、 数据库坏块的处理
当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:
ORA-01578: ORACLE data block corrupted (file # 7, block # <BLOCK>)
ORA-01110: data file <AFN>: '/oracle1/oradata/V920/oradata/V816/users01.dbf'
其中,<AFN>代表坏块所在数据文件的绝对文件号,<BLOCK>代表坏块是数据文件上的第几个数据块
出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。
1. 确定发生坏块的数据库对象
SELECT tablespace_name,
segment_type,
owner,
segment_name
FROM dba_extents
WHERE file_id = <AFN>
AND <BLOCK> between block_id AND block_id+blocks-1;
2. 决定修复方法
如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;
如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;
如果有数据库的备份,则恢复数据库的方法来进行修复;
如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据块上的记录取出来,然后对这个表进行重建。
3. 用Oracle提供的DBMS_REPAIR包标记出坏块
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>','<tablename>');
4. 使用Create table as select命令将表中其它块上的记录保存到另一张表上
create table corrupt_table_bak
as
select * from corrupt_table;
5. 用DROP TABLE命令删除有坏块的表
drop table corrupt_table;
6. 用alter table rename命令恢复原来的表
alter table corrupt_table_bak
rename to corrupt_table;
7. 如果表上存在索引,则要重建表上的索引
九、 操作系统相关维护
DBA要注意对操作系统的监控:
 文件系统的空间使用情况(df -k),必要时对Oracle的警告日志及TRC文件进行清理
 如果Oracle提供网络服务,检查网络连接是否正常
 检查操作系统的资源使用情况是否正常
 检查数据库服务器有没有硬件故障,如磁盘、内存报错
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html
转载于:https://blog.51cto.com/19880614/1314274
相关文章:

JAVA 第五周学习总结
20175304 2018-2019-2 《Java程序设计》第五周学习总结 教材学习内容总结 Java为什么要定义接口:接口的作用是实现多重继承,因为一个子类只能继承一个父类,但是可以实现一个或多个接口。使用关键字interface来定义一个接口,定义方…

Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异
文章目录1. Go 语言编写测试代码2. Go 的变量3. Go 常量定义1. Go 语言编写测试代码 源码文件以 _test结尾: xxx_test.go测试方法名需以Test开头: func TESTXXX(t *testing.T) {..} ,且参数列表直接用go 默认的test参数即可 如下first_test…

Scala:Functions and Closures
1 object Functions {2 def main(args: Array[String]) {3 // 本地函数4 def localFun(msg: String) println(msg)5 localFun("Hi")6 7 // 函数对象8 var list List(1, 2, 3)9 list.foreach((x: Int) > println(x)) 10 list.fore…

云计算机机房怎么样,如何知道云电脑配置多少?怎么选择云电脑机房?
一般在玩一款游戏时,需要考虑玩游戏的配置,云电脑帮助我们实现配置的需求,那如何才能知道云电脑配置是多少,该怎么选择云电脑机房。在使用云电脑时,我们不用考虑自己的手机、平板和电脑的硬件,只要设备能正…

eclipse中新建android项目,不自动生成R.java
http://huyuantai000.iteye.com/blog/1681582转载于:https://www.cnblogs.com/wmm3416/p/3386698.html

获取子iframe的属性
第一种方法: <iframe name"iframeName" src"http://www.test.com"></iframe> // name"iframeName" 取值 window.frames[iframeName] 第二种方法: <iframe id"iframeId" src"http://www.t…

Go: 分布式学习利器(3) -- Go的数据类型和运算符
文章目录1. Go的数据类型1.1 类型转化1.2 类型的预定义1.3 指针类型2. Go 的运算符1. Go的数据类型 GO的基本数据类型如下: bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // 基本和uint8 类型一样 rune // 代表unicode …

云职教课堂计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...
参考答案如下智慧职教最新最全【判断题】两种气体在相同温度下放入同一个容器中,测得的压强分别为 和 ,则把它们同时放入容器中后的总压强为 .云课【单选题】根据物质的导电能力,将物质分为哪些类别?A. 导体 B. 半导体 C. 绝缘体 D. 以上都对堂计【单选题】按照数的进位制概念…
测试用例挑选策略
在软件开发过程中,无论是在feature testing还是在final regression testing中,测试策略的好坏在整个质量保证过程中起着至关重要的作用,尤其是在测试资源有限的情况下,影响更为突出。好的测试策略能够更快速的发现软件最有value的…

php json josn_decode()返回的是对像,如何把对像转成数组
php json josn_decode()返回的是对像,如何把对像转成数组 a.php传值页面,使用 json_encode($array)对数组进行加密码. b.php页面在接收a.php传过来的页面的值使用的是 json_decode($array),发现解密出来的数据是对象形式的: array(2) {[0]>…

【题解】黑格覆盖
题目描述 在一张由MN个小正方形格子组成的矩形纸张上,有k个格子被涂成了黑色。给你一张由mn个同样小正方形组成的矩形卡片,请问该卡片最多能一次性覆盖多少个黑格子? 输入输出格式 输入格式 输入共k1行: 第1行为5个整数M、N、m、n…

Go 分布式学习利器(4)-- 条件和循环
文章目录1. 循环语句2. 条件语句2.1 if...else 条件2.2 switch 条件1. 循环语句 Go语言和其他语言在循环语句上的主要差异是 Go语言仅支持for关键字。 语法形式:for i : 5; i > 0; i--,不像其他语言有两个小括号左右围着。 两种不同的循环体语法如下࿱…

php 对象的执行
1.BNF范式 %token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"unticked_statement: | expr ; { zend_do_free(&$1 TSRMLS_CC); }expr:r_variable { $$ $1; }| expr_without_variable { $$ $1; } ;r_variab…

golang不编译.html,golang之条件编译
Go语言能够经过go/build包里定义的tags和命名约定来让Go的包能够运行不一样的代码。html标签编译在源代码里添加标注,一般称之为编译标签(build tag)。编译标签采用靠近源代码文件顶部用注释的方式添加。go build在构建一个包的时候会读取这个包里的每一个源文件而且…

深入理解Struts2中的OGNL表达式
Struts 2中的表达式语言Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言; JSTL(JSP Standard Tag Library),JSP …

[ZJOI2010]网络扩容
Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。 求: 1、在不扩容的情况下,1到N的最大流; 2、将1到N的最大流增加K所需的最小扩容费用。 Input 第一行包含三个整数N,M,…

zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境
近期需要整理MIT6.824 中 分布式系统协调服务 zookeeper 的一些知识,想要在Mac 本地搭建一个可以方便运行调试的zookeeper环境,这玩意竟然耗费了一上午的时间,实在是不可忍;当然,主要还是因为对Java的编译运行环境 以及…

南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf
南昌大学2008学年第二学期高等数学期末考试试卷( 3 15 )一、 填空题 每空 分,共 分 a 3i j 2k, b i 2j k, (2a)(3b)1.设 则 _____.2 2 2 22. 函数 z ln[(25 x y )(x y 4)]的定义域是_______________________…

金智教育CTO:大数据人才培养要先行一步
金智教育CTO、北航云计算硕士项目主任陈滢博士认为,虽然在中国,互联网行业已经有了比较多的大数据实践,而且像金融、电信等行业也确实感受到了大数据给业务带来的压力,但是从整个大数据市场来看,还是“雷声大、雨点小”…

[NOIP2015]子串
Luogu2679 /* 思路清晰: 1.状态 2.转移方程:哪些状态相互影响/记忆化搜索思想 3.循环顺序 4.优化*/ #include<bits/stdc.h>using namespace std;typedef long long LL;const int mod1e97; const int MAXN1005; const int MAXM205;char a[MAXN],b[M…

Go 分布式学习利器(5)-- 数组和切片
文章目录1. 数组的声明2. 数组元素的遍历3. 数组的截取4. Go 语言的切片5. 数组 和 切片的共同点1. 数组的声明 声明并初始化为默认的零值 var a [3]int声明同时初始化为指定的值 b : [3]int{1,2,3}多维数组初始化 c : [2][2]int{{1,2},{3,4}} 测试函数: func Te…

如何用计算机求锐角三角比,9.3用计算器求锐角三角比教学案
侨润中学教学案八年级数学学科第 6 周第 4 节总29 课时主备人唐云玲授课人上课时间2012年3月22 日课题9.3用计算器求锐角三角比(1)课型教学目标1、学会用计算器求任意角的三角函数值。2、培养学生熟练地使用现代化辅助计算手段的能力3、培养学生运用现代化仪器的思想࿰…

详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计…

二级域名session 共享方案
1.利用COOKIE存放session_id(); 实例:域名一文件php代码:<?php session_start(); setcookie("session_id",session_id(),time()3600*24*365*10,"/",".session.com");$_SESSION[user_name] 梁山良民; echo $_SESSION[…

idea中文乱码问题
需要统一编码,具体步骤如下所示: 最好在编辑页面右键设置file encoding也为utf-8编码方式 转载于:https://www.cnblogs.com/q-1993/p/10630496.html

Go 分布式学习利器(6)-- Map
文章目录1. Map的声明2. Map 元素访问带来的问题3. Map 元素的遍历4. 通过Map 实现 函数对象(C)5. 通过Map实现一个简单Set功能1. Map的声明 基本的几种声明和初始化方式如下: m : map[string]int{"one":1, "two":2, &…

Javascript 拖拽的一些高级的应用——逐行分析代码,让你轻松了解拖拽的原理...
我们看看之前的拖拽在周围有东西的时候会出现什么问题? 在高级浏览器中不会有啥问题,我们放到IE7下面测试一下,问题就出来了。如图 我们可以很清楚的看到,文字都已经被选中了。那这个用户体验很不好,用起来也不方便。顺…

计算机用英语bos,宏基电脑boss界面英文翻译,不知道的可以看看。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼information(数据) cpu type(CPU类型)intel(R)Atom(TM)CPU Z2760 1.80GHzcpu speed(CPU的速度)1.80GHzsystem bios version(系统BIOS版本)V1.0cGOP Version(画面组版本)6.019.1018EMMC Model Name(EMMC模型名称)G23MESEMMC serial…

linux文件操作篇 (一)文件属性与权限
文件的属性和权限是linux中 目录 和 文件 的两个基本特性. #属性: 1. 所有者属性 2. 访问权限属性 -rwxrwxr-x #第一个字符是文件类别 -表示 普通文件 d 表示目录 b 表示块输入输出设备文件 c 表示连续输入输出设备 l 表示链接文件 …

Go 分布式学习利器(7)-- 字符串
文章目录1. 字符串 声明2. Unicode 和 utf-8的区别3. string中的字符遍历4. string的 字符分隔 和字符拼接函数5. string to Int和 Int to string函数1. 字符串 声明 Go中的字符串类型与其他编译型语言的主要差异如下: string 是数据类型,不是指针或 引…