Oracle检查实例
oracle_日常检查相关资料

内容数据库是否处于归档模式检查方法sqlplus sys/......SQL>archive log list;看数据库是否处于归档模式,并启动了自动归档进程检查结果◆正常□异常备注内容文件系统使用情况检查方法执行df –k,检查有没有使用率超过80%的文件系统,特别是存放归档日志的文件系统检查结果◆正常□异常备注内容alert_SID.log文件检查方法检查alert_SID.log有无报错信息(ORA-600、ORA-1578)、ORA-60检查结果◆正常□异常备注内容备份文件是否正常检查方法检查文件大小及生成日期检查export的日志文件用imp工具生成建表脚本,看能否正常完成imp system/.... file=backup.dmp rows=n indexfile=backup.sql检查结果◆正常□异常备注内容表空间使用情况检查方法col tablespace_name form a25select tablespace_name,count(*) chunks,max(bytes)/1024/1024 max_chunk,sum(bytes)/1024/1024 total_space from dba_free_space group by tablespace_name;如果最大可用块(max_chunk)与总大小(total_space)相比太小,要考虑接合表空间碎片或重建某些数据库对象。
碎片接合的方法:alter tablespace 表空间名 coalesce;检查结果◆正常□异常备注内容数据库对象的存储参数设置检查方法select segment_name,next_extent,tablespace_name from dba_segmentswhere next_extent;>[上一个检查中的最小的max_chunk]如果有结果返回,说明有些对象的下一次扩展(从表空间的空闲区中分配空间的操作)会失败检查结果◆正常□异常备注内容检查是否有超过200个extent的对象检查方法select segment_name,tablespace_name,extents from dba_segments where owner not in ('SYS','SYSTEM')and extents >200;如果有结果返回,说明这些对象分配了太多的extent,可以考虑重建这些对象。
Oracle巡检内容

Oracle巡检内容1. Oracle进程检查Ps –ef |grep ora2. CRS进程检查$ps –df |grep d.bin应有:crsd.bin ocssd.bin evmd.bincrsctl check crscrs_stat –tcrs_stat –lsasm进程检查:ps –ef|grep asmORACLE_SID=+ASM1select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;select * from v$asm_disk;检查数据库状态:srvctl status database –d dbname3. Oracle数据库实例状态检查SELECT inst_id, instance_name, host_name, VERSION, TO_CHAR(startup_time, 'yyyy-mm-dd hh24:mi:ss') startup_time, status, archiver,database_status FROM gv$instance;4. Oracle数据库打开状态检查SELECT inst_id, dbid, NAME, TO_CHAR (created, 'yyyy-mm-dd hh24:mi:ss') created, log_mode, TO_CHAR (version_time, 'yyyy-mm-dd hh24:mi:ss') version_time,open_modeFROM gv$database;5. 数据库表空间使用情况检查;5.1 表空间的空间使用情况SELECT df.tablespace_name, COUNT (*) datafile_count,ROUND (SUM (df.BYTES) / 1048576) size_mb,ROUND (SUM (free.BYTES) / 1048576, 2) free_mb,ROUND (SUM (df.BYTES) / 1048576 - SUM (free.BYTES) / 1048576, 2 ) used_mb,ROUND (MAX (free.maxbytes) / 1048576, 2) maxfree,100 - ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_used, ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_freeFROM dba_data_files df,(SELECT tablespace_name, file_id, SUM (BYTES) BYTES, MAX (BYTES) maxbytes FROM dba_free_space GROUP BY tablespace_name, file_id) free WHERE df.tablespace_name = free.tablespace_name(+) AND df.file_id =free.file_id(+)GROUP BY df.tablespace_name ORDER BY 8;5.2 表空间可用性检查select tablespace_name,status from dba_tablespaces;5.3 临时表空间使用情况和性能检查SELECT tablespace_name, extent_management, block_size, initial_extent,next_extent, min_extents, max_extents, pct_increase FROM dba_tablespaces WHERE CONTENTS = 'TEMPORARY';SELECT username, default_tablespace, temporary_tablespace FROM dba_users;期望结果:根据现场实际情况,应用用户的缺省表空间不能为system,临时表空间必须为temp。
Oracle数据库日常检查文档

数据库日常检查文档1. 检查表空间使用情况:1.1 检查是否开启自扩展功能:select tablespace_name,file_name,file_id,autoextensible,round((increment_by*8191)/(1024*1024),2)||'M' as 自扩展大小M fromdba_data_files;目的:检查表空间是否开启自扩展功能。
若检查自扩展特别小,请用下面的方法把自扩展根据数据量增长情况调大。
alter database datafile ' 新增加数据文件路径' autoextendon next *M maxsize unlimited;-- 把*替换为你需要的自扩展大小1.2 检查表空间的使用情况:select a.tablespace_name,a.totals 总大小M,b.frees 空闲大小M, round((a.totals-b.frees)/a.totals,4)*100||'%' 使用率from (select sum(bytes)/(1024*1024) as totals,tablespace_name from dba_data_filesgroup by tablespace_name) a,(select sum(bytes)/(1024*1024) as frees,tablespace_namefrom dba_free_spacegroup by tablespace_name) bwhere a.tablespace_name=b.tablespace_name ;目的:当表空间没有开启自扩展功能时,表空间的使用率大于等于85%时,需要向表空间增加数据文件。
开启自扩展功能的表空间,检查常用的表空间自扩展的大小不小于100M。
注:检查ulog 用户对应的表空间:select default_tablespacefrom dba_userswhere username='ULOG';Ulog 用户下的tlog 表主要是记录日志的,因为大部分的报表涉及记录日志。
Oracle巡检手册

如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象。
3.6检查回滚段情况
3.6.1检查回滚段状态
输出结果中所有回滚段的“STATUS”该为“ONLINE”。
3.6.2检查是否有回滚段争用
发生回滚段争用时,需要审视争用情况,即哪些用户正在使用回滚段资源
检查监听进程是否存在:
二、检查系统和Oracle日志文件
检查相关的日志文件,包含:检查操作系统的日志文件,检查Oracle日志文件,检查Oracle核心转储目录,检查root用户和oracle用户的email,检查数据库的字符集,总共五个部分。
2.1检查操作系统日志文件
查看是否有与Oracle用户相关的出错信息。
3.3检查Oracle表空间情况
输出结果中STATUS应该都为ONLINE。
3.4检查Oracle所有数据文件情况
输出结果中“STATUS”应该都为“ONLINE”。
或者:
输出结果中“STATUS”应该都为“AVAILABLE”。
3.5检查对象情况
3.5.1检查对象类别和大小
合理分配资源,将冗余以及临时表定期进行清理,释放资源空间。
表空间不够
增加数据文件到相应的表空间
出现ORA-600
根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁
Listener日志:$ORACLE_HOME/network/log/sqlnet.log
2.3检查Oracle核心转储目录
如果上面命令的结果每天都在增长,则说明Oracle进程经常发生核心转储。这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。
oracle数据库巡检内容

oracle数据库巡检内容1。
检查数据库基本状况在本节中主要对数据库的基本状况进行检查,其中包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。
SQL> select instance_name,host_name,startup_time,status,database_status from v$instance;INSTANCE_NAME HOST_NAME STARTUP_TIME STATUS DATABASE_STATUS—-—-——---—--—--— --—---———-———————-- -----—--——-—-—-—-—-— ---—-—-——- ———-—-—-—--- —--—CKDB AS14 2009-5-7 9:3 OPEN ACTIVE其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
SQL〉select name,log_mode,open_mode from v$database;NAME LOG_MODE OPEN_MODE—--——--————-———--—--- ——-————-—-———-———CKDB ARCHIVELOG READ WRITE其中“LOG_MODE”表示Oracle当前的归档方式。
“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG"表示数据库运行在非归档模式下.在我们的系统中数据库必须运行在归档方式下.$ps —ef|grep ora_|grep —v grep&&ps -ef|grep ora_|grep -v grep|wc –loracle 2960 1 0 May07 ? 00:01:02 ora_pmon_CKDB oracle 2962 1 0 May07 ? 00:00:22 ora_psp0_CKDB oracle 2964 1 0 May07 ? 00:00:00 ora_mman_CKDB oracle 2966 1 0 May07 ? 00:03:20 ora_dbw0_CKDB oracle 2968 1 0 May07 ? 00:04:29 ora_lgwr_CKDB oracle 2970 1 0 May07 ? 00:10:31 ora_ckpt_CKDB oracle 2972 1 0 May07 ? 00:03:45 ora_smon_CKDB oracle 2974 1 0 May07 ? 00:00:00 ora_reco_CKDB oracle 2976 1 0 May07 ? 00:01:24 ora_cjq0_CKDB oracle 2978 1 0 May07 ? 00:06:17 ora_mmon_CKDB oracle 2980 1 0 May07 ? 00:07:26 ora_mmnl_CKDB oracle 2982 1 0 May07 ? 00:00:00 ora_d000_CKDBoracle 2984 1 0 May07 ? 00:00:00 ora_s000_CKDBoracle 2994 1 0 May07 ? 00:00:28 ora_arc0_CKDBoracle 2996 1 0 May07 ? 00:00:29 ora_arc1_CKDBoracle 3000 1 0 May07 ? 00:00:00 ora_qmnc_CKDBoracle 3625 1 0 May07 ? 00:01:40 ora_q000_CKDBoracle 31594 1 0 Jul20 ? 00:00:00 ora_q003_CKDBoracle 23802 1 0 05:09 ? 00:00:33 ora_j000_CKDB19在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:。
Oracle诊断案例-Sql_trace

问题描述:这是帮助一个公司的诊断案例.应用是个后台新闻发布系统.症状是,通过连接访问新闻页是极其缓慢通常需要十数秒才能返回.这种性能是用户不能忍受的.操作系统:sunos 5.8数据库版本:8.1.71.检查并跟踪数据库进程诊断时是晚上,无用户访问在前台点击相关页面,同时进行进程跟踪查询v$session视图,获取进程信息sql> select sid,serial#,username from v$session; sid serial# username---------- ---------- ------------------------------ 1 1 2 1 3 1 4 1 5 1 6 1 7 284 iflow 11 214 iflow 12 164 sys 16 1042 iflow10 rows selected.启用相关进程sql_tracesql> exec dbms_system.set_sql_trace_in_session(7,284,true)pl/sql procedure successfully completed.sql> exec dbms_system.set_sql_trace_in_session(11,214,true)pl/sql procedure successfully completed.sql> exec dbms_system.set_sql_trace_in_session(16,1042,true)pl/sql procedure successfully completed.sql> select sid,serial#,username from v$session; sid serial# username---------- ---------- ------------------------------ 1 1 2 1 3 1 4 1 5 1 6 1 7 284 iflow 11 214 iflow 12 164 sys 16 1042 iflow10 rows selected.等候一段时间,关闭sql_tracesql> exec dbms_system.set_sql_trace_in_session(7,284,false)pl/sql procedure successfully completed.sql> exec dbms_system.set_sql_trace_in_session(11,214,false)pl/sql procedure successfully completed.sql> exec dbms_system.set_sql_trace_in_session(16,1042,false)pl/sql procedure successfully completed.2.检查trace文件检查发现以下语句是可疑的********************************************************************************selectauditstatus,categoryid,auditlevel from categoryarticleassign a,category b where b.id=a.categoryid and articleid= 20030700400141 and auditstatus>0call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 0.81 0.81 0 3892 0 1------- ------ -------- ---------- ---------- ---------- ---------- ----------total 3 0.81 0.81 0 3892 0 1********************************************************************************这里显然是根据articleid进行新闻读取的.非常可疑的是query读取有3892这个内容引起了我的注意.如果遇见过类似的问题,大家在这里就应该知道是怎么回事情了.如果没有遇见过的朋友,能在这里思考一下再往下看.misses in library cache during parse: 1optimizer goal: chooseparsing user id: 41 rows row source operation------- --------------------------------------------------- 1 nested loops 2 index range scan (object id 25062) 1 table access by index rowid category 2 index unique scan (object id 25057)********************************************************************************selectauditstatus,categoryid from categoryarticleassign where articleid=20030700400138 and categoryid in (63, 138,139,140,141,142,143,144,168,213,292,341,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,383,460,461,462,463,621,622,626,629,631,634,636,643,802,837,838,849,850,851,852,853,854, 858,859,860,861,862,863,-1)call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 4.91 4.91 0 2835 7 1------- ------ -------- ---------- ---------- ---------- ---------- ----------total 3 4.91 4.91 0 2835 7 1misses in library cache during parse: 1optimizer goal: chooseparsing user id: 41 rows row source operation------- --------------------------------------------------- 1 table access full categoryarticleassign我们注意到,这里有一个全表扫描存在********************************************************************************3.登陆数据库,检查相应表结构sql> select index_name,table_name,column_name from user_ind_columns 2 where table_name=upper(categoryarticleassign);index_name table_name column_name ------------------------------ ------------------------------ -------------------- idx_articleid categoryarticleassign articleidind_articleid_categ categoryarticleassign articleid ind_articleid_categ categoryarticleassign categoryid idx_sortid categoryarticleassign sortid pk_categoryarticleassign categoryarticleassign articleid pk_categoryarticleassign categoryarticleassign categoryid pk_categoryarticleassign categoryarticleassign assigntype idx_cat_article categoryarticleassign auditstatus idx_cat_article categoryarticleassign articleid idx_cat_article categoryarticleassign categoryid idx_cat_article categoryarticleassign assigntype 11 rows selected.我们注意到,idx_articleid索引在以上查询中都没有被用到.检查表结构:sql> desc categoryarticleassign name null? type ----------------------------------------- -------- ---------------------------- categoryid not null number articleid not null varchar2(14) assigntype not null varchar2(1) auditstatus not null number sortid not null number unpass varchar2(255)问题发现:因为articleid是个字符型数据,查询中给入的articleid= 20030700400141 是个数字值oracle发生潜在的数据类型转换,从而导致了索引失效sql> select auditstatus,categoryid 2 from 3 categoryarticleassign where articleid=20030700400132;auditstatus categoryid ----------- ---------- 9 94 0 383 0 695 elapsed: 00:00:02.62execution plan---------------------------------------------------------- 0 select statement optimizer=choose (cost=110 card=2 bytes=38) 1 0 table access (full) of categoryarticleassign (cost=110 card=2 bytes=38)4.解决方法简单的在参数两侧各增加一个,既可解决这个问题.对于类似的查询,我们发现query模式读取降低为2几乎不必花费cpu时间了********************************************************************************select unpass from categoryarticleassign where articleid=20030320000682 and categoryid=113 call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 0.00 0.00 0 2 0 0------- ------ -------- ---------- ---------- ---------- ---------- ----------total 3 0.00 0.00 0 2 0 0misses in library cache during parse: 1optimizer goal: chooseparsing user id: 20 rows row source operation------- --------------------------------------------------- 0 table access by index rowid categoryarticleassign 1 index range scan (object id 3080)********************************************************************************至此,这个问题得到了完满的解决.--******************************************************************************************************问题说明:非常多时候在我们进行数据库操作时比如drop user,drop table等,经常会遇见这样的错误ora-00604: error occurred at recursive sql level 1 .这样的提示,非常多时候是没有丝毫用处的.本案例就这一类问题提供一个思路及方法供大家参考.1. drop user出现问题报出以下错误后退出ora-00604: error occurred at recursive sql level 1ora-00942: table or view does not exist .关于recursive sql 错误我们有必要做个简单说明.我们知道,当我们发出一条简单的命令以后oracle数据库要在后台解析这条命令,并转换为oracle数据库的一系列后台操作. 这些后台操作统称为递归sql比如create table这样一条简单的ddl命令oracle数据库在后台,实际上要把这个命令转换为对于obj$,tab$,col$等底层表的插入操作.oracle所作的工作可能比我们有时候想的要复杂的多.2.跟踪问题我们知道oracle提供sql_trace的功能能用于跟踪oracle数据库的后台递归操作.通过跟踪文件,我们能找到问题的所在以下是格式化(tkprof)后的输出:********************************************************************************the following statement encountered a error during parse:delete from sdo_geom_metadata_table where sdo_owner = wapcommerror encountered: ora-00942********************************************************************************oracle把错误信息首先呈现出来我们看到ora-00942错误是由于sdo_geom_metadata_table表/视图不存在所致问题由此能定位对于这一类的错误,定位问题以后解决的方法就要依据具体问题原因而定了。
Oracle数据库使用基础和实例

Oracle数据库使⽤基础和实例数据库查询实例数据查询语法格式/*distinct:去除重复的查询结果*/select [all|distinct] *|<⽬标列表达式>[别名],...from <表名或视图名>[别名],...where <条件表达式>group by <列1>having <条件表达式>order by <列2>exists/*exists:如果⼦句有返回结果,那么返回true.否则返回falsenot exists:和上⾯相反*/查询有员⼯的部门信息。
select d.* from dept dwhere exists(select empno from emp ewhere d.deptno = e.deptno);模糊查询/*模糊查询:_:匹配⼀个字符。
%:匹配0到多个字符。
*/查询⾝份证中出⽣年份‘1989’的学员信息。
select stuname from studentinfowhere stucard like '______1989%';⼦查询/*⼦查询:在⼀个查询中嵌套另⼀个查询,嵌套的查询语句就是⼦查询,⼦查询的结果可以被本次查询语句使⽤。
单⾏⼦查询:⼦句只会查询出⼀个结果。
多⾏⼦查询:⼦句会查询出多个结果*/查询⼯资⽐JONES⾼的所有员⼯。
select ename from empwhere sal >(select sal from empwhere ename = 'JONES');/*关联查询⽅法*/select e2.ename,e2.sal from emp e1,emp e2where e1.ename = 'JONES' and e2.sal>e1.sal;和⼯资⼤于2000的⼈在同⼀个部门的⼈。
select ename,deptno from empwhere deptno in(select distinct deptno from empwhere sal>2000);/*关联查询⽅法*/select distinct e2.ename,e2.deptno,e2.sal from emp e1,emp e2where e1.sal>2000 and e2.deptno = e1.deptno;分组查询/*分组查询:⼀般情况下分组查询基本都会使⽤到聚合函数。
Oracle数据库检查办法

Oracle数据库检查办法V1.0宋延成2014.9一.数据库主机相关检查内容:1.主机CPU及内存检查:检查内容:检查数据库所在主机的CPU占用率及内存占用率检查办法:登陆BOMC,检查相应系统数据库主机的CPU及内存历史性能分析(内存检查办法请参照CPU的检查办法)Step1:登陆BOMC系统,选择监控管理中心—系统监控----集中监控Step2:在左侧树状图中,选择06网络部—10.主机核心---选择相应的主机Step3:选择该主机的CPU,右键点出菜单,选择对象历史性能分析Step4:选择相应的时间段及要查看的性能项Step5:按照选择的内容。
生成相应的性能分析图检查标准:CPU负荷没有较大波动,负荷一般不高于80%。
如果负荷较高,需要考虑对数据库进行调优或者申请更高配置机器检查结果:◆正常□异常2.文件系统使用情况检查:检查内容:检查是否有使用率超过80%的文件系统,特别是存放归档日志的文件系统。
检查办法:执行df –k,查看系统中的输出。
检查标准:文件系统使用率低于80%是正常的,高于80%需要对文件系统进行清理或申请扩容。
检查结果:◆正常□异常二.数据库性能分析:1.数据库AWR报告分析:检查内容:awr报告是oracle提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告。
检查办法:1.查询该数据库的dbid:select dbid from v$database;2.查询数据库实例的实例号,单实例一般都是1;rac环境1节点为1,2节点为2 select instance_number from v$instance;3.查询数据库awr的快照点:首先修改数据库的时间格式,方便查看:alter session set nls_date_format='yyyymmdd hh24:mi:ss';查询awr快照ID对应的时间点:select snap_id,begin_interval_time+0,end_interval_time+0 from dba_hist_snapshot order by 1;根据时间点,记录要查询时间段的开始时间snap_id和结束时间的snap_id4.查询awr结果:select output fromtable(dbms_workload_repository.AWR_REPORT_HTML(2898862673, 1, 26151,26327, 0));选择另存为html文件,则可以打开详细的AWR报告查阅数据库详细信息检查标准:AWR报告可以查询到数据库详细信息主要可以关注Top 5 Timed Events和Top Sql进行优化.AWR报告样例检查结果:◆正常□异常2.数据库表空间使用情况检查:检查内容:检查数据库表空间的使用情况,防止表空间的混乱使用检查办法:select owner,tablespace_name from dba_segments where segment_typelike 'INDEX%' group by owner,tablespace_name;检查标准:应用账号所对应的表空间名字,如果不是专门的索引表空间名,则表示该应用账号索引数据存放在非索引数据表空间上,这是一种不规范的情况,需要重建索引至索引专业表空间。
oracle巡检 手册

Oracle巡检手册第一部分数据库状态监控首先检查oracle的log,在sqlplus中:show parameter background_dump_dest;select * from v$diag_info;可以得到日志路径1:检查oracle 监听lsnrtcl statusPs –ef|grep ora2:检查oracle初始化参数Select * from v$parameter;3:检查oracle实例状态Select instance_name,version,status,database_status from v$instance;select inst_id,instance_name,host_name,VERSION,TO_CHAR(startup_time,'yyyy-mm-dd hh24:mi:ss')startup_time,status,archiver,database_status FROM gv$instance;4:检查后台进程状态:select name,Description From v$BGPROCESS Where Paddr<>'00'5:查看系统全局区SGA信息select * from v$sga;6: 查看SGA各部分占用内存情况:select * from v$sgastat;select request_misses,request_failures from v$shared_pool_reserved;比较好的状态:REQUEST_MISSES REQUEST_FAILURES为0或者接近0REQUEST_MISSES REQUEST_FAILURES-------------- ----------------007:查看系统SCN号select (select dbms_flashback.get_system_change_number from dual)scn,current_scn,scn_to_timestamp(current_scn)from v$database;8:检查数据库状态:select name,log_mode,open_mode,platform_name from v$database;select inst_id,dbid,name,to_char(created,'yyyy-mm-dd hh24:mi:ss')created,log_mode,to_char(version_time,'yyyy-mm-ddhh24:mi:ss')version_time,open_mode from gv$database;第二部分:数据库空间监控检查表空间使用率select A.tablespace_name, (1 - (A.total) / B.total) * 100 used_percentfrom (select tablespace_name, sum(bytes) totalfrom dba_free_spacegroup by tablespace_name) A,(select tablespace_name, sum(bytes) totalfrom dba_data_filesgroup by tablespace_name) Bwhere A.tablespace_name = B.tablespace_name;检查system表空间内的内容select distinct (owner)from dba_tableswhere tablespace_name = 'SYSTEM'and owner != 'SYS'and owner != 'SYSTEM'unionselect distinct (owner)from dba_indexeswhere tablespace_name = 'SYSTEM'and owner != 'SYS'and owner != 'SYSTEM';输出:no rows selected分析:如果有记录返回,则表明system表空间内存在一些非system和sys用户的对象。
Oracle 数据库日常巡检

Oracle 数据库日常巡检阅读目录• 1. 检查数据库基本状况• 2. 检查Oracle相关资源的使用情况• 3. 检查Oracle数据库备份结果• 4. 检查Oracle数据库性能• 5. 检查数据库cpu、I/O、内存性能• 6. 检查数据库安全性•7. 其他检查1. 检查数据库基本状况包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。
1.1. 检查Oracle实例状态select instance_name,host_name,startup_time,status,database_status fromv$instance;其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
1.2. 检查Oracle在线日志状态select group#,status,type,member from v$logfile;输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。
注:“STATUS”显示为空表示正常。
1.3. 检查Oracle表空间的状态select tablespace_name,status from dba_tablespaces;输出结果中STATUS应该都为ONLINE。
1.4. 检查Oracle所有数据文件状态select name,status from v$datafile;输出结果中“STATUS”应该都为“ONLINE”。
或者:select file_name,status from dba_data_files;输出结果中“STATUS”应该都为“AVAILABLE”。
1.5. 检查无效对象select owner,object_name,object_type from dba_objects where status!='VALID'and owner!='SYS'and owner!='SYSTEM';如果有记录返回,则说明存在无效对象。
Oracle数据库日常检查

Oracle数据库日常检查A.查看所有的实例及其后台进程是否正常确认所有的instance工作正常,登陆到所有的数据库或instance上,检测oracle后台进程$env|grep SIDORACLE_SID=UWNMS3B.检查文件系统的使用情况如果文件系统的剩余空间小于10%,则需要删除不必要的文件以释放空间。
$df-hFilesystem size used avail capacity Mounted on/dev/md/dsk/d020G17G 3.1G85%//proc0K0K0K0%/procmnttab0K0K0K0%/etc/mnttabfd0K0K0K0%/dev/fdswap85G192K85G1%/var/rundmpfs85G0K85G0%/dev/vx/dmpdmpfs85G0K85G0%/dev/vx/rdmpswap85G213M85G1%/tmp/dev/vx/dsk/data10dg/Ora_File_Vol01394G292G98G75%/data05/dev/vx/dsk/data1dg/vola0131443G156G283G36%/archivelogAIX:$df–g or df–kHP-UX$bdf or df–k or df-h注意:需要特别关注根目录,数据库软件和数据库备份所在目录的剩余空间情况!备注:数据库运行日志的及时清除1).可清除bdump,cdump,udump下的相关日志$cd$ORACLE_BASE/admin/db_name/bdump$ls-ltotal174-rwxrwxrwx1oracle dba59047Jul3022:02alert_UWNMS1.log-rwxrwxrwx1oracle dba1000Jul1422:00uwnms1_j000_18128.trc -rw-r-----1oracle dba1000Jul2222:00uwnms1_j001_5369.trc -rwxrwxrwx1oracle dba695Jul1419:12uwnms1_lgwr_18100.trc -rwxrwxrwx1oracle dba2668Jul3022:02uwnms1_lgwr_19661.trc -rwxrwxrwx1oracle dba983Jul1417:36uwnms1_lgwr_7816.trc -rwxrwxrwx1oracle dba955Jul1419:11uwnms1_lgwr_7883.trc -rwxrwxrwx1oracle dba803Jul1417:31uwnms1_p000_7714.trc -rwxrwxrwx1oracle dba801Jul1417:31uwnms1_p001_7716.trc $cd../cdump$ls-ltotal4drwxr-x---2oracle dba512Jul2514:12core_18095drwxr-x---2oracle dba512Jul2519:17core_25934$cd../udump$ls-ltotal20042-rw-r-----1oracle dba505Jul1616:33uwnms1_ora_14771.trc-rw-r-----1oracle dba4516169Jul2514:12uwnms1_ora_18095.trc -rwxrwxrwx1oracle dba644Jul1419:12uwnms1_ora_18119.trc -rw-r-----1oracle dba505Jul3015:11uwnms1_ora_18820.trc-rwxrwxrwx1oracle dba774Jul1510:23uwnms1_ora_19573.trc -rwxrwxrwx1oracle dba587Jul1510:23uwnms1_ora_19645.trc -rwxrwxrwx1oracle dba644Jul1510:23uwnms1_ora_19680.trc -rw-r-----1oracle dba720942Jul1516:28uwnms1_ora_24759.trc-rw-r-----1oracle dba4951562Jul2519:17uwnms1_ora_25934.trc -rw-r-----1oracle dba505Jul1517:21uwnms1_ora_27326.trc-rw-r-----1oracle dba503Jul3016:54uwnms1_ora_6612.trc-rwxrwxrwx1oracle dba585Jul1417:12uwnms1_ora_7523.trc-rwxrwxrwx1oracle dba767Jul1417:30uwnms1_ora_7566.trc 2).可清除oracle的监听日志$cd$ORACLE_HOME/network/log$ls-ltotal533072-rwxrwxrwx1oracle dba272507851Jul3111:28listener.log-rw-r--r--1oracle dba257876Jul3108:48sqlnet.log$cp/dev/null listener.logC.查找警告日志文件1.联接每一个操作管理系统2.使用‘TELNET’或是可比较程序3.对每一个管理实例,经常的执行$ORACLE_BASE/<SID>/bdump操作,并使其能回退到控制数据库的SID。
oracle 查询 实例

oracle 查询实例Oracle查询实例是数据库管理系统Oracle中的一个重要概念,它是指通过使用Oracle SQL语言对数据库进行查询的示例。
在本文中,我们将详细讨论Oracle查询实例,并提供一步一步的回答。
第一步:连接到数据库在进行任何查询之前,首先需要连接到Oracle数据库。
可以使用SQL*Plus、SQL Developer或任何其他Oracle客户端工具来连接到数据库。
要连接到数据库,需要提供数据库的名称、用户名和密码。
一旦连接成功,就可以开始执行查询。
第二步:选择要查询的表查询的第二步是选择要从中检索数据的表。
可以使用SELECT语句来选择一个或多个表。
例如,如果要查询一个名为“employees”的表,则可以使用以下语法:SELECT * FROM employees;这将选择“employees”表中的所有列和行。
第三步:指定要检索的列在查询中,您可以选择指定要从表中检索的特定列。
要指定列,请在SELECT子句中列出它们的名称,用逗号分隔。
例如,如果要只检索“employees”表中的“first_name”和“last_name”列,可以使用以下语法:SELECT first_name, last_name FROM employees;这将只返回“first_name”和“last_name”列的值。
第四步:加入条件在查询中,可以使用WHERE子句指定条件,从而限制查询结果。
WHERE 子句是可选的,但它可以使查询结果更精确。
例如,如果要只返回在“employees”表中工资大于5000的员工记录,可以使用以下语法:SELECT * FROM employees WHERE salary > 5000;这将只返回工资大于5000的员工的记录。
第五步:排序结果在查询结果中,可以按某个或某些列进行排序。
可以使用ORDER BY子句指定排序顺序。
例如,如果要按“last_name”列对“employees”表进行升序排序,可以使用以下语法:SELECT * FROM employees ORDER BY last_name ASC;这将按“last_name”列对结果进行升序排序。
Linux修改数据库的sid和dbname 查看oracle 实例

有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:1、修改实例名(SID)2、修改数据库名(dbname)下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:1、修改实例名(sid)1.1、检查原来的数据库实例名(sid)oracle@oracle[/home/oracle]> echo $ORACLE_SIDorcloracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionssys@ORCL> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl1.2、关闭数据库注意不能用shutdown abort,只能是shutdown immediate或shutdown normalsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtmoracle@oracle[/home/oracle]> cat ~/.bash_profile|grep -i sidORACLE_SID=cnhtmexport ORACLE_BASE ORACLE_HOME ORACLE_SID PATH1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm oracle@oracle[/home/oracle]> cat /etc/oratab......cnhtm:/oracle/app/10.1:Y+ASM:/oracle/app/10.1:Y1.5、进入到$ORACLE_HOME/dbs目录将所有文件名中包含原来的sid的修改为对应的新sid的如我对如下文件修改为其后对应的文件hc_orcl.dat->hc_cnhtm.datlkORCL->lkCNHTMorapworcl->orapwcnhtmsnapcf_orcl.f->snapcf_cnhtm.fspfileorcl.ora->spfilecnhtm.ora1.6、使新修改的ORACLE_SID环境变量生效oracle@oracle[/oracle/app/10.1/dbs]> . ~/.bash_profileoracle@oracle[/oracle/app/10.1/dbs]> echo $ORACLE_SIDcnhtm1.7、重建口令文件因为口令文件改名后不能在新实例中使用,所以重建oracle@oracle[/oracle/app/10.1/dbs]> orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y oracle@oracle[/oracle/app/10.1/dbs]> ls -lrt orapw*-rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm1.8、启动数据库oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> startupORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1218292 bytesVariable Size 62916876 bytesDatabase Buffers 96468992 bytesRedo Buffers 7168000 bytesDatabase mounted.Database opened.1.9、检查数据库实例名通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtmidle> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------cnhtm2、修改数据库名(dbname)虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)idle> conn / as sysdbaConnected.sys@ORCL> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string orcldb_unique_name string orclglobal_names boolean FALSEinstance_name string cnhtmlock_name_space stringlog_file_name_convert stringservice_names string orcl可以通过如下步骤修改数据库名(dbname)2.1、首先切换一下在线日志,使数据库做checkpointsys@ORCL> alter system archive log current;System altered.2.2、生成重建控制文件的脚本sys@ORCL> alter database backup controlfile to trace resetlogs;Database altered.2.3、关闭数据库,需要干净关闭,不能shutdown abortsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本oracle@oracle[/oracle/admin/orcl/udump]> ls -lrttotal 2608-rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc......-rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc2.5、将找到的trc文件复制一份,并命名为ccf.sqloracle@oracle[/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql2.6、修改ccf.sql查找STARTUP NOMOUNT语句,将这一行上面的所有行都删除查找所有以--开始的行,把这些行删除查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM找到CREATE CONTROLFILE REUSE DATABASE...语句,将其中的REUSE修改为SET 找到RECOVER DATABASE USING BACKUP CONTROLFILE语句,将其用双横线(--)注释掉如果有精力,可以修改这个脚本中的datafile和logfile部分使用新的文件名称,其实这部分不修改也可以,我为了测试的目的进行了修改,修改后要记得去重命名数据文件和log文件,将对应的数据文件和log文件与这里的名称相对应我修改后的ccf.sql文件内容如下STARTUP NOMOUNTCREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '+DATA/cnhtm/onlinelog/group_1.LOG' SIZE 100M,GROUP 2 '+DATA/cnhtm/onlinelog/group_2.LOG' SIZE 100M,GROUP 3 '+DATA/cnhtm/onlinelog/group_3.LOG' SIZE 100M,GROUP 4 '+DATA/cnhtm/onlinelog/group_4.LOG' SIZE 100MDATAFILE'+DATA/cnhtm/datafile/system01.DBF','+DATA/cnhtm/datafile/undotbs101.DBF','+DATA/cnhtm/datafile/sysaux01.DBF','+DATA/cnhtm/datafile/users01.DBF','+DATA/cnhtm/datafile/example01.DBF','+DATA/cnhtm/datafile/tbs_lmt01.DBF','+DATA/cnhtm/datafile/tbs_lmt_201.DBF','+DATA/cnhtm/datafile/tbs_lmt_301.DBF'CHARACTER SET ZHS16GBK;--RECOVER DATABASE USING BACKUP CONTROLFILE;ALTER DATABASE OPEN RESETLOGS;ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/cnhtm/tempfile/temp.269.705923003'SIZE 104857600 REUSE AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M;2.7、修改数据文件、在线日志文件名如果上一步修改了ccf.sql文件中的datafile和logfile段的文件名,这里要将这些文件名重命令为与其一致。
oracle 查询实例名的sql语句

一、概述在Oracle数据库中,每个实例都具有唯一的实例名,通过这个实例名可以对数据库进行管理和监控。
需要使用SQL语句来查询Oracle数据库实例名。
本文将介绍如何使用SQL语句来查询Oracle数据库实例名的方法。
二、连接到Oracle数据库在执行SQL语句之前,首先需要连接到Oracle数据库。
可以使用SQL*Plus工具或其他数据库连接工具来连接到Oracle数据库,输入用户名和密码即可进行连接。
三、查询实例名的SQL语句要查询Oracle数据库的实例名,可以使用以下SQL语句:```sqlSELECT instance_nameFROM v$instance;```上面的SQL语句使用了v$instance视图来查询Oracle数据库的实例名。
执行这条SQL语句后,会显示出实例的名称,例如:```sqlINSTANCE_NAME----------------ORCL```四、解释SQL语句1. SELECT语句:表示要从数据库中查询数据。
2. instance_name:是要查询的列名,即实例名。
3. v$instance:是Oracle数据库中的动态性能视图,用于显示数据库实例的信息。
五、示例下面我们以一个具体的示例来说明如何使用SQL语句查询Oracle数据库实例名。
1. 使用SQL*Plus工具或其他数据库连接工具连接到Oracle数据库。
2. 执行以下SQL语句:```sqlSELECT instance_nameFROM v$instance;```3. 执行该SQL语句后,会得到如下输出:```sqlINSTANCE_NAME----------------ORCL```六、总结通过本文的介绍,我们了解了如何使用SQL语句来查询Oracle数据库的实例名。
在实际的数据库管理和监控工作中,查询实例名是非常常见的操作,也是进行数据库管理的基础。
希望本文对大家有所帮助。
七、常见问题解答在使用SQL语句查询Oracle数据库实例名的过程中,可能会遇到一些常见的问题。
oracle 数据库巡检语句

oracle 数据库巡检语句进行Oracle数据库巡检时,可以使用一系列SQL语句来检查数据库的健康状况、性能和安全性。
以下是一些常用的Oracle数据库巡检语句:1. 检查数据库实例的运行情况:SELECT instance_name, host_name, version,startup_time, status FROM v$instance;2. 检查数据库的空间使用情况:SELECT tablespace_name, sum(bytes)/1024/1024 AS "Total Size (MB)",。
sum(bytes blocks8192)/1024/1024 AS "Used Size (MB)",。
sum(blocks8192)/1024/1024 AS "Free Size (MB)"FROM dba_free_space.GROUP BY tablespace_name;3. 检查数据库的性能指标:SELECT FROM v$sysstat WHERE name LIKE 'parse count%';SELECT FROM v$sysstat WHERE name LIKE 'execute count%';SELECT FROM v$sysstat WHERE name LIKE 'user commits';4. 检查数据库的会话和进程信息:SELECT username, osuser, machine, program FROM v$session;SELECT spid, osuser, username, program FROMv$process;5. 检查数据库的表空间和数据文件信息:SELECT tablespace_name, file_name, bytes/1024/1024 AS "File Size (MB)",。
Oracle诊断事件列表

Oracle诊断事件列表ORA-12000: 实体化视图日志已经存在于表 '' 上ORA-12001: 无法创建日志: 表 '' 已经具有触发器ORA-12002: 表 ""."" 上不存在任何实体化视图日志ORA-12003: 实体化视图 ""."" 不存在ORA-12004: REFRESH FAST 不能用于实体化视图 "".""ORA-12005: 不能安排过去时间的自动刷新ORA-12006: 具有相同 的实体化视图已经存在ORA-12007: 实体化视图重新使用的参数不一致ORA-12008: 实体化视图的刷新路径中存在错误ORA-12009: 实体化视图不能包含 long 列ORA-12010: 不能在 SYS 拥有的表上创建实体化视图日志ORA-12011: 无法执行作业ORA-12012: 自动执行作业出错ORA-12013: 可更新实体化视图必须足够简单, 以进行快速刷新ORA-12014: 表 '' 不包含主键约束条件ORA-12015: 不能从复杂查询中创建一个可快速刷新的实体化视图ORA-12016: 实体化视图并未包含所有主键列ORA-12017: 不能将主键实体化视图 '' 更改为 rowid 实体化视图ORA-12018: 在创建 ""."" 的代码时出现以下错误ORA-12019: 主表与远程对象同义ORA-12020: 实体化视图未注册ORA-12021: 实体化视图 ""."" 已损坏ORA-12022: ""."" 上的实体化视图日志已具有 rowidORA-12023: 实体化视图 ""."" 上缺少索引ORA-12024: ""."" 上的实体化视图日志没有主键列ORA-12025: ""."" 上的实体化视图日志已有主键ORA-12026: 检测到无效的过滤器列ORA-12027: 过滤器列重复ORA-12028: 主体站点不支持实体化视图类型ORA-12029: LOB 列不能用作过滤器列ORA-12030: 不能创建可快速刷新的实体化视图ORA-12031: 不能使用 ""."" 上实体化视图日志中的主键列ORA-12032: 不能使用 ""."" 上实体化视图日志中的 rowid 列ORA-12033: 不能使用 ""."" 上实体化视图日志中的过滤器列ORA-12034: ""."" 上的实体化视图日志比上次刷新后的内容新ORA-12035: 无法使用 ""."" 上的实体化视图日志ORA-12036: 可更新的实体化视图日志非空, 请刷新实体化视图ORA-12037: 未知的导出格式ORA-12038: 文字字符串具有意外的长度ORA-12039: 无法使用本地回退段 ""ORA-12040: 主体站点不支持主体回退段选项ORA-12041: 无法记录索引表 ""."" 的 ROWIDORA-12042: 在单一进程模式下无法更改 job_queue_processes ORA-12043: CREATE MATERIALIZED VIEW 选项无效ORA-12044: CREATE MATERIALIZED VIEW LOG 选项无效ORA-12045: ALTER MATERIALIZED VIEW LOG 选项无效ORA-12046: 无法将信任的约束条件用于刷新远程 MVORA-12047: PCT FAST REFRESH 不能用于实体化视图 ""."" ORA-12048: 刷新实体化视图 ""."" 时出错ORA-12051: ON COMMIT 属性与其它选项不兼容ORA-12052: 无法快速刷新实体化视图 .ORA-12053: 这不是一个有效的嵌套实体化视图ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性ORA-12055: 实体化视图定义与现有实体化视图具有循环相关性ORA-12056: 无效的 REFRESH 方法ORA-12057: 实体化视图 ""."" 无效, 必须进行完全刷新ORA-12058: 实体化视图不能使用预建表ORA-12059: 预建表 ""."" 不存在ORA-12060: 预建表的形式与定义查询不匹配ORA-12061: 无效的 ALTER MATERIALIZED VIEW 选项ORA-12062: 接收到的事务处理在来自站点的事务处理序列之外ORA-12063: 无法从站点应用事务处理ORA-12064: 无效的刷新序列号:ORA-12065: 未知的刷新组标识符ORA-12066: CREATE MATERIALIZED VIEW 命令无效ORA-12067: 不允许刷新组为空ORA-12068: 用于实体化视图 ""."" 的可更新实体化视图日志不存在ORA-12069: 无效的脱机实例化对象ORA-12070: 无法对实体化视图 ""."" 进行脱机实例化ORA-12071: ""."" 的定义查询对脱机实例化无效ORA-12072: 无法创建 ""."" 的可更新实体化视图日志数据ORA-12073: 无法处理请求ORA-12074: 无效的内存地址ORA-12075: 无效的对象或字段ORA-12076: 无效的阈值ORA-12077: 临时可更新实体化视图日志不存在ORA-12078: 对刷新组 ID 的快速刷新失败ORA-12079: 实体化视图选项要求 COMPATIBLE 参数为或更大的值ORA-12081: 不允许对表 ""."" 进行更新操作ORA-12082: ""."" 不能是索引表ORA-12083: 必须使用 DROP MATERIALIZED VIEW 来删除 ""."" ORA-12084: 必须使用 ALTER MATERIALIZED VIEW 来更改 ""."" ORA-12085: ""."" 上的实体化视图日志已有对象 IDORA-12086: 表 ""."" 不是对象表ORA-12087: 在 "" 拥有的表上不允许联机重新定义ORA-12088: 不能联机重新定义具有不受支持数据类型的表 ""."" ORA-12089: 不能联机重新定义无主键的表 "".""ORA-12090: 不能联机重新定义表 "".""ORA-12091: 不能联机重新定义具有实体化视图的表 ""."" ORA-12092: 不能联机重新定义复制的表 "".""ORA-12093: 中间表 ""."" 无效ORA-12094: 联机重新定义过程中出错ORA-12096: ""."" 上的实体化视图日志中存在错误ORA-12097: 刷新时主表发生更改, 请重新刷新ORA-12098: 无法为实体化视图加注释ORA-12099: 不要进入快速表扫描 (kdst) 模式ORA-12100: ""."" 上的实体化视图日志已经有序列ORA-12150: TNS: 无法发送数据ORA-12151: TNS: 从网络层收到错误的包类型ORA-12152: TNS: 无法发送中断消息ORA-12153: TNS: 未连接ORA-12154: TNS: 无法解析指定的连接标识符ORA-12155: TNS: 在 NSWMARKER 包中收到错误的数据类型ORA-12156: TNS: 试图从错误状态中重置线路ORA-12157: TNS: 内部网络通信错误ORA-12158: TNS: 无法初始化参数子系统ORA-12159: TNS: 跟踪文件不可写ORA-12160: TNS: 内部错误: 错误号不正确ORA-12161: TNS: 内部错误: 收到部分数据ORA-12162: TNS: 指定的 Net 服务名不正确ORA-12163: TNS: 连接描述符太长ORA-12164: TNS: Sqlnet.fdf 文件不存在ORA-12165: TNS: 试图将跟踪文件写入交换空间。
Oracle经典基本查询实例及详解(强烈推荐)

Oracle经典基本查询实例及详解(强烈推荐)Oracle经典实例查询及详解(强烈推荐)⼀:深⼊浅出⼦查询1. 查询⼯资⾼于500或是岗位为manager的雇员的信息,同时还要满⾜他们的姓名⾸写字母为⼤写J:select * from emp where (sal>500 or job='manager') and ename like 'J%';括号⾥满⾜⾄少满⾜⼀个,并且姓名⾸写字母为⼤写J。
2. 按⼯资由低到⾼的顺序显⽰员⼯信息:select * from emp order by sal desc ;注:desc⾼到低;asc 低到⾼,升序这是默认的。
3.按照部门号升序⽽雇员的⼯资降序排列。
(知道某个部门最⾼⼯资的员⼯最低⼯资的员⼯是谁。
)select * from emp order by deptno,sal desc;(先按部门排再按⼯资排)4.使⽤列的别名排序按升序显⽰员⼯年薪信息。
elect ename,(sal+nvl(comm,0))*12 年薪 from emp order by 年薪5.使⽤⼦查询。
(分组函数:max,min,avg,sum,count.)select min(sal),max(sal)from emp //在这⾥查询的列都必须是分组函数。
6.显⽰⼯资最⾼的员⼯信息(1)这⾥可以分两步⾛:先查询出来最⾼⼯资;select max(sal) from epm (2)select ename ,sal from emp where sal=(select max(sal) from epm);//select max(sal) from emp返回⼀个值。
注:where 后的列如sal不能直接等于分组函数,Sal=max(sal)是错的。
要解决此题就要⽤到⼦查询。
7.⼦查询(分步拆分思想):显⽰与smith同⼀部门的员⼯信息。
oracle数据库健康检查方案

目录目录 (1)操作系统检查 (2)1.查看本地磁盘和挂载的华为存储磁盘使用率 (2)2.查看内存使用率 (2)3.查看CPU使用率 (2)4.查看10情况 (2)5.查看当前系统时间、运行天数 (3)6.查看系统日志、远程登录日志 (3)7.查看服务器负载情况 (3)8.查看数据库日志 (3)9.查看数据库监听日志大小,超过2G就要处理 (3)Oracle数据库健康检查 (3)10.检查oracle数据库的运行情况 (3)11.检查oracle数据库的实例运行情况 (4)12.检查当前数据库的实例状态、归档模式、实例己运行时间、实例名称、数据库名称和归档进程状态等运行时的重要信息。
(4)13.查看oracle数据库端设置的字符集 (4)14.查看oracle客户端设置的字符集 (4)15.检查各个表空间的数据文件总大小'G, (5)16.检查表空间总个数 (5)17.检查各个表空间的数据文件总个数 (5)18.检查数据库表空间的使用情况 (5)19.检查数据库表空间的剩余空间大小'G, (6)20.检查数据库表空间的运行状态等信息 (6)21.检查数据库表空间的数据文件状态等信息 (6)22.检查数据库表空间异常状态的数据文件 (7)25.检查数据库归档模式相关信息 (8)26.检查数据库的JOB运行情况 (8)27.检查数据库的对象信息 (8)28.检查数据库索引not analyzed (9)29.检查数据库的会话信息 (9)30.检查数据库中行迁移的表 (9)31.检查数据库中表的碎片大小 (10)32.检查数据库回收站的信息 (10)33.用awr工具来检查数据库的性能情况 (10)LINUX操作系统检查1. 查看本地磁盘和挂载的华为存储磁盘使用率执行命令:df -h2.查看内存使用率执行命令:free -m3. 查看CPU使用率执行命令:top4∙查看10情况执行命令:iostat 2 105.查看当前系统时间、运行天数执行命令:date, uptime6.查看系统日志、远程登录日志执行命令:cat ∕var∕log∕messages> cat ∕var∕log∕secure7.查看服务器负载情况执行命令:sar 2 10或者vmstat 2 108.查看数据库日志切换到oracle 用户,进入口志目录cd ∕u01∕app∕θracle∕admin∕MICSPROD∕bdump∕查看日志有没有报错命令tail -300 alert_micspord.log∣grep 'ORA'tail -300 alert_micspord.log ∣grep z Err,9∙查看数据库监听日志大小,超过2G就要处理切换到oracle用户,进入日志目录cd $ORACLE_HOME/network/log查看日志大小命令Is -1thOracle数据库健康检查10.检查。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle检查实例1.常规检查1.1文件自动扩展描述:正确参数说明:数据文件使用裸设备时,文件不可自动扩展(使用文件系统的数据文件也建议不设成自动扩展)建议操作:SQL>select file_name,tablespace_name,status,autoextensible from dba_data_files where autoextensible<>'NO';SQL>alter database datafile '****' autoextend off;1.2默认表空间描述:正确参数说明:不要使用system表空间作为应用用户的默认表空间建议操作:SQL>Select username,account_status,default_tablespace,temporary_tablespace from dba_Users; SQL>alter user ctais2bb default tablespace ctais2_dat;编号:31.3历史错误信息描述:没有错误参数说明:搜索oracle各实例的alert文件是否有错误代码出现,如:ORA-00600,ORA-00603等错误。
建议操作:通过以下sql 找到他的路径SQL>select value from v$parameter where name ='background_dump_dest';编号:41.4剩余表空间描述:没有空间压力参数说明:建议操作:SQL>Select a.Tablespace_Name, a.Total || 'M' Total_Space, (a.Total - b.Free) || 'M' Used_Space, To_Char((a.Total - b.Free) / a.Total * 100, '99.99') || '%' Pct_FreeFrom(Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 Total From Dba_Data_Files Group By tablespace_Name) a,(Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 Free From Dba_Free_Space Group By Tablespace_Name) b where a.Tablespace_Name = b.Tablespace_Name;编号:51.5归档模式描述:已归档参数说明:查看数据是否启用归档模式,归档目录是否均已挂接,提醒管理员注意归档文件的备份,以防治归档目录空间不足,以sysdba登陆sqlplus建议操作:SQL> archive log list; (sqlplus下执行)编号:61.6备份策略描述:是否备份spfile文件,控制文件,归档日志文件,备份归档日志文件后是否删除参数说明:建议操作:编号:71.7失效对象参数说明:有(已处理)建议操作:SQL>Select object_name,object_type,status From Dba_Objects Where status<>'V ALID';如有则编译失效对象,在非业务处理时间,以sysdba登陆sqlplusSQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql编号:81.8行链接/迁移参数说明:没有行迁移建议操作:是否有行链接/行迁移的情况出现:SQL>select table_name,num_rows,chain_cnt From dba_tables Where owner='CTAIS2' And chain_cnt<>0;注:含有long raw列的表有行链接是正常的,找到迁移行保存到chained_rows表中,如没有该表执行../rdbms/admin/utlchain.sqlSQL>analyze table tablename list chained rows;可通过表chained_rows中table_name,head_rowid看出哪些行是迁移行如:SQL>create table aa as select a.* from sb_zsxx a,chained_rows b where a.rowid=b.head_rowid and b.table_name ='SB_ZSXX';SQL>delete from sb_zsxx where rowid in (select head_rowid from chained_rows where table_name = 'SB_ZSXX');SQL>insert into sb_zsxx select * from chained_row where table_name = 'SB_ZSXX';编号:91.9job参数说明:没有失败的任务建议操作:查看job是否broken,是否有failureSQL>select job,what,last_date,next_date,failures,broken from dba_jobs Where schema_user='CTAIS2';如有问题建议重建job,如:exec sys.dbms_job.remove(1);commit;execsys.dbms_job.isubmit(1,'REFRESH_ALL_SNAPSHOT;',SYSDATE+1/1440,'SYSDATE+4/1440') ;commit;编号:101.10统计分析参数说明:管理员定期做建议操作:对于采用Oracle Cost-Based-Optimizer的系统,需要定期对数据对象的统计信息进行采集更新,使优化器可以根据准备的信息作出正确的explain plan。
在以下情况更需要进行统计信息的更新:1、应用发生变化2、大规模数据迁移、历史数据迁出、其他数据的导入等3、数据量发生变化查看表或索引的统计信息是否需更新,如:SQL>Select table_name,num_rows,last_analyzed From user_tables where table_name ='DJ_NSRXX'SQL>select count(*) from DJ_NSRXX如num_rows和count(*)如果行数相差很多,则该表需要更新统计信息,建议一周做一次统计信息收集,如:SQL>exec sys.dbms_stats.gather_schema_stats(ownname=>'CTAIS2',cascade => TRUE,degree => 4);编号:111.11死锁现象参数说明:没有发生过死锁建议操作:检查数据库在运行过程中是否有死锁现象,找出被锁住的对象及session IDSQL>select object_name,s.sid,s.serial# From v$locked_object o,v$session s ,dba_objects c Where o.session_id=s.sid And o.object_id=c.object_id;oracle级kill掉该session:SQL>alter system kill session 'sid,serial#';操作系统级kill掉session:#>kill -9 pid编号:121.12失效的索引参数说明:没有失效的索引建议操作:检查是否有失效的索引:注:分区表上的索引status为N/A是正常的SQL>select index_name,table_name,tablespace_name,status From dba_indexes Where owner='CTAIS2' And status<>'VALID';如有失效索引则对该索引做rebuild,如:SQL>alter index INDEX_NAME rebuild tablespace TABLESPACE_NAME;编号:131.13失效的约束参数说明:没有失效的约束建议操作:检查是否有失效的约束:Sq>Select constraint_type,constraint_name,table_name,r_owner,r_constraint_name, status From dba_constraints Where owner='CTAIS2' And status<>'ENABLED';如有失效约束则启用,如:SQL>alter Table TABLE_NAME Enable Constraints CONSTRAINT_NAME;编号:141.14失效的触发器参数说明:没有失效的触发器建议操作:检查是否有失效的触发器:SQL>select trigger_name,table_name,status From dba_triggers Where owner='CTAIS2' And status<>'ENABLED';如有失效触发器则启用,如:SQL>alter Trigger TRIGGER_NAME Enable;编号:151.15索引空间浪费参数说明:管理员定期管理建议操作:索引的空间浪费:只有完全空的索引块才进入空闲列表,找到浪费空间的索引,首先分析索引:SQL>analyze index indexname validate structure;然后查询index_stats视图:SQL>select name,lf_rows,lf_rows_len,del_lf_rows,del_lf_rows_len From index_stats;lf_rows --当前索引值的数量lf_rows_len --当前索引值的大小(byte)del_lf_rows --从索引中删除的值的数量del_lf_rows_len --从索引中删除的值的大小(byte)如果del_lf_rows_len达到lf_rows_len的20%则需要rebuild索引了编号:161.16定期修改密码参数说明:暂时未使用建议操作:在综合征管系统系统的数据库上往往存在很多的用户,如:第三方数据库监控系统,电话申报系统等等,初始安装数据库时的演示用户,管理员用户等等。