Linux 、oracle 数据库运维监控常用语句和命令



Oracle

1、查询oracle的连接数
select count(*) from v$session;
2、查询oracle的并发连接数
4select count(*) from v$session where status='ACTIVE';
3、查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username;
4、查看所有用户:
select * from all_users;
---用户登录不区分大小写
alter system set sec_case_sensitive_logon=false;
---用户解锁
alter user j2_hx account unlock;
alter user j2_hx identified by j2_hx;
grant dba,resource,connect to j2_hx;
5、查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
select * from dba_sys_privs;
select * from user_sys_privs;
6、查看角色(只能查看登陆用户拥有的角色)所包含的权限
13select * from role_sys_privs;
7、查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
8、查看所有角色:
select * from dba_roles;
9、查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
10、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS;

Linux


查询文件最后300行
tail -n 300 log.xml >> log300.txt
查询心跳
select * from SYS.DBA_HIST_SYSMETRIC_SUMMARY t
查询磁盘组使用情况
select 
col1 as "磁盘组名称",
col2 as "磁盘组总大小",
col3 as "磁盘组剩余大小",
round(col4,4)*100||'%' as "磁盘组使用率"
from(
select  asmgroup. NAME  as col1,
asmgroup.TOTAL_MB as col2,
asmgroup.FREE_MB as col3,
asmgroup.COLD_USED_MB/asmgroup.TOTAL_MB as col4

 from v$asm_diskgroup asmgroup
 );

#查看oracle  alter 日志(153.12.72.110核心01 alter)
cd $ORACLE_BASE/diag/rdbms/gzltgshx/gzltgshx1/trace
tail -300f alert_gzltgshx1.log

#查看oracle  alter 日志(10.104.168.156接收01 alter)
cd $ORACLE_BASE//diag/rdbms/gzltscjs/gzltscjs1/trace
tail -300f alert_gzltscjs1.log

#查询数据库集群心跳
select BEGIN_TIME         btime,
       INTSIZE,
       METRIC_NAME        mrtric_name,
       NUM_INTERVAL       val,
       MINVAL,
       MAXVAL,
       AVERAGE            avgval,
       STANDARD_DEVIATION std,
       SUM_SQUARES        sum_square
  from dba_hist_sysmetric_summary
 where METRIC_NAME in
       ('Network Traffic Volume Per Sec', 'I/O Megabytes     per Second')
   and rownum < 11
 order by std desc;


select * from v$asm_diskgroup;
select  col1 as "名称",
col2 as "总大小",
col3 as "剩余大小",
col4 as "使用比"
from(
 select
a.NAME  as col1,
a.TOTAL_MB as col2,
a.FREE_MB as col3,
round(nvl(a.COLD_USED_MB/a.TOTAL_MB,0),4)*100 || '%' as col4
 from v$asm_diskgroup a
);

---查询死锁
select a.XIDUSN,
       a.OBJECT_ID,
       b.OWNER,
       b.OBJECT_NAME,
       a.SESSION_ID,
       a.ORACLE_USERNAME,
       a.OS_USER_NAME,
       a.PROCESS,
       a.LOCKED_MODE
  from v$locked_object a, dba_objects b
 where a.OBJECT_ID = b.OBJECT_ID


select count(*) from v$process --当前的连接数
select value from v$parameter where name = 'processes' --数据库允许的最大连接数
修改最大连接数:
alter system set processes = 300 scope = spfile;
重启数据库:
shutdown immediate;
startup;
--查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;
select count(*) from v$session #连接数

select count(*) from v$session where status='ACTIVE' #并发连接数
show parameter processes #最大连接
alter system set processes = value scope = spfile;重启数据库 #修改连接

SQL> Select count(*) from v$session where status='ACTIVE' ;

COUNT(*)
----------
20

SQL> Select count(*) from v$session;

COUNT(*)
----------
187

SQL> show parameter processes;

NAME TYPE VALUE
------------------------------------ ----------- ----------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 450
SQL>

并发指active,I SEE
SQL> select count(*) from v$session #连接数
SQL> Select count(*) from v$session where status='ACTIVE' #并发连接数
SQL> show parameter processes #最大连接
SQL> alter system set processes = value scope = spfile;重启数据库 #修改连接

unix 1个用户session 对应一个操作系统 process
而 windows体现在线程
DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status
from v$session;
输出结果为:
SID SERIAL# USERNAME PROGRAM MACHINE STATUS
---- ------- ---------- ----------- --------------- --------
1 1 ORACLE.EXE WORK3 ACTIVE
2 1 ORACLE.EXE WORK3 ACTIVE
3 1 ORACLE.EXE WORK3 ACTIVE
4 1 ORACLE.EXE WORK3 ACTIVE
5 3 ORACLE.EXE WORK3 ACTIVE
6 1 ORACLE.EXE WORK3 ACTIVE
7 1 ORACLE.EXE WORK3 ACTIVE
8 27 SYS SQLPLUS.EXE WORKGROUP\\WORK3 ACTIVE
11 5 DBSNMP dbsnmp.exe WORKGROUP\\WORK3 INACTIVE
其中,
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果DBA要手工断开某个会话,则执行:
alter system kill session \'SID,SERIAL#\'
sql语句
SQL语句如下:

SELECT username, machine, program, status, COUNT (machine) AS
连接数量
FROM v$session
GROUP BY username, machine, program, status
ORDER BY machine;

显示结果(每个人的机器上会不同)

SCHNEIDER|WORKGROUD\WANGZHENG|TOAD.exe|ACTIVE|1
SCHNEIDER|WORKGROUP\597728AA514F49D|sqlplusw.exe|INACTIVE|1
|WWW-Q6ZMR2OIU9V|ORACLE.EXE|ACTIVE|8
PUBLIC|||INACTIVE|0
select USER,sid,serial#,UTL_INADDR.GET_host_ADDRESS as host,SYS_CONTEXT('USERENV','ip_ADDRESS') as local,SYSDATE
from V$session;



1 查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l
2、 查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc –l
3、 查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq
4、 查看CPU的主频
#cat /proc/cpuinfo |grep MHz|uniq
5、 # uname -a
6、 Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)
7、 # cat /etc/issue | grep Linux
8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看当前操作系统发行版信息)
9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
9 # cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)

10、# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l
8(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)

12、如何获得CPU的详细信息:
linux命令:cat /proc/cpuinfo
13、用命令判断几个物理CPU,几个核等:
逻辑CPU个数:
# cat /proc/cpuinfo | grep "processor" | wc -l
物理CPU个数:
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
14、每个物理CPU中Core的个数:
# cat /proc/cpuinfo | grep "cpu cores" | wc -l
15、是否为超线程?如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
# cat /proc/cpuinfo | grep "siblings"

1.查看CPU信息命令
cat /proc/cpuinfo
AIX 查询SMLCTL
2.查看内存信息命令
cat /proc/meminfo
3.查看硬盘信息命令
fdisk -l

查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)

# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)
PS:Jay added on 10th, May, 2011
# 其实是可能有超线程HT技术,不一定是有4核,也可能是2核4线程;当时还理解不清楚

# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)

再完整看cpu详细信息, 不过大部分我们都不关心而已.
# dmidecode | grep 'Processor Information'

查看内 存信息
# cat /proc/meminfo

# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)

# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)

查看机器型号
# dmidecode | grep "Product Name"

查看网卡信息
# dmesg | grep -i eth
---RAC 节点脱离操作
清理RAC集群节点配置
/u01/app/11.2.0/grid/crs/install
./rootcrs.pl -verbose -deconfig -force
./roothas.pl  -deconfig -force -verbose

查询oracle归档大小
show parameter db_recivery_file_dest_size;
select * from v$recovery_file_dest;


log_20161203.zip

alterlog_20161203.zip


----查询月增量
select C.tablespace_name AS "表空间名称",
       D."Total(MB)" AS "总量(MB)",
       D."Used(MB)" - C."Used(MB)" AS "增量(MB)",
       to_char(next_day(trunc(sysdate),1)-40,'yyyy/mm/dd')||'--'||to_char(next_day(trunc(sysdate),1)-11,'yyyy/mm/dd') "时间范围"
  from (select B.name tablespace_name,
               case when B.name not like 'UNDO%' then round(A.tablespace_size * 8 / 1024)
                    when B.name like 'UNDO%' then round(A.tablespace_size * 8 / 1024 / 2)  
                    END as "Total(MB)",
               round(A.tablespace_usedsize*8 / 1024) "Used(MB)",
               A.rtime
          from DBA_HIST_TBSPC_SPACE_USAGE A, v$tablespace B
         where A.tablespace_id = B.TS#
           and to_char(to_date(replace(rtime, '/', null),
                               'mmddyyyy hh24:mi:ss'),
                       'yyyymmdd hh24:mi') =
               to_char(next_day(trunc(sysdate),2)-14,'yyyymmdd hh24:mi')) C,
       (select B.name tablespace_name,
               case when B.name not like 'UNDO%' then round(A.tablespace_size * 8 / 1024)
                    when B.name like 'UNDO%' then round(A.tablespace_size * 8 / 1024 / 2)  
                    END as "Total(MB)",
               round(A.tablespace_usedsize*8 / 1024) "Used(MB)",
               A.rtime
          from DBA_HIST_TBSPC_SPACE_USAGE A, v$tablespace B
         where A.tablespace_id = B.TS#
           and to_char(to_date(replace(rtime, '/', null),
                               'mmddyyyy hh24:mi:ss'),
                       'yyyymmdd hh24:mi') =
               to_char(next_day(trunc(sysdate),2)-7,'yyyymmdd hh24:mi')) D
 where C.tablespace_name = D.tablespace_name
 and  C.tablespace_name like'TS%';

---清理归档日志
1、设置ORACLE环境变量 export ORACLE_SID=gzltgshx
2、使用命令rman 进入到数据库逻辑单元
3、connect target/
4、crosscheck archivelog all;
5、delete archivelog all completed before'sysdate -7';
6、yes


---表空间使用率
SELECT df.tablespace_name,
       COUNT(*) datafile_count,
       ROUND(SUM(df.BYTES) / 1048576 / 1024, 2) size_gb,
       ROUND(SUM(free.BYTES) / 1048576 / 1024, 2) free_gb,
       ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2) used_gb,
       ROUND(MAX(free.maxbytes) / 1048576 / 1024, 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_free
  FROM dba_data_files df,
       (SELECT tablespace_name,
               file_id,
               SUM(BYTES) BYTES,
               MAX(BYTES) maxbytes
          FROM dba_free_space
         where bytes > 1024 * 1024
         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

----空间使用率
---表空间使用率
SELECT df.tablespace_name,
       COUNT(*) datafile_count,
       ROUND(SUM(df.BYTES) / 1048576 / 1024, 2) size_gb,
       ROUND(SUM(free.BYTES) / 1048576 / 1024, 2) free_gb,
       ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2) used_gb,
      /* ROUND(MAX(free.maxbytes) / 1048576 / 1024, 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_free*/
       ROUND((ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2))/(ROUND(SUM(df.BYTES) / 1048576 / 1024, 2)),2)*100 || '%' AS "使用比"
  FROM dba_data_files df,
       (SELECT tablespace_name,
               file_id,
               SUM(BYTES) BYTES,
               MAX(BYTES) maxbytes
          FROM dba_free_space
         where bytes > 1024 * 1024
         GROUP BY tablespace_name, file_id) free
 WHERE df.tablespace_name = free.tablespace_name(+)
   AND df.file_id = free.file_id(+)
   and df.TABLESPACE_NAME like'TS%'
 GROUP BY df.tablespace_name
/* ORDER BY 8*/

10.07  19.14
09.56  19.35

---核心
SELECT df.tablespace_name,
       ROUND(SUM(df.BYTES) / 1048576 / 1024, 2) size_gb,
       ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2) used_gb,
      /* ROUND(MAX(free.maxbytes) / 1048576 / 1024, 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_free*/
       ROUND((ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2))/(ROUND(SUM(df.BYTES) / 1048576 / 1024, 2)),2)*100 || '%' AS "使用率"
  FROM dba_data_files df,
       (SELECT tablespace_name,
               file_id,
               SUM(BYTES) BYTES,
               MAX(BYTES) maxbytes
          FROM dba_free_space
         where bytes > 1024 * 1024
         GROUP BY tablespace_name, file_id) free
 WHERE df.tablespace_name = free.tablespace_name(+)
   AND df.file_id = free.file_id(+)
   and df.TABLESPACE_NAME like'TS%'
 GROUP BY df.tablespace_name
/* ORDER BY 8*/

---查询
SELECT df.tablespace_name,
       ROUND(SUM(df.BYTES) / 1048576 / 1024, 2) size_gb,
       ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2) used_gb,
      /* ROUND(MAX(free.maxbytes) / 1048576 / 1024, 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_free*/
       ROUND((ROUND(SUM(df.BYTES) / 1048576 / 1024 -
             SUM(free.BYTES) / 1048576 / 1024,
             2))/(ROUND(SUM(df.BYTES) / 1048576 / 1024, 2)),2)*100 || '%' AS "使用率"
  FROM dba_data_files df,
       (SELECT tablespace_name,
               file_id,
               SUM(BYTES) BYTES,
               MAX(BYTES) maxbytes
          FROM dba_free_space
         where bytes > 1024 * 1024
         GROUP BY tablespace_name, file_id) free
 WHERE df.tablespace_name = free.tablespace_name(+)
   AND df.file_id = free.file_id(+)
   and df.TABLESPACE_NAME like'TS_GS%'
 GROUP BY df.tablespace_name
/* ORDER BY 8*/

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值