8个DBA最常用的监控Oracle数据库的常用shell脚本

合集下载

oracle 监控指标 sql

oracle 监控指标 sql

oracle 监控指标 sqlOracle监控指标SQL是用于监控Oracle数据库性能的一种方法,通过收集和分析SQL语句的执行Oracle监控指标SQL是用于监控Oracle数据库性能的一种方法,通过收集和分析SQL语句的执行信息,可以帮助我们了解数据库的性能状况,找出性能瓶颈,优化SQL 语句,提高数据库的运行效率。

以下是一些常用的Oracle监控指标SQL:1. 查询SQL执行计划:通过查看SQL语句的执行计划,可以了解数据库如何执行这条SQL语句,从而找出可能存在的性能问题。

例如:sqlEXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10;2. 查询SQL执行时间:通过查看SQL语句的执行时间,可以了解数据库执行这条SQL语句所需的时间。

例如:sqlSELECT elapsed_time, executions, sql_text FROM v$sqlareaWHERE sql_text LIKE '%department_id%';3. 查询SQL缓冲区命中率:通过查看SQL缓冲区的命中率,可以了解数据库缓存的效率。

例如:sqlSELECT name, buffer_gets, buffer_hits, round(buffer_hits / buffer_gets, 2) * 100 AS buffer_hit_percentage FROM v$db_cache_advice;4. 查询SQL排序操作次数:通过查看SQL排序操作的次数,可以了解数据库在执行排序操作时的性能。

例如:sqlSELECT operation, count(*) AS sort_operations FROM v$sqlstats WHERE operation = 'SORT' AND child_number = 0 GROUP BY operation;5. 查询SQL物理读次数:通过查看SQL物理读的次数,可以了解数据库在执行读取操作时的性能。

Oracle数据库常用工具介绍

Oracle数据库常用工具介绍

Oracle数据库常用工具介绍Oracle数据库是一种非常强大和流行的关系型数据库管理系统(RDBMS),它提供了众多的工具和实用程序,用于管理、开发和维护数据库。

这些工具可以帮助用户更轻松地管理和操作Oracle数据库。

下面是一些常用的Oracle数据库工具的介绍。

1. Oracle Enterprise Manager (OEM):Oracle Enterprise Manager是Oracle提供的最重要的工具之一,用于管理和监控Oracle数据库环境。

它提供了一个图形化界面,用于管理多个数据库实例、监视数据库性能、进行故障排除以及执行备份和恢复操作。

2. SQL*Plus:SQL*Plus是Oracle提供的一种命令行工具,它用于与数据库进行交互。

用户可以使用SQL*Plus运行SQL语句、执行存储过程、创建和管理用户以及进行数据导入和导出等操作。

3. SQL Developer:SQL Developer是一个免费的图形化工具,专门为开发人员设计。

它提供了一个友好的界面,用于编写和执行SQL查询、创建和修改数据库对象、调试存储过程以及进行数据导入和导出等操作。

4. Oracle Data Pump:5. Oracle SQL Developer Data Modeler:6. Oracle SQL*Loader:7. Oracle Export/Import Utility:Oracle Export/Import Utility是一个传统的数据导入/导出工具,它用于在不同的Oracle数据库之间进行数据迁移。

它可以导出整个数据库或者指定的数据库对象,并将其导入到另一个数据库中。

8. Oracle Recovery Manager (RMAN):Oracle Recovery Manager是一个备份和恢复工具,它可以用于创建数据库备份、恢复损坏的数据库文件以及执行点恢复等操作。

它可以通过命令行或者Oracle Enterprise Manager进行操作。

oracle数据库监控指标

oracle数据库监控指标

oracle数据库监控指标
1. 数据库连接数(Database Connections):监控数据库中当前的连接数,包括活动连接和空闲连接。

2. 缓冲区命中率(Buffer Cache Hit Ratio):监控数据库的缓冲区使用情况,即在缓冲区中找到所需数据的比例。

3. 表空间使用率(Tablespace Usage):监控数据库中各个表空间的使用情况,包括已用空间、剩余空间和总空间。

4. 锁等待(Lock Waits):监控数据库中的锁等待情况,包括导致锁等待的SQL语句和等待时间。

5. 内存使用率(Memory Usage):监控数据库服务器的内存使用情况,包括物理内存和虚拟内存的使用情况。

6. I/O等待(I/O Waits):监控数据库中的I/O等待情况,包括导致I/O等待的原因和等待时间。

7. SQL执行时间(SQL Execution Time):监控数据库中各个SQL语句的执行时间,用于评估SQL性能。

8. 数据库响应时间(Database Response Time):监控数据库的响应时间,包括从发出SQL请求到获得结果的时间。

9. 数据库可用性(Database Availability):监控数据库的可用性,包括数据库实例的运行状态和数据库服务的连通性。

10. 日志切换频率(Log Switches):监控数据库日志文件切换的频率,即日志文件的生成和切换。

11. 监控表空间中的数据增长率(tablespace growth rate)
12. 监控重做日志增长率(redo log growth rate)。

Oracle DBA 管理脚本

Oracle DBA 管理脚本

Oracle DBA 管理脚本海量数据库资料下载/forum-160286-1.htmlOracle DBA 管理脚本--监控索引是否使用alter index &index_name monitoring usage;alter index &index_name nomonitoring usage;select * from v$object_usage where index_name = &index_name;--求数据文件的I/O分布select ,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetimfrom v$filestat fs,v$dbfile dfwhere fs.file#=df.file# order by ;--求某个隐藏参数的值col ksppinm format a54col ksppstvl format a54select ksppinm, ksppstvlfrom x$ksppi pi, x$ksppcv cvwhere cv.indx=pi.indx and pi.ksppinm like '\_%' escape '\' and pi.ksppinm like '%meer%';--求系统中较大的latchselect name,sum(gets),sum(misses),sum(sleeps),sum(wait_time)from v$latch_childrengroup by name having sum(gets) > 50 order by 2;--求归档日志的切换频率(生产系统可能时间会很长)select start_recid,start_time,end_recid,end_time,minutes from (select test.*, rownum as rnfrom (select b.recid start_recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss') start_time,a.recid end_recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss')end_time,round(((a.first_time-b.first_time)*24)*60,2) minutesfrom v$log_history a,v$log_history b where a.recid=b.recid+1 and b.first_time > sysdate - 1order by a.first_time desc) test) y where y.rn < 30--求回滚段正在处理的事务select ,b.xacts,c.sid,c.serial#,d.sql_textfrom v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction ewhere n=n and n=e.xidusn and c.taddr=e.addrand c.sql_address=d.address and c.sql_hashvalue=d.hash_value order by,c.sid,d.piece;--求出无效的对象select 'alter procedure '||object_name||' compile;'from dba_objectswhere status='INVALID' and wner='&' and object_type in ('PACKAGE','PACKAGE BODY');/select owner,object_name,object_type,status from dba_objects wherestatus='INVALID';--求process/session的状态select p.pid,p.spid,s.program,s.sid,s.serial#from v$process p,v$session s where s.paddr=p.addr;--求当前session的状态select ,ms.valuefrom v$mystat ms,v$statname snwhere ms.statistic#=sn.statistic# and ms.value > 0;--求表的索引信息select ui.table_name,ui.index_namefrom user_indexes ui,user_ind_columns uicwhere ui.table_name=uic.table_name and ui.index_name=uic.index_nameand ui.table_name like '&table_name%' and uic.column_name='&column_name';--显示表的外键信息col search_condition format a54select table_name,constraint_namefrom user_constraintswhere constraint_type ='R' and constraint_name in (select constraint_name from user_cons_columns where column_name='&1');select rpad(child.table_name,25,' ') child_tablename,rpad(cp.column_name,17,' ') referring_column,rpad(parent.table_name,25,' ') parent_tablename,rpad(pc.column_name,15,' ') referred_column,rpad(child.constraint_name,25,' ') constraint_namefrom user_constraints child,user_constraints parent,user_cons_columns cp,user_cons_columns pcwhere child.constraint_type = 'R' and child.r_constraint_name =parent.constraint_name andchild.constraint_name = cp.constraint_name and parent.constraint_name =pc.constraint_name andcp.position = pc.position and child.table_name ='&table_name'order by child.owner,child.table_name,child.constraint_name,cp.position;--显示表的分区及子分区(user_tab_subpartitions)col table_name format a16col partition_name format a16col high_value format a81select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'--使用dbms_xplan生成一个执行计划explain plan set statement_id = '&sql_id' for &sql;select * from table(dbms_xplan.display);--求某个事务的重做信息(bytes)select ,m.valuefrom v$mystat m,v$statname swhere m.statistic#=s.statistic# and like '%redo size%';--求cache中缓存超过其5%的对象select o.owner,o.object_type,o.object_name,count(b.objd)from v$bh b,dba_objects owhere b.objd = o.object_idgroup by o.owner,o.object_type,o.object_namehaving count(b.objd) > (select to_number(value)*0.05 from v$parameter where name = 'db_block_buffers');--求谁阻塞了某个session(10g)select sid, username, event, blocking_session,seconds_in_wait, wait_timefrom v$session where state in ('WAITING') and wait_class != 'Idle';--求session的OS进程IDcol program format a54select p.spid "OS Thread", "Name-User", s.programfrom v$process p, v$session s, v$bgprocess bwhere p.addr = s.paddr and p.addr = b.paddrUNION ALLselect p.spid "OS Thread", ername "Name-User", s.programfrom v$process p, v$session s where p.addr = s.paddr and ername is not null;--查会话的阻塞col user_name format a32select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name, o.owner,o.object_name,s.sid,s.serial#from v$locked_object l,dba_objects o,v$session swhere l.object_id=o.object_id and l.session_id=s.sid order by o.object_id,xidusn desc ;col username format a15col lock_level format a8col owner format a18col object_name format a32select /*+ rule */ ername, decode(l.type,'tm','table lock', 'tx','row lock', null) lock_level, o.owner,o.object_name,s.sid,s.serial#from v$session s,v$lock l,dba_objects owhere l.sid = s.sid and l.id1 = o.object_id(+) and ername is not null ;--求等待的事件及会话信息/求会话的等待及会话信息select se.sid,ername,se.event,se.total_waits,se.time_waited,se.average_waitfrom v$session s,v$session_event sewhere ername is not null and se.sid=s.sid and s.status='ACTIVE' and se.event not like '%SQL*Net%' order by ername;select s.sid,ername,sw.event,sw.wait_time,sw.state,sw.seconds_in_waitfrom v$session s,v$session_wait swwhere ername is not null and sw.sid=s.sid and sw.event not like '%SQL*Net%' order by ername;--求会话等待的file_id/block_idcol event format a24col p1text format a12col p2text format a12col p3text format a12select sid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%' order by event;select name,wait_time from v$latch l where exists (select 1 from (selectsid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%') x where x.p1= tch#);--求会话等待的对象col owner format a18col segment_name format a32col segment_type format a32select owner,segment_name,segment_typefrom dba_extentswhere file_id = &file_id and &block_id between block_id and block_id + blocks - 1;--求buffer cache中的块信息select o.OBJECT_TYPE, substr(o.OBJECT_NAME,1,10) objname , b.objd , b.status, count(b.objd)from v$bh b, dba_objects owhere b.objd = o.data_object_id and o.owner = '&1' group by o.object_type,o.object_name,b.objd, b.status ;--求日志文件的空间使用select le.leseq current_log_sequence#, 100*cp.cpodr_bno/le.lesiz percentage_fullfrom x$kcccp cp,x$kccle lewhere le.leseq =cp.cpodr_seq;--求等待中的对象select /*+rule */ s.sid, ername, w.event, o.owner, o.segment_name,o.segment_type,o.partition_name, w.seconds_in_wait seconds, w.statefrom v$session_wait w, v$session s, dba_extents owhere w.event in (select name from v$event_name where parameter1 = 'file#'and parameter2 = 'block#' and name not like 'control%')and o.owner <> 'sys' and w.sid = s.sid and w.p1 = o.file_id and w.p2 >= o.block_id and w.p2 < o.block_id + o.blocks--求当前事务的重做尺寸select valuefrom v$mystat, v$statnamewhere v$mystat.statistic# = v$statname.statistic# and v$ = 'redo size';--唤醒smon去清除临时段column pid new_value Smonset termout offselect p.pid from sys.v_$bgprocess b,sys.v_$process p where = 'SMON' and p.addr = b.paddr/set termout onoradebug wakeup &Smonundefine Smon--求回退率select b.value/(a.value + b.value),a.value,b.value from v$sysstat a,v$sysstat bwhere a.statistic#=4 and b.statistic#=5;--求DISK READ较多的SQLselect st.sql_text from v$sql s,v$sqltext stwhere s.address=st.address and s.hashvalue=st.hash_value and s.disk_reads > 300;--求DISK SORT严重的SQLselect ername, sql.sql_text, sort1.blocksfrom v$session sess, v$sqlarea sql, v$sort_usage sort1where sess.serial# = sort1.session_numand sort1.sqladdr = sql.addressand sort1.sqlhash = sql.hash_value and sort1.blocks > 200;--求对象的创建代码column column_name format a36column sql_text format a99select dbms_metadata.get_ddl('TABLE','&1') from dual;select dbms_metadata.get_ddl('INDEX','&1') from dual;--求表的索引set linesize 131select a.index_name,a.column_name,b.status, b.index_typefrom user_ind_columns a,user_indexes bwhere a.index_name=b.index_name and a.table_name='&1';求索引中行数较多的select index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where num_rows > 10000 and blevel > 0select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID'--求当前会话的SID,SERIAL#select sid, serial# from v$session where audsid =SYS_CONTEXT('USERENV','SESSIONID');--求表空间的未用空间col mbytes format 9999.9999select tablespace_name,sum(bytes)/1024/1024 mbytes from dba_free_space group by tablespace_name;--求表中定义的触发器select table_name,index_type,index_name,uniqueness from user_indexes wheretable_name='&1';select trigger_name from user_triggers where table_name='&1';--求未定义索引的表select table_name from user_tables where table_name not in (select table_name from user_ind_columns);--执行常用的过程exec print_sql('select count(*) from tab');exec show_space2('table_name');--求free memoryselect * from v$sgastat where name='free memory';select ,sum(b.value) from v$statname a,v$sesstat b where a.statistic# = b.statistic# group by ;查看一下谁在使用那个可以得回滚段,或者查看一下某个可以得用户在使用回滚段,找出领回滚段不断增长的事务,再看看如何处理它,是否可以将它commit,再不行就看看能否kill它,等等,查看当前正在使用的回滚段的用户信息和回滚段信息:set linesize 121SELECT "ROLLBACK SEGMENT NAME ",l.sid "ORACLEPID",p.spid "SYSTEM PID ",ername "ORACLE USERNAME"FROM v$lock l, v$process p, v$rollname r, v$session sWHERE l.sid = p.pid(+) AND s.sid=l.sid AND TRUNC(l.id1(+)/65536) = n AND l.type(+) = 'TX' AND l.lmode(+) = 6 ORDER BY ;--查看用户的回滚段的信息select ername, from v$session s, v$transaction t, v$rollstat r,v$rollname rnwhere s.saddr = t.ses_addr and t.xidusn = n and n = n--生成执行计划explain plan set statement_id='a1' for &1;--查看执行计划select lpad(' ',2*(level-1))||operation operation,options,OBJECT_NAME,position from plan_tablestart with id=0 and statement_id='a1' connect by prior id=parent_id and statement_id='a1'执行计划1)根据SID,从v$sql中找到相应SQL的HASH_VALUE和ADDRESS ;SELECT a.sql_text , a.address , a.hash_valueFROM v$sql a , v$session bwhere a.hash_value = b.sql_hash_valueand b.sid = &sid ;Alan Lee(160921) 22:58:072)根据hash_value和address的值,从v$sql_plan中找到真实的执行计划。

Shell脚本中的进程监控技巧

Shell脚本中的进程监控技巧

Shell脚本中的进程监控技巧Shell脚本是一种用来操作Unix/Linux系统的脚本语言,它可以通过编写一系列的命令来完成一些自动化的任务。

在大规模的系统运维中,经常需要对进程进行监控和管理。

本文将介绍一些Shell脚本中的进程监控技巧,帮助读者更好地掌握这一技能。

一、使用ps命令监控进程要想监控一个进程,首先要知道该进程的进程号(PID)。

可以使用ps命令来获取系统中所有进程的信息。

以下是一个简单的脚本示例,可以获取指定进程的PID以及其占用的CPU和内存等信息:```shell#!/bin/bash# 定义进程名称process_name="example_process"# 获取符合进程名称的进程信息ps aux | grep $process_name | grep -v grep | awk '{print "PID: "$2", CPU: "$3", MEM: "$4}'```该脚本通过使用ps命令以及grep和awk等命令过滤出指定进程的信息,并打印出PID、CPU占用率和内存占用率等信息。

二、使用kill命令管理进程在监控进程的同时,有时候也需要对进程进行管理,比如停止或重启。

可以使用kill命令来发送信号给指定进程。

以下是一个示例,演示如何使用kill命令停止一个进程:```shell#!/bin/bash# 定义进程名称process_name="example_process"# 获取符合进程名称的进程PIDpid=$(ps aux | grep $process_name | grep -v grep | awk '{print $2}')# 停止进程kill $pid```该脚本首先通过ps命令获取进程的PID,然后使用kill命令停止该进程。

shell调用oracle语句

shell调用oracle语句

shell调用oracle语句Shell脚本可以通过调用Oracle语句与数据库进行交互。

在以下内容中,我们将讨论如何使用Shell脚本调用Oracle语句来执行一些常见的数据库操作,如查询数据、插入数据、更新数据和删除数据等。

1. 连接到Oracle数据库在Shell脚本中,可以使用`sqlplus`命令与Oracle数据库建立连接,如下所示:```shell#!/bin/bash# 设置数据库连接信息ORACLE_SID=<ORACLE_SID>ORACLE_USER=<ORACLE_USER>ORACLE_PASSWORD=<ORACLE_PASSWORD># 连接Oracle数据库sqlplus -S$ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_SID << EOF-- 执行SQL语句-- ...EOF```其中,`$ORACLE_SID`是Oracle实例的标识符,`$ORACLE_USER`和`$ORACLE_PASSWORD`是数据库用户的用户名和密码。

2. 查询数据在Shell脚本中,可以使用`select`语句查询Oracle数据库中的数据,如下所示:```shellsqlplus -S$ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_SID << EOF-- 查询数据SELECT * FROM employees WHERE department_id = 10; EOF```以上示例中,查询了`employees`表中`department_id`为10的所有记录。

3. 插入数据在Shell脚本中,可以使用`insert into`语句向Oracle数据库中插入数据,如下所示:```shellsqlplus -S$ORACLE_USER/$ORACLE_PASSWORD@$ORACLE_SID<< EOF-- 插入数据INSERT INTO employees (id, name, salary) VALUES (1, 'John', 5000);COMMIT;EOF```以上示例中,向`employees`表中插入了一条记录,插入的字段包括`id`、`name`和`salary`。

oracle数据库监控指标

oracle数据库监控指标

oracle数据库监控指标Oracle数据库监控是确保数据库正常运行和性能优化的重要任务之一。

下面是一些常见的Oracle数据库监控指标:1. CPU利用率,监控数据库服务器的CPU利用率,以确保系统资源足够支持数据库的正常运行。

高CPU利用率可能表示系统负载过重或者存在性能问题。

2. 内存利用率,监控数据库服务器的内存利用率,包括SGA (System Global Area)和PGA(Program Global Area)的利用情况。

内存不足可能导致数据库性能下降或者出现内存溢出错误。

3. 磁盘空间利用率,监控数据库服务器上的磁盘空间利用率,包括数据文件、日志文件和临时文件等。

磁盘空间不足可能导致数据库无法正常写入数据或者执行其他操作。

4. 数据库连接数,监控数据库的并发连接数,以确保数据库能够处理足够的请求。

高连接数可能导致性能下降或者资源竞争。

5. 数据库会话,监控活动会话和等待事件的情况,以及锁定和死锁等问题。

会话的长时间等待可能表示性能问题或者资源争用。

6. 数据库响应时间,监控数据库的响应时间,包括查询响应时间、事务处理时间等。

高响应时间可能表示数据库性能问题或者缓慢的查询语句。

7. 数据库日志,监控数据库的日志文件,包括错误日志、警告日志和审计日志等。

日志中的错误和警告信息可以帮助识别和解决潜在的问题。

8. 数据库备份和恢复,监控数据库的备份和恢复情况,包括备份的完成时间、备份文件的完整性等。

及时的备份和恢复可以保护数据库的数据安全。

9. 数据库性能指标,监控数据库的性能指标,如平均响应时间、平均等待时间、IO吞吐量等。

这些指标可以帮助评估数据库的性能,并进行性能调优。

10. 数据库版本和补丁,监控数据库的版本和已安装的补丁情况,以确保数据库的安全性和稳定性。

及时应用数据库的补丁可以修复已知的安全漏洞和错误。

以上是一些常见的Oracle数据库监控指标,通过监控这些指标可以及时发现和解决数据库的性能问题,确保数据库的正常运行和高效性能。

oracle dba 日常维护操作手册命令总结

oracle dba 日常维护操作手册命令总结

oracle dba 日常维护操作手册命令总结Oracle DBA日常维护操作手册命令总结:Oracle数据库管理员(DBA)在日常维护数据库时,需要掌握一些常用的命令和操作。

以下是一些重要的Oracle DBA维护命令的总结:1. 数据库连接和认证命令:- sqlplus:用于连接Oracle数据库的命令行工具。

可以使用该命令连接到数据库并执行SQL语句。

- sqlldr:用于将数据从外部文件加载到Oracle数据库表中。

- exp和imp:用于导出和导入数据库对象和数据。

2. 数据库启动和关闭命令:- startup:启动Oracle数据库实例。

- shutdown:关闭Oracle数据库实例。

3. 数据库备份和恢复命令:- RMAN(Recovery Manager):用于备份和恢复Oracle数据库。

- backup:用于创建数据库备份。

- restore:用于从备份文件中恢复数据库。

4. 数据库性能和监控命令:- tkprof:用于分析和优化SQL查询语句的性能。

- awrreport和ashreport:用于生成数据库性能报告和分析。

- v$表名:用于查看数据库的不同性能指标。

5. 数据库对象管理命令:- create:用于创建数据库对象,如表、索引、视图等。

- alter:用于修改数据库对象的结构,例如修改表结构、添加索引等。

- drop:用于删除数据库对象。

6. 用户和权限管理命令:- create user:用于创建数据库用户。

- alter user:用于修改数据库用户的属性。

- grant和revoke:用于授予和收回用户的权限。

7. 数据库存储管理命令:- create tablespace:用于创建数据库表空间,用于存储数据库对象。

- alter tablespace:用于修改表空间的属性。

- alter database:用于修改数据库的参数和属性。

以上仅是一些常用的Oracle DBA日常维护操作命令的总结,实际使用中还有更多的命令和技术需要掌握。

oracle监控方案

oracle监控方案

电力营销系统oracle监控方案oracle监控也有多种方案,例如通过OEM监控管理本机数据库、GRID CONTROL监控管理同一网络里的数据库、通过SNMP协议监控实时性能信息(HP OPENVIEW)。

但都有其缺点,例如OEM界面只能管理本机、GC和SNMP需要在被管机上安装AGENT代理,它们的操作界面也不直观,配置不够灵活。

而HP OPENVIEW是综合监控软件,其费用过高,也不适合。

综合考虑,决定采用QUEST公司的SPOTLIGHT ON ORACLE软件来监控ORACLE 数据库,其优点是实时准确、界面直观、操作配置简单灵活、性能消耗可以限定在一个小范围内、不需要在被监控设备部署AGENT代理。

且是破解版,没有监控数量上的限制。

其原理是通过设定的频率查询ORACLE内部开放的性能视图,主要是CPU上的性能消耗,需要创建新的DBA角色的用户用于监控,所以可以在限定此用户CPU消耗的限定值内(也可以降低查询频率)使用SPOTLIGHT达到实时监控的目的。

其CPU消耗经QUEST 公司严格测试是比较小的,所以不用担心其CPU消耗给生产带来的影响。

1、监控总图很直观的展示系统整体运行的实时情况,如SESSION、HOST、服务进程、SGA、后台进程、DISK等,哪部分出现问题将会红色闪烁展示,如下图示:2、SESSION监控2.1、TOP SE SSION信息从图中可以看到,SID为1042,用户名为AMBER的SESSION其当前日志读为每秒386.64个块数,排名最前,说明这个SESSION当前运行繁忙,结合下面的信息可以查看到具体正执行的SQL。

2.2、SESSION等待事件从SESSION WAITS中可以查看到当前SESSION正在等待的事件及其详细信息。

2.3、SE SSION正在执行的SQL从SESSION SQL中可以查看到SESSION正在执行的SQL语句以及所有打开未关闭的SQL 信息。

oracle数据库监控指标

oracle数据库监控指标

oracle数据库监控指标Oracle数据库监控指标是用来评估和监测数据库性能和健康状况的重要参数。

下面我将从多个角度介绍一些常见的Oracle数据库监控指标。

1. CPU利用率,CPU利用率是衡量数据库服务器处理能力的重要指标。

它反映了数据库服务器上CPU资源的使用情况,可以帮助我们判断数据库服务器是否存在CPU瓶颈。

2. 内存利用率,内存利用率是评估数据库服务器内存使用情况的指标。

它包括物理内存和SGA(System Global Area)的利用率。

高内存利用率可能导致性能下降,因此需要监控和优化内存配置。

3. I/O等待时间,I/O等待时间是衡量数据库存储系统性能的重要指标。

它表示数据库等待I/O操作完成的时间,包括读取和写入操作。

长时间的I/O等待可能是存储系统性能不足的表现。

4. 数据库连接数,数据库连接数是指同时连接到数据库的用户数。

监控数据库连接数可以帮助我们了解数据库的负载情况,及时发现连接数过高的问题。

5. 锁等待,锁等待是指在并发访问数据库时,某个会话等待其他会话释放锁资源的时间。

监控锁等待可以帮助我们发现潜在的死锁和性能瓶颈问题。

6. 数据库响应时间,数据库响应时间是衡量数据库性能的关键指标。

它表示用户请求的响应时间,包括查询、更新、事务等操作的执行时间。

监控数据库响应时间可以帮助我们及时发现性能下降的问题。

7. 日志文件使用率,日志文件使用率是评估数据库日志系统性能的指标。

它表示当前日志文件的使用情况,包括活动日志文件和归档日志文件。

高日志文件使用率可能导致日志切换频繁,影响数据库性能。

8. 数据库备份和恢复时间,数据库备份和恢复时间是评估数据库可用性和灾难恢复能力的重要指标。

监控备份和恢复时间可以帮助我们确保数据库的安全性和可靠性。

除了以上列举的指标,还有许多其他的Oracle数据库监控指标,如网络延迟、PGA(Program Global Area)利用率、表空间使用率等等。

Oracle常用命令大全(很有用,做笔记)

Oracle常用命令大全(很有用,做笔记)

Oracle常⽤命令⼤全(很有⽤,做笔记)⼀、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须⾸先切换到ORACLE⽤户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startup^CSQL> startupORACLE instance started.2、在双机环境下要想启动或关闭ORACLE系统必须⾸先切换到root⽤户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracleOracle数据库有哪⼏种启动⽅式说明:有以下⼏种启动⽅式:1、startup nomount⾮安装启动,这种⽅式启动下可执⾏:重建控制⽂件、重建数据库读取init.ora⽂件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora⽂件。

2、startup mount dbname安装启动,这种⽅式启动下可执⾏:数据库⽇志归档、数据库介质恢复、使数据⽂件联机或脱机,重新定位数据⽂件、重做⽇志⽂件。

在Shell脚本中使用数据库的高级技巧

在Shell脚本中使用数据库的高级技巧

在Shell脚本中使用数据库的高级技巧Shell脚本是一种非常强大的工具,可以用于自动化任务和处理大量数据。

在这篇文章中,我们将讨论在Shell脚本中使用数据库的高级技巧,帮助您更好地利用这个功能。

一、使用Shell脚本连接数据库在Shell脚本中,我们可以使用各种数据库管理系统,如MySQL、PostgreSQL、Oracle等。

首先,我们需要确保已经安装了适当的数据库驱动程序,然后在脚本中引入相应的库文件。

例如,在使用MySQL数据库时,可以使用以下命令连接数据库:```bash#!/bin/bashmysql -h localhost -u username -ppassword -e "SELECT * FROM table"```这个脚本使用mysql命令连接到本地主机上的MySQL数据库,并执行了一个查询操作。

二、执行SQL语句在Shell脚本中,我们可以执行各种SQL语句来与数据库进行交互。

以下是一些常见的SQL操作和在Shell脚本中使用它们的示例。

1. 创建表:```bash#!/bin/bashmysql -h localhost -u username -ppassword -e "CREATE TABLE students (id INT, name VARCHAR(255))"```这个脚本使用mysql命令连接到本地主机上的MySQL数据库,并执行了一个创建表的操作。

2. 插入数据:```bash#!/bin/bashmysql -h localhost -u username -ppassword -e "INSERT INTO students (id, name) VALUES (1, 'John')"```这个脚本使用mysql命令连接到本地主机上的MySQL数据库,并执行了一个插入数据的操作。

数据库(Oracle)运维工作内容及常用脚本命令

数据库(Oracle)运维工作内容及常用脚本命令

数据库(Oracle)运维⼯作内容及常⽤脚本命令1、系统资源状况:--内存及CPU资源--linux,solaris,aixvmstat 5--说明:1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来解决,怎么解决还得看具体情况,⼀般可以通过调整相关内存参数来解决,各种操作系统输出指标、解释及内存调整参数及⽅法不完全⼀样;2)观察CPU资源利⽤情况,⾸先,需要观察CPU上运⾏的任务数,也就是vmstat输出中位于第⼀列上的指标,如果该指标持续⼤于CPU 核⼼数,应该引起注意;如果该指标持续⼤于CPU核⼼数的两倍,那么应该引起重视;如果持续为CPU核⼼数的多倍,系统⼀般会出现应⽤可感知的现象,必须⽴刻想办法解决。

当然,在观察该指标的同时,还要结合CPU利⽤率的指标情况,如:⽤户使⽤百分⽐,系统使⽤百分⽐,空闲百分⽐等指标,如果空闲百分⽐持续低于20%,应该引起注意;如果持续低于10%,应该引起重视;如果持续为0,系统⼀般会出现应⽤可感知的现象,应该⽴刻想办法解决问题;3)CPU⽤户使⽤百分⽐和系统使⽤百分⽐的⽐例,也是应该注意的。

⼀般来说,在⼀个状态正常的系统上,⽤户使⽤百分⽐应该⽐系统使⽤百分⽐⼤很多,⼏倍到⼗⼏倍甚⾄更⾼,如果系统使⽤百分⽐持续接近⽤户使⽤百分⽐,甚⾄⼤于⽤户使⽤百分⽐,说明系统的状态是不正常的,可能是硬件或者操作系统问题,也可能是应⽤问题。

有关vmstat输出中各指标及解释等,可以参照本⼈博客中相关⽂章:。

--IO状况--linux,solarisiostat -dx 5--aixiostat 5--说明:1)该命令主要⽤来观察系统存储设备的负载和性能状况,⾸先,需要观察系统各存储设备的繁忙程度,如果该繁忙程度指标持续超过80%,那么应该引起注意;如果持续超过90%,应该引起重视;如果持续100%,⼀般会出现应⽤感知的现象,应该⽴刻想办法解决问题; 2)其次,需要注意的是系统上各存储设备的IO能⼒,就是每秒钟各存储设备的输⼊、输出的数据量,这个和具体设备的硬件及配置有关,没有⼀个严格的标准,性能好点的能达到每秒上G,甚⾄⼏个G,差的只能到每秒⼏⼗兆甚⾄⼗⼏兆;3)最后,需要观察存储设备完成每次读写操作耗费的时间,这个也是和具体设备硬件和配置相关的,好的设备可能不到1毫秒,差的能到⼏⼗毫秒甚⾄上百毫秒;iostat的输出,在各种操作系统上的输出和解释也不尽相同,具体可以参照本⼈博客的相关⽂章:。

oracle监控指标

oracle监控指标

oracle监控指标
Oracle数据库的监控指标包括:
1. CPU利用率:监控数据库服务器的CPU使用情况,包括执行SQL语句、查询和更新数据等操作的CPU使用情况。

2. 内存利用率:监控数据库服务器的内存使用情况,包括SGA(System Global Area)、PGA(Program Global Area)等共享和私有内存的使用情况。

3. I/O利用率:监控数据库服务器的磁盘I/O操作,包括读写数据文件、日志文件和临时文件的操作情况。

4. 网络流量:监控数据库服务器的网络传输情况,包括接收和发送数据的网络流量。

5. 锁和等待事件:监控数据库中的锁和等待事件,包括查询正在等待资源的会话和锁定资源的会话。

6. 数据库连接数:监控数据库的连接数,包括当前连接数、活动会话数、最大会话数等。

7. SQL执行性能:监控数据库中的SQL语句的执行性能,包括执行时间、CPU
消耗、磁盘和内存等待时间等。

8. 数据库事务:监控数据库的事务提交和回滚的情况,包括事务的提交数、回滚数等。

9. 数据库对象状态:监控数据库中的表、索引、分区等对象的使用情况,包括空间使用情况、上次分析时间、统计信息等。

10. 日志和备份:监控数据库的日志和备份情况,包括日志文件的写入速度、备份的状态和完成时间等。

以上是一些常见的Oracle数据库监控指标,可以通过使用Oracle的监控工具和性能管理工具来收集和分析这些指标,以便及时发现和解决数据库性能和健康问题。

oracle getshell方法

oracle getshell方法

oracle getshell方法Oracle是一款非常强大的数据库管理系统,但也因此成为了黑客攻击的目标之一。

在安全测试中,我们经常会用到Oracle getshell 方法,以测试系统的安全性。

本文将介绍Oracle getshell方法的原理和实现过程。

一、Oracle getshell方法的原理Oracle getshell方法的原理是通过Oracle数据库漏洞,获得服务器的控制权。

其中,最常见的漏洞是TNS Listener漏洞和Oracle Web Listener漏洞。

TNS Listener漏洞是指Oracle的监听程序(TNS Listener)存在漏洞,攻击者可以通过发送特定的请求包,触发漏洞,从而获得服务器的控制权。

而Oracle Web Listener漏洞则是指Oracle的Web Listener存在漏洞,攻击者可以通过构造恶意的HTTP请求,触发漏洞,从而获得服务器的控制权。

二、Oracle getshell方法的实现过程1.扫描目标服务器我们需要对目标服务器进行扫描,查找可能存在的漏洞。

可以使用一些扫描工具,如nmap、nessus等。

2.利用漏洞获取服务器控制权如果发现了TNS Listener漏洞,我们可以使用TNS Poison工具,构造特定的请求包,发送给目标服务器,从而触发漏洞。

如果发现了Oracle Web Listener漏洞,我们可以使用Oracle Web Listener Exploit工具,构造恶意的HTTP请求,发送给目标服务器,从而触发漏洞。

3.上传Webshell或者反弹Shell在成功获取服务器控制权之后,我们可以选择上传Webshell或者反弹Shell。

上传Webshell的方式比较简单,只需要将Webshell文件上传到服务器上,然后通过浏览器访问即可。

如果选择反弹Shell的方式,则需要在服务器上运行一个反弹Shell的程序,然后在本地使用nc等工具连接到该程序,从而获取服务器的Shell。

ORACLE DBA常用脚本

ORACLE DBA常用脚本

ORACLE DBA常用脚本及命令(一)1、查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2、查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name ;4、查看控制文件select name from v$controlfile;5、查看日志文件select member from v$logfile;6、查看表空间的使用情况select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10、查看当前所有对象SQL> select * from tab;11、建一个和a表结构一样的空表SQL> create table b as select * from a where 1=2;SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;12、察看数据库的大小,和空间使用情况SQL> col tablespace format a20SQL> select b.file_id 文件ID,b.tablespace_name 表空间,b.file_name 物理文件名,b.bytes 总字节数,(b.bytes-sum(nvl(a.bytes,0))) 已使用,sum(nvl(a.bytes,0)) 剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比from dba_free_space a,dba_data_files bwhere a.file_id=b.file_idgroup by b.tablespace_name,b.file_name,b.file_id,b.bytesorder by b.tablespace_name/dba_free_space --表空间剩余空间状况dba_data_files --数据文件空间占用情况13、查看现有回滚段及其状态SQL> col segment format a30SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;14、查看数据文件放置的路径SQL> col file_name format a50SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 15、显示当前连接用户SQL> show user16、把SQL*Plus当计算器SQL> select 100*20 from dual;17、连接字符串SQL> select 列1||列2 from 表1;SQL> select concat(列1,列2) from 表1;18、查询当前日期SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;19、用户间复制数据SQL> copy from user1 to user2 create table2 using select * from table1;20、视图中不能使用order by,但可用group by代替来达到排序目的SQL> create view a as select b1,b2 from b group by b1,b2;21、通过授权的方式来创建用户SQL> grant connect,resource to test identified by test;SQL> conn test/test一、ORACLE的表的分类:1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。

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监听

oracle监听Oracle监听概述Oracle监听是Oracle数据库中一个重要的组件,它负责接收并处理客户端应用程序的连接请求。

作为数据库服务器的入口点,监听程序的正常运行对于数据库的可用性至关重要。

本文将探讨Oracle 监听的功能、配置和管理。

功能Oracle监听的主要功能是监听客户端应用程序发起的连接请求,并将其转发给相应的数据库实例。

当客户端应用程序需要连接到Oracle数据库时,它将发送一个连接请求到指定的监听程序,监听程序会在数据库服务器上的某个端口上监听连接请求。

一旦收到连接请求,监听程序将会验证客户端的身份,并将连接请求转发给正确的数据库实例。

配置在Oracle数据库中,监听程序通过监听文件进行配置。

监听文件通常是一个文本文件,其中包含了监听程序的配置信息。

在监听文件中,我们可以指定监听程序的监听协议、监听地址、监听端口以及要连接的数据库实例等信息。

通常,监听程序的配置文件名为tnsnames.ora。

管理对于Oracle监听的管理主要包括启动、停止和重启监听程序。

Oracle提供了很多不同的方式来管理监听程序。

以下是一些常见的管理监听程序的方法:命令行管理工具:可以使用Oracle提供的命令行管理工具如lsnrctl来管理监听程序。

使用命令行工具可以启动、停止、重启监听程序,同时也可以监控和配置监听程序。

图形化管理工具:Oracle Enterprise Manager是一个功能强大的图形化管理工具,它可以用来管理Oracle数据库和监听程序。

通过Oracle Enterprise Manager,管理员可以轻松地管理监听程序,并获得实时的性能信息。

自动启动:在Oracle数据库安装完成后,监听程序通常会被自动启动。

管理员只需要确保监听程序在数据库服务器启动时自动启动即可。

故障排除当出现连接问题或监听程序不可用时,可能需要进行故障排除以确定问题的原因。

以下是一些常见的故障排除步骤:检查监听程序的状态:通过使用命令行管理工具lsnrctl status可以查看监听程序的状态。

DBA日常工作

DBA日常工作

载自oracle中文技术论坛。

从整体上介绍了一个dba的职责和任务等等。

ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控:(1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。

(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。

(3). 每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库性能调整的机会,进行数据库性能调整,提出下一步空间管理计划。

对ORACLE数据库状态进行一次全面检查。

(Analyze是收集与数据库有关的统计信息)每天的工作(1).确认所有的INSTANCE状态正常(保证实例正常)登陆到所有数据库或例程,检测ORACLE后台进程:$ps –ef|grep ora (linux的操作命令)(2). 检查文件系统的使用(剩余空间)。

如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。

$df –k(3). 检查日志文件和trace文件记录alert和trace文件中的错误。

连接到每个需管理的系统? 使用’telnet’? 对每个数据库,cd 到bdump目录,通常是$ORACLE_BASE/<SID>/bdump? 使用Unix ‘tail’命令来查看alert_<SID>.log文件? 如果发现任何新的ORA- 错误,记录并解决(4). 检查数据库当日备份的有效性。

对RMAN备份方式: RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、还原和恢复oracle 数据库检查第三方备份工具的备份日志以确定备份是否成功对EXPORT备份方式:检查exp日志文件以确定备份是否成功对其他备份方式:检查相应的日志文件(5). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。

精心整理了一套Oracle日常巡检脚本,速速收藏!

精心整理了一套Oracle日常巡检脚本,速速收藏!

精心整理了一套Oracle日常巡检脚本,速速收藏!展开全文SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总前言0.登录数据库sqlplus / nologconn /as sysdba(或者conn 账号/密码)1. 检查数据库基本状况包含:检查Oracle实例状态,检查Oracle 服务进程,检查Oracle监听进程,共三个部分。

1.1. 检查Oracle实例状态设置打印输出一行的字符数,这里设置成500。

set linesize 500;select instance_name,host_name,startup_time,status,database_statusfrom v$instance;其中v$instance是实例状态视图;“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。

1.2. 检查Oracle在线日志状态selectgroup#,status,type,memberfrom v$logfile;其中v$logfile是描述重做日志信息的视图,上面的输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。

注:“STATUS”显示为空表示正常。

1.3. 检查Oracle表空间的状态selecttablespace_name,statusfrom dba_tablespaces;dba_tablespaces是所有表空间的描述信息,上面的输出结果中STATUS应该都为ONLINE。

1.4. 检查Oracle所有数据文件状态select name,status from v$datafile;其中v$datafile是从oracle的控制文件中获得的数据文件的信息的,上面的输出结果中“STATUS”应该都为“ONLINE”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cd /var/opt/oracle
rm -f lsnr.exist
ps -ef | grep PPRD10 | grep -v grep > lsnr.exist
if [ -s lsnr.exist ]
then
echo
else
echo "Alert" | mailx -s "Listener 'PPRD10' on `hostname` is down" $DBALIST
以下是实例可用性的报表:
$ sh ckinstance.ksh
Wed May 13 12:51:20 PDT 2009
Oracle Database(s) Status gambels :
Oracle Instance - PPRD: Up
Oracle Instance - PPRD10: Up
oracle 22610 1 0 02:45:02 ? 0:02 /data/app/oracle/10.2.0/bin/tnslsnr LISTENER -inherit
oracle 5268 28972 0 08:13:02 pts/4 0:00 grep -i listener
ORATAB=/var/opt/oracle/oratab;export ORATAB
PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATH
oratab文件中列出了服务器上的所有数据库
$ cat /var/opt/oracle/oratab
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
#
#
# *:/data/app/oracle/9.2.0:N
TRNG:/data/app/oracle/9.2.0:Y
*:/data/app/oracle/9.2.0:N
PPRD:/data/app/oracle/10.2.0:Y
PPRD10:/data/app/oracle/10.2.0:N
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
2. 检查Oracle监听器的可用性
以下有一个类似的脚本检查Oracle监听器。假如监听器停了,该脚本将会重新启动监听器:
#####################################################################
## cklsnr.sh ##
#!/bin/ksh
EDITOR=vi; export EDITOR
ORACLE_SID=PPRD10; export ORACLE_SID
ORACLE_BASE=/data/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/10.2.0; export ORACLE_HOME
#####################################################################
#!/bin/ksh
TNS_ADMIN=/var/opt/oracle; export TNS_ADMIN
ORACLE_SID= PPRD10; export ORACLE_SID
3. 查看Oracle存档目录的文件系统使用情况
$ df -k | grep /data
/dev/md/dsk/d50 104977675 88610542 15317357 86% /data
4. 统计alter.log文件中的行数:
$ cat alert_PPRD10.log | wc -l
本文介绍了8个常用的监控数据shell脚本。首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本。网上也有好多类似的文章,但基本上都不能正常运行,花点时间重新整理了下,以后就能直接使用了。
一.同时文章还介绍了8个重要的脚本来监控Oracle数据库:
1.检查实例的可用性
13124
$ more alert_PPRD10.log | wc -l
13124
5. 列出alert.log文件中的全部Oracle错误信息:
$ grep ORA-* alert.log
ORA-00600: internal error code, arguments: [kcrrrfswda.1], [], [], [], [], []
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
TNS_ADMIN=/var/opt/oracle;export TNS_ADMIN
NLS_LANG=american; export NLS_LANG
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMAT
ps--显示进程
grep--搜索文件中的某种文本模式
mailx--读取或者发送mail
cat--连接文件或者显示它们
cut--选择显示的列
awk--模式匹配语言
df--显示剩余的磁盘空间
以下是DBA如何使用这些命令的一些例子:
1. 显示服务器上的可用实例:
$ ps -ef| grep smon
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
星期几 0 - 6, with 0 = Sunday
7. Unix命令或者Shell脚本
要编辑一个crontab文件,输入: Crontab -e
要查看一个crontab文件,/analyze_table.ksh
30 3 * * 3,6 /dba/admin/hotbackup.ksh /dev/null 2>&1
oracle 22086 1 0 02:32:24 ? 0:04 ora_smon_PPRD10
oracle 5215 28972 0 08:10:19 pts/4 0:00 grep smon
2. 显示服务器上的可用监听器:
$ ps -ef grep listener grep -v grep
ORATAB=/var/opt/oracle/oratab
echo "`date` "
echo "Oracle Database(s) Status `hostname` :/n"
db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "/#" | grep -v "/*"`
lsnrctl start PPRD10
fi
3. 检查Alert日志(ORA-XXXXX)
####################################################################
## ckalertlog.sh ##
####################################################################
(grep命令应该加上-i参数,即grep -i listener,该参数的作用是忽略大小写,因为有些时候listener是大写的,这时就会看不到结果)
$ ps -ef|grep -i listener
oracle 9655 1 0 Mar 12 ? 0:01 /data/app/oracle/9.2.0/bin/tnslsnr LISTENER -inherit
在上面的例子中,第一行显示了一个分析表的脚本在每个星期5的4:00am运行。第二行显示了一个执行热备份的脚本在每个周三和周六的3:00a.m.运行。
三.监控数据库的常用Shell脚本
以下提供的8个shell脚本覆盖了DBA每日监控工作的90%,你可能还需要修改UNIX的环境变量。
1. 检查Oracle实例的可用性
以下的脚本检查oratab文件中列出的所有数据库,并且找出该数据库的状态(启动还是关闭)
###################################################################
## ckinstance.ksh ##
相关文档
最新文档