首页 > 数据库 >oracle 11g常用运维命令总结

oracle 11g常用运维命令总结

时间:2024-10-19 09:17:38浏览次数:9  
标签:11g name 运维 dba Oracle SQL oracle select

一、日常巡检命令

1、检查Oracle实例状态
SQL> set pages 600 lines 600SQL> select instance_name,host_name,startup_time,status,database_status from v$instance;

说明:“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
img

2、检查归档是否打开
SQL> select name,log_mode,open_mode from v$database;SQL> archive log list

说明:两个命令都可以查看。“LOG_MODE”表示Oracle当前的归档方式。“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG”表示数据库运行在非归档模式下。在我们的系统中数据库必须运行在归档方式下。
img
img
如没开启归档,需要开启归档,步骤如下:

SQL> startup mount #启动数据库到mount状态,必须的SQL> alter database archivelog; #打开归档SQL> archive log list;  #检查归档状态SQL> alter database open; #打开数据库SQL> select instance_name,host_name,startup_time,status,database_status from v$instance;#查看实例状态
SQL> alter system switch logfile; #切换日志

img
img

3、检查oracle数据库的服务进程
[oracle@myoracledemo ~]$ ps -ef|grep ora_|grep -v grep&&ps -ef|grep ora_|grep -v grep|wc -l

说明:在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:
. Oracle写数据文件的进程,输出显示为:“oradbw0_CKDB”
. Oracle写日志文件的进程,输出显示为:“ora_lgwr
CKDB”
. Oracle监听实例状态的进程,输出显示为:“orasmon CKDB”
. Oracle监听客户端连接进程状态的进程,输出显示为:“orapmon CKDB”
. Oracle进行归档的进程,输出显示为:“oraarc0 CKDB”
. Oracle进行检查点的进程,输出显示为:“orackpt CKDB”
. Oracle进行恢复的进程,输出显示为:“orareco CKDB”
img

4、检查Oracle监听状态
[oracle@myoracledemo ~]$ lsnrctl status

说明:“Services Summary”项表示Oracle的监听进程正在监听哪些数据库实例,输出显示中至少应该有“orcl11g”这一项。
img

[oracle@myoracledemo ~]$ ps -ef|grep lsn|grep -v grep

img

4、检查系统和oracle日志文件
[root@myoracledemo ~]# cat /var/log/messages |grep failed

说明:查看是否有与Oracle用户相关的报错信息
img

5、检查oracle日志文件
[oracle@myoracledemo log]$  cat /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/alert_orcl11g.log |grep ora-[oracle@myoracledemo log]$  cat /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/alert_orcl11g.log |grep err[oracle@myoracledemo log]$  cat /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/alert_orcl11g.log |grep fail

img
查看重做日志文件

SQL>  select group#,members,bytes,status,archived from v$log;

img

6、检查Oracle控制文件状态
SQL> select status,name from v$controlfile;

说明:“STATUS”应该为空。状态为空表示控制文件状态正常。
img

7、检查Oracle在线日志状态
SQL> select group#,status,type,member from v$logfile;

说明:输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表示正常
img

8、检查Oracle表空间的状态
SQL> select tablespace_name,status from dba_tablespaces;

说明:输出结果中STATUS应该都为ONLINE。
img

9、检查Oracle所有数据文件状态
SQL> select name,status from v$datafile;

说明:输出结果中“STATUS”应该都为“ONLINE”。

SQL> select file_name,status from dba_data_files;

输出结果中“STATUS”应该都为“AVAILABLE”。
img

10、检查无效对象
SQL> select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';

说明:如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象

SQL> SELECT owner, object_name, object_type FROM dba_objects WHERE status= 'INVALID';

img

11、检查所有回滚段状态
SQL> select segment_name,status from dba_rollback_segs;

说明:输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
img

12、检查数据库连接情况
SQL> select count(*) from v$session;SQL> set pages 600 lines 600SQL> select sid,serial#,username,program,machine,status from v$session;

说明:SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果建立了过多的连接,会消耗数据库的资源,同时,对一些“挂死”的连接可能需要手工进行清理。如果DBA要手工断开某个会话,则执行:(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统的spid,使用ps –ef|grep spidno的方式确认spid不是ORACLE的后台进程。使用操作系统的kill -9命令杀掉连接 )

SQL> alter system kill session 'SID,SERIAL#';SQL> alter system kill session '137,27';

img
img
img
注意:上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

13、检查表空间的使用情况
 SQL>select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100) "% Free" from (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a,(select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) fWHERE a.tablespace_name = f.tablespace_name(+)order by "% Free";

14、检查一些扩展异常的对象
 SQL>select Segment_Name, Segment_Type, TableSpace_Name, (Extents/Max_extents)*100 Percent From sys.DBA_Segments Where Max_Extents != 0 and (Extents/Max_extents)*100>=95 order By Percent;

15、检查system表空间内的内容
 SQL>select distinct(owner) from dba_tables where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM' union select distinct(owner) from dba_indexes where tablespace_name='SYSTEM' andowner!='SYS' and owner!='SYSTEM';

说明:如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。
img

16、检查数据库的等待事件
 SQL>set pages 80 SQL>set lines 120 SQL>col event for a40 SQL>select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';

说明:如果数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句
img

17、查找前十条性能差的sql
 SQL>SELECT * FROM (SELECT PARSING_USER_IDEXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXT FROM V$SQLAREA ORDER BY DISK_READS DESC) WHERE ROWNUM<10 ;

img

18、等待时间最多的5个系统等待事件的获取
 SQL>SELECT * FROM (SELECT * FROM V$SYSTEM_EVENT WHERE EVENT NOT LIKE 'SQL%' ORDER BY TOTAL_WAITS DESC) WHERE ROWNUM<=5;

img

19、检查运行很长的SQL语句
COLUMN USERNAME FORMAT A12 COLUMN OPNAME FORMAT A16 COLUMN PROGRESS FORMAT A8 SELECT USERNAME,SID,OPNAME,ROUND(SOFAR*100 / TOTALWORK,0) || '%' AS PROGRESS,TIME_REMAINING,SQL_TEXT FROM V$SESSION_LONGOPS , V$SQL WHERE TIME_REMAINING <> 0 AND SQL_ADDRESS=ADDRESS AND SQL_HASH_VALUE = HASH_VALUE;

img

20、检查碎片程度高的表
SQL>  SELECT segment_name table_name,COUNT(*) extents FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name HAVING COUNT(*)=(SELECT MAX(COUNT(*)) FROM dba_segments GROUP BY segment_name);

img

21、检查表空间的 I/O 比例
SQL> SELECT DF.TABLESPACE_NAME NAME,DF.FILE_NAME "FILE",F.PHYRDS PYR, F.PHYBLKRD PBR,F.PHYWRTS PYW, F.PHYBLKWRT PBW FROM V$FILESTAT F, DBA_DATA_FILES DF WHERE F.FILE# = DF.FILE_ID ORDER BY DF.TABLESPACE_NAME;

img

22、检查文件系统的 I/O 比例
SQL> SELECT SUBSTR(A.FILE#,1,2) "#", SUBSTR(A.NAME,1,30) "NAME", A.STATUS,A.BYTES,B.PHYRDS,B.PHYWRTS FROM V$DATAFILE A, V$FILESTAT B WHERE A.FILE# = B.FILE#;

img

23、检查死锁及处理
col sid for 999999col username for a10col schemaname for a10col osuser for a16col machine for a16col terminal for a20col owner for a10col object_name for a30col object_type for a10select sid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,o.object_id from dba_objects o,v$locked_object l,v$session s where o.object_id=l.object_id and s.sid=l.session_id;

img
处理方式:

oracle级kill掉该session:alter system kill session '&sid,&serial#';操作系统级kill掉session:#>kill -9 pid

24、检查是否有僵尸进程
SQL> select spid from v$process where addr not in (select paddr from v$session);

img

25、检查消耗CPU最高的进程
SQL> SET LINE 240SET VERIFY OFFCOLUMN SID FORMAT 999COLUMN PID FORMAT 999 COLUMN S_# FORMAT 999COLUMN USERNAME FORMAT A9 HEADING "ORA USER"COLUMN PROGRAM FORMAT A29COLUMN SQL      FORMAT A60COLUMN OSNAME FORMAT A9 HEADING "OS USER"SELECT P.PID PID,S.SID SID,P.SPID SPID,S.USERNAME USERNAME,S.OSUSER OSNAME,P.SERIAL# S_#,P.TERMINAL,P.PROGRAM PROGRAM,P.BACKGROUND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT, 1, 80)) SQL FROM V$PROCESS P, V$SESSION S,V$SQLAREA A WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = A.ADDRESS (+) AND P.SPID LIKE '%&1%';

输入进程PID1868后,可以看到具体的信息
img

26、检查缓冲区命中率
SQL> SELECT a.VALUE + b.VALUE logical_reads,  c.VALUE phys_reads,  round(100*(1-c.value/(a.value+b.value)),4) hit_ratio FROM v$sysstat a,v$sysstat b,v$sysstat c   WHERE a.NAME='db block gets'   AND b.NAME='consistent gets'   AND c.NAME='physical reads' ;

img

27、检查共享池命中率
SQL> select sum(pinhits)/sum(pins)*100 from v$librarycache;

img

28、检查排序区
SQL> select name,value from v$sysstat where name like '%sort%';

img

29、检查日志缓冲区
SQL> select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');

img

30、检查Oracle Job是否有失败
SQL> select job,what,last_date,next_date,failures,broken from dba_jobs Where schema_user='CAIKE';
重新JOB的命令exec sys.dbms_job.remove(1);commit;exec sys.dbms_job.isubmit(1,'REFRESH_ALL_SNAPSHOT;',SYSDATE+1/1440,'SYSDATE+4/1440');commit;

img

31、监控数据量的增长情况
selectA.tablespace_name,(1-(A.total)/B.total)*100 used_percentfrom (select tablespace_name,sum(bytes) totalfrom dba_free_space group by tablespace_name) A,(select tablespace_name,sum(bytes) totalfrom dba_data_files group by tablespace_name) Bwhere A.tablespace_name=B.tablespace_name;

img

32、检查失效的索引
SQL> select index_name,table_name,tablespace_name,status From dba_indexes Where owner='CTAIS2' And status<>'VALID';

img

33、检查不起作用的索引
SQL> SELECT owner, constraint_name, table_name, constraint_type, status FROM dba_constraints WHERE status ='DISABLE' and constraint_type='P';

img

34、检查无效的trigger
SQL> SELECT owner, trigger_name, table_name, status FROM dba_triggers WHERE status = 'DISABLED';

如有失效触发器则启用,如:

Sql>alter Trigger TRIGGER_NAME Enable;

35、查看数据库使用参数文件(SPFILE 还是 PFILE)
SQL> show parameter spfile;

img

36、开启AWR报告进行性能分析
SQL>show parameter statistics_level;  #查看awr是否启用SQL> ALTER SYSTEM SET statistics_level = ALL SCOPE = BOTH;  #启动设置参数SQL>  show parameter statistics_level;#查看awr参数SQL> select * from dba_hist_wr_control; 查看当前的AWR保存策略SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); #手动生成快照SQL>select * from sys.wrh$_active_session_history 查看历史快照SQL>@$ORACLE_HOME/rdbms/admin/awrrpt.sql #生成AWR报告(生成整个数据库)------------------------------------------------------------------------------SQL>@$ORACLE_HOME/rdbms/admin/awrgrpt.sql #生成 Oracle RAC AWR 报告SQL>@$ORACLE_HOME/rdbms/admin/awrrpti.sql #生成 RAC 环境中特定数据库实例的 AWR 报告SQL>@$ORACLE_HOME/rdbms/admin/awrgrpti.sql #生成 Oracle RAC 环境中多个数据库实例的 AWR 报告SQL>@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql #生成 SQL 语句的 AWR 报告SQL>@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql #生成特定数据库实例上某个 SQL 语句的 AWR 报告SQL>@$ORACLE_HOME/rdbms/admin/awrddrpt.sql #生成单实例 AWR 时段对比报告

img
切换到主机目录下,查看html文件即可
img

37、查询系统检查点SCN的命令
SQL> select CHECKPOINT_CHANGE# from v$database;

img

38、查询控制文件中数据文件的SCN命令
SQL> select name,file#,checkpoint_change# from v$datafile;

img

39、查询数据文件头部的SCN号
select name,checkpoint_change# from v$datafile_header;

img

40、控制文件中的数据文件终止scn
SQL> select name,last_change# from v$datafile;

img

41、查询字符集命令
SQL> select userenv ('language') from dual;

img

42、检查软分析百分比
SQL>  select sum(a.value)/count(*) pct from v$metric_history a where a.metric_name = 'Soft Parse Ratio' and group_id = 2 and a.begin_time >= sysdate - 1 and a.end_time < sysdate;

img

43、检查share pool可用空间百分比
SQL>  select freesize freesize_MB, totalsize totalsize_MB, round((freesize/totalsize)*100,2) " FREE%" from (select ceil(sum(bytes) / (1024 * 1024)) totalsize from v$sgastat where pool = 'shared pool' ), (select ceil(bytes / (1024 * 1024)) freesize from v$sgastat where name = 'free memory' and pool = 'shared pool');

img

二、运维小技巧

1、查询用户下所有创建表的语句
SQL>select'select dbms_metadata.get_ddl('||''''||'TABLE'||''''||','||''''||table_name||''''||') from dual;'||chr(10)||'select '||''''||'/'||''''|| ' from dual;' from user_tables;

img

2、查询当时创建用户的sql语句
SQL>select dbms_metadata.get_ddl('USER',u.username) from dba_users u;

img

3、创建DBLINK
create public database link HOconnect to SKDATA identified by oracleusing '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.249)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = SYS$USERS) ) )';

img

4、查询是否创建了DBLINK
SQL> select * from dba_db_links;

img

5、设置密码无期限
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

img

6、rman物理备份
[oracle@myoracledemo ~]$  rman target /RMAN> show all;RMAN> crosscheck archivelog all;RMAN> crosscheck backup;RMAN> delete expired archivelog all;RMAN> delete expired backup;RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;RMAN> run{allocate channel d1 type disk;sql 'alter system archive log current';backup format '/home/oracle/rmanbak/lacgsfull_%U' database include current controlfile plus archivelog ;release channel d1;}RMAN> list backup of database; #查看备份文件

img
img
img
img
备份脚本:

[oracle@myoracledemo rmanbak]$ cat 1.sh #!/bin/bash. ~/.bash_profileecho -------------------------start-----------------------;daterman target /<<EOFbackup as compressed backupset database include current controlfile format '/home/oracle/rmanbak/full_%U.bak';delete noprompt obsolete;#自动删除七天前的归档日志delete noprompt force archivelog all completed before 'sysdate-7';exit;EOFecho -------------------------end-----------------------;date

添加定时任务:

[oracle@myoracledemo rmanbak]$ crontab -l0 1 * * * /home/oracle/rmanbak/rmanbak.sh >rmanbak.log 2>&1

7、定时删除归档日志
[oracle@myoracledemo ~]$ cat del_arch.sh#!/bin/bashsource ~/.bash_profiledeltime=`date +"20%y%m%d%H%M%S"`rman target / nocatalog msglog /home/oracle/scripts/del_arch_${deltime}.log<<EOFcrosscheck archivelog all;delete noprompt archivelog until time 'sysdate-7';delete noprompt force archivelog until time 'SYSDATE-10';EOF添加定时任务删除[root@myoracledemo ~]# cat /var/spool/cron/oracle 0 1 * * * /home/oracle/rmanbak/rmanbak.sh >rmanbak.log 2>&112 00 * * * /home/oracle/del_arch.sh

img

8、检查回收站的配置
SQL> select y.ksppstvl value from sys.x$ksppi x, sys.x$ksppcv y where x.inst_id = userenv('Instance') and y.inst_id = userenv('Instance') and x.indx = y.indx and x.ksppinm like lower('recyclebin');

img
欢迎关注公众号《小周的数据库进阶之路》,更多精彩知识和干货尽在其中。
在这里插入图片描述

标签:11g,name,运维,dba,Oracle,SQL,oracle,select
From: https://blog.csdn.net/qq_36936192/article/details/143062646

相关文章

  • 容器运维必备-Docker 常用命令
    前言:在Kubernetes的日常运维中,虽然我们主要依赖kubectl命令来管理容器和集群,但有时候,Docker的一些命令因其直观和便捷性,能够为我们提供极大的帮助。以下是一些Docker的常用命令,它们可以在Kubernetes环境中作为辅助工具使用,以提高我们的工作效率和操作的灵活性以下是Doc......
  • 高效数据移动指南 | 如何快速实现数据库 Oracle 到 Apache Doris 的数据同步?
    在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。本专题将基于实践经验,从......
  • 开源免费数据库监控工具,MySQL、Oracle、Postgres或MSSQL
    在信息系统项目中,UI、业务逻辑、数据库操作、文件操作、网络、API调用等许多环节都有可能产生性能问题,其中,数据库读写是最为常见的操作,我们也发现其实许多项目中的大部分瓶颈多来自于数据库操作。因此,在做性能优化的过程中,我们总是特别关注持久层的代码、数据库的设计和数据库的物......
  • 运维工程师的发展路线
    运维行业近年来随着技术的快速发展发生了显著的变化,从传统的服务器管理到自动化、云计算和DevOps等方向都有巨大的发展潜力。以下是几个在运维领域可以考虑的发展方向,它们结合了当下技术趋势,有助于为你提供更多职业选择:1.云运维与云架构师随着越来越多的企业转向云计算,云......
  • 国外电商系统开发-运维系统Docker镜像
            如果您在【主机配置】中,添加主机的时候使用的是root超级管理员,而且该主机中确实有docker镜像存在,那么运维系统会自动发现该列表,并且展现在网页中                自动发现的时间,间隔是30分钟一次。在该页面,您可以自行操作docker镜像功能。 ......
  • 机器学习运维(MLOps)
    机器学习运维(MLOps)机器学习运维(MachineLearningOperations,简称MLOps)是一种将机器学习模型从开发到生产部署的系统方法,旨在缩短模型的开发周期,提高模型质量和可靠性。MLOps结合了DevOps、数据工程和机器学习,为整个机器学习生命周期提供了一套最佳实践。随着机器学习在各行......
  • 实战!oracle11g一键安装脚本分享
    #!/bin/bash#一键安装oracle数据库#修改主机名hostnamectlset-hostnamemyoracle#添加主机名与IP对应记录public_ip=$(hostname-I|grep-o-e'[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}'|head-n1)node_name=$(hostname)echo-e"${public_ip}${no......
  • 为什么说卷运维不如卷网络安全?
    最近发现很多从事运维的选择了辞职,重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的,不管什么环节出现问题,基本都是运维背锅。背锅也就罢了,薪资水平也比不上别的岗位。一般运维的薪资水平大多数都是6-9K,还要高频出差。规模小一点的公司省内出差......
  • Oracle 19c OCP 认证考试 083 题库(第3题)- 2024年修正版
    【优技教育】Oracle19cOCP083题库(Q3题)-2024年修正版考试科目:1Z0-083考试题量:85道(线下)通过分数:57%以上考试时间:150min(线下)本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com.cn/ocp/083kaoshitiku/38540354314.ht......
  • 2:Oracle体系结构(物理结构)
    2:Oracle体系结构(物理结构) Oracle实例: PGA(服务器进程)+SGA(内存区)组成Oracle服务器:由一个Oracle数据库和一个Oracle实例组成......