-----数据库慢需要查看活跃会话等待事件:
select sql_id,event,count(*) from v$session where username is not null and status='ACTIVE' group by sql_id,event order by 3;
-----连接数状态:
select inst_id,status,count(*) from gv$session where type<>'BACKGROUND' group by inst_id,status order by 1,3;
-----查看全表扫:
set linesize 200 pagesize 40
column program format a16
column machine format a15
column object_name format a20
column object_owner format a15
select s.inst_id,s.sid,s.program,s.machine,s.sql_id,p.object_name,p.object_owner,p.cost from gv$session s, gv$sql_plan p where s.inst_id=p.inst_id and s.sql_id=p.sql_id and p.operation = 'TABLE ACCESS' and p.options = 'FULL' and p.object_owner<>'SYS' and p.cost>100000 order by p.cost, s.inst_id,s.sid;
-----查看某个语句的sid:
select sid,serial# from v$session where sql_id in (select sql_id from v$sqlarea where sql_text like 'select count(*) as col_0_0_ from T_CC_BILLMAINDATA tccbillmai0_, T_CC_BILL tccbill1_%');
-----批量杀某个语句:
select 'alter system kill session '''||sid||','||serial#||'''; 'from v$session where sql_id in (select sql_id from v$sqlarea where sql_text like 'select count(*) as col_0_0_ from T_CC_BILLMAINDATA tccbillmai0_, T_CC_BILL tccbill1_%')
----批量杀操作系统进程:
select 'kill -9 ' || spid from v$process where addr in (select paddr from v$session where sql_id='xxxxxx' );
----批量在系统里杀阻塞;
select 'kill -9 '||p.spid from v$session s, v$process p where type<>'BACKGROUND' and s.paddr=p.addr and s.sid in (select FINAL_BLOCKING_session from v$session );
1、查看数据文件信息:G col file_name for a55 select tablespace_name,file_name,bytes/1024/1024/1024 gb,AUTOEXTENSIBLE from dba_data_files where tablespace_name='&1';
2、查看ASM2磁盘组信息: select group_number,name,total_mb/1024 total_gb,free_mb/1024 free_gb,TYPE from v$asm_diskgroup;
3、查看ASM磁盘组磁盘的信息 col PATH for a33 col NAME for a15 col FAILGROUP for a15 select GROUP_NUMBER,DISK_NUMBER,TOTAL_MB/1024,FREE_MB/1024,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where GROUP_NUMBER='2';
3、查看表空间大小:
SELECT a.tablespace_name,round(total/1024/1024) "avail",round(free/1024/1024) "free",ROUND((total-free)/total,4)*100 "percent" FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name ) a,(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b WHERE a.tablespace_name=b.tablespace_name ORDER BY 4;
查看归档生成量:
select trunc(FIRST_TIME,'dd'),sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024 from v$archived_log group by trunc(FIRST_TIME,'dd') order by 1;
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++
①查看数据库sga,pga的使用情况:
select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from (select 'SGA' name,(select sum(value/1024/1024) from v$sga) total, (select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual) union select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from ( select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total, (select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);
②查看shared_pool使用情况:
select name,round(total,2) total,round((total-free),2) used,round(free,2) free,round((total-free)/total*100,2) pctused from ( select 'Shared pool' name,(select sum(bytes/1024/1024) from v$sgastat where pool='shared pool')total, (select bytes/1024/1024 from v$sgastat where name='free memory' and pool='shared pool') free from dual)
③查看shared_pool中大于10m的sql: SELECT substr(sql_text,1,100) "Stmt",count(*), sum(sharable_mem) "Mem",sum(users_opening) "Open",sum(executions) "Exec" FROM v$sql GROUP BY substr(sql_text,1,100) HAVING sum(sharable_mem)>10000000;
④查看占用pga的进程: set lines 200 col name for a30 Select Server, Osuser, Name, Value / 1024 / 1024 Mb, s.Sql_Id, Spid, s.sid From V$session s, V$sesstat St, V$statname Sn, V$process p Where St.Sid = s.Sid And St.Statistic# = Sn.Statistic# And Sn.Name Like 'session pga memory' And p.Addr = s.Paddr Order By Value Desc;
⑤根据spid查看对应的sql语句: select sql_text from v$sqlarea where (address, hash_value) in (select /*+unnest*/DECODE(sql_hash_value, 0, prev_sql_addr, sql_address),DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value) from v$session where sid = (select sid from v$session where paddr = (select ADDR from v$process where SPID = '22675464'))); +++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++
-----批量授权:
select 'grant select on PICCTJ02_NEW.' || tname || ' to b;' from tab; select 'GRANT SELECT ON PICCHB02_NEW.'||table_name||' to JXHB_NEW_QRY;' from dba_tables where OWNER='PICCHB02_NEW';
4、统计活动的undo select sum(bytes /(1024*1024*1024)) from dba_undo_extents where status='ACTIVE';
5、查看大于20M的文件 find / -type f -size +20M -print0 | xargs -0 du -h | sort -nr
6、查看shared_pool的大小 select sum(bytes)/1024/1024/1024 from v$sgastat where pool='shared pool'; 查看空闲的: select * from v$sgastat where name = 'free memory' and pool = 'shared pool';
7、查看占用内存100k的sql语句: select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem
8、查看字符集 select userenv('language') from dual; select * from nls_database_parameters;
9、Oracle查询temp表空间的名字和位置 select tablespace_name,file_name from dba_temp_files; col FILE_NAME for a55 select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024/1024 total_gb,USER_BYTES/1021/1024/1024 gb from dba_temp_files;
Oracle查询temp表空间的使用率
select tablespace_name,round(free_space/1024/1024/1024,2) "free(GB)",round(tablespace_size/1024/1024/1024,2) "total(GB)",round(nvl(free_space,0)*100/tablespace_size,3) "Free percent" from dba_temp_free_space; SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS, USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)", NVL(FREE_SPACE,0) "FREE_SPACE(M)" FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE, ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SPACE_HEADER GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);
查看回收站大小:
select sum(SPACE)*8/1024 M from dba_recyclebin;
10、查看补丁版本
set line 150
col ACTION_TIME for a30
col ACTION for a8
col NAMESPACE for a8
col VERSION for a10
col BUNDLE_SERIES for a5
col COMMENTS for a20
select * from dba_registry_history;
查看数据库备份情况:
col START_TIME for a30
col END_TIME for a30
col status for a10
select SESSION_KEY,INPUT_TYPE,STATUS,to_char(START_TIME, 'yyyy-mm-dd hh24:mi') START_TIME,to_char(END_TIME, 'yyyy-mm-dd hh24:mi') END_TIME,ELAPSED_SECONDS / 3600 from v$rman_backup_job_details where to_char(START_TIME, 'yyyy-mm-dd hh24:mi') > to_char(sysdate-12,'yyyy-mm-dd hh24:mi') order by SESSION_KEY;
11、查看补丁版本:
ZB23NXYD2:/app/product/11.2.0/db/OPatch$opatch lsinventory
12、查看锁表
SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid ORDER BY sid, s.serial# ;
select SID,SERIAL#,USERNAME,PROGRAM,MACHINE,SQL_ID,PREV_SQL_ID,last_call_et,STATUS from v$session where SID in (select SESSION_ID from v$locked_object);
查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句:
SELECT l.session_id sid,s.serial#,l.locked_mode,l.oracle_username,s.user#, l.os_user_name,s.machine,s.terminal,a.sql_text,a.action FROM v$sqlarea a,v$session s,v$locked_object l WHERE l.session_id = s.sid AND s.prev_sql_addr = a.address ORDER BY sid, s.serial#; a.object_name
查看视图对应的表:
select * from dba_dependencies where NAME='视图名' and TYPE='VIEW';
=======根据操作系统进程spid查看数据库sid及serial#:
SELECT s.username,s.sid,s.serial# FROM gv$session s,gv$process p WHERE s.paddr=p.addr AND p.spid='7733928';
=======查看数据库进程的状态(比如kill的时候last_call_et可观察时间):
select inst_id,status,last_call_et from gv$session where sid=4268;
13、杀锁命令 alter system kill session '2176,167'
批量杀进程: select 'alter system kill session '''||sid||','||serial#||'''; 'from v$session where SQL_ID='drdph1c2z2c4s';
15、查看表大小 select TABLESPACE_NAME,OWNER,SEGMENT_NAME,sum(BYTES)/1024/1024 total_mb from dba_segments where TABLESPACE_NAME='CARDW02' group by TABLESPACE_NAME,OWNER,SEGMENT_NAME;
16、查看兼容版本(grid的) select name,compatibility,database_compatibility from v$asm_diskgroup;
查看集群版本: crsctl query crs softwareversion
17、查看aix操作系统的资源情况
prtconf|more HP:machinfo WIN:msinfo32 SUSE:cat /proc/cpuinfo (model name ) # 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l #查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
---查看资源使用情况: HP:glance/top AIX:nmon/topas
---查看内存大小: HP: /usr/contrib/bin/machinfo | grep -i Memory AIX: /usr/sbin/lsattr -E -l sys0 -a realmem
---查看swap分区: HP:/usr/sbin/swapinfo -a AIX:/usr/sbin/lsps -s
18、新建用户 alter user mcms_rb account unlock identified by &PASSWORD; 19、查看数据量: select sum(bytes)/1024/1024 mb from dba_segments; 查询数据库历史数据量 数据库一天的数据增量 select sum(TABLESPACE_USEDSIZE)*8/1024/1024,substr(rtime,0,10) from DBA_HIST_TBSPC_SPACE_USAGE where snap_id in (select ma:@snap_id) from DBA_HIST_TBSPC_SPACE_USAGE group by substr(rtime,0,10) ) --and TABLESPACE_ID=8 group by substr(rtime,0,10) order by 1 ;
20、查看REDOLOG大小 select group#,members,bytes/1024/1024,status from v$log;
21、清理垃圾文件 cd &DIR find ./ -ctime +3 |xargs rm
22、ASM磁盘 --- 检查磁盘大小(单位M) bootinfo -s hdisk0 --- 查看磁盘的详细信息 lsattr -El hdisk0 --- 检查权限 ls -l /dev/hdisk* 【排序查看ls -ltr /dev |grep rhdisk】 --- 检查PVID lspv | grep hdiskn --- 检查保留策略 lsattr -E -l hdisk5 | grep reserve_policy --- 查看磁盘是否为共享磁盘 lsattr -El hdisk0 比对两个主机对应的磁盘号是否一致:unique_id --- 查看磁盘是否可用 lspv 看PVID是否为none,若为none则数据库可用,再查看数据库当前有没有使用,若没有则可用来扩容ASM磁盘组
23、按用户查看占用多少内存 svmon -U grid -w |more svmon -U oracle -w | more
24、查看用户下有多少进程 svmon -PO unit=GB |grep aioserver |wc svmon -PO unit=GB |grep oracle |wc select round(BYTES/1024/1024,2)||'M' from user_segments where segment_name='TUSER_SYNC_CHESHANG'; select segment_name,tablespace_name,bytes B, bytes/1024 KB, bytes/1024/1024 MB from user_segments where segment_type='TABLE' and tablespace_name='USERS'
lsvg |lsvg -i -p lsdev -c disk
@?/rdbms/admin/awrrpt.sql
==============expdp========== 查看导出相关目录权限:
select privilege,directory_name,directory_path from user_tab_privs t,all_directories d where t.table_name(+)=d.directory_name order by 2,1;
select * from dba_directories;
======================
1、修改LINUX操作系统/dev/shm文件系统大小 开机自启动: tmpfs /dev/shm tmpfs defaults,size=20G 0 0
立即生效: mount -t tmpfs shmfs -o size=20g /dev/shm
25、查看服务器底层用的存储类型: lscfg -vpl hdisk40
26、生成AWR报告 @?/rdbms/admin/awrrpt.sql
27、查看ASM磁盘挂载时间: set lines 500 pages 2000 col g_name format a10 col g_n format 99 col d_n format 999 col m_status format a7 col mo_status format a7 col h_status format a11 col name format a20 col path format a20 col failgroup format a15 select g.group_number g_n, g.disk_number d_n, g.name name, g.failgroup, g.mount_status m_status, g.header_status h_status, g.mode_status mo_status, g.path , to_char(g.mount_date, 'YYYY/MM/DD HH24:MI:SS') m_date from v$asm_disk g order by g_n, d_n
28、查看用户权限: select privilege from role_sys_privs where role in ( select granted_role from dba_role_privs where grantee='ZYKBTSDATA' union all select privilege from dba_sys_privs where grantee='ZYKBTSDATA';
23、修改磁盘盘号(将hdisk2改为hdisk10): rendev -l hdisk2 -n hdisk10 查看进程: set pages 9999 set lines 200 select process,client_process,sequence#,thread#,status from v$managed_standby;
24、查看FTP服务是否开启
----AIX操作系统: $
lssrc -s inetd (查看守护进程是否开启) $
lssrc -t ftp (查看服务是否开启)
AIX查看虚拟内存使用率高的情况:
svmon -U -t 10 -O summary=basic -i 60|more
===================新加命令============
1、查看undo表空间的真实利用情况:
select tablespace_name,status,round(sum(bytes) / 1048576, 2) size_mb,count(*) extent_count from dba_undo_extents group by tablespace_name, status order by tablespace_name, status;
2、表空间无法自动扩展:ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM,查看限制的最大值maxbytes : select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024/1024 gb,MAXBYTES/1024/1024/1024 maxgb from dba_data_files where tablespace_name='SYSTEM';
set linesize 200
set pagesize 200
column file_name format a50
column total_MB format 999999999;
column used_MB format 999999999;
column free_MB format 999999999;
select c.TABLESPACE_NAME,c.SEGMENT_SPACE_MANAGEMENT,d.total_GB,d.used_GB,d.free_GB,d.use_precent "Userd_%",c.EXTENT_MANAGEMENT from dba_tablespaces c,
(select b.tablespace_name,round(sum(b.bytes)/1024/1024/1024,2) total_GB,round((sum(b.bytes)-sum(nvl(a.bytes,0)))/1024/1024/1024,2) used_GB,round(sum(nvl(a.bytes,0))/1024/1024/1024,2) free_GB,round((sum(b.bytes)-sum(nvl(a.bytes,0)))/sum(b.bytes),4)*100 use_precent from (select tablespace_name,file_id,sum(bytes) bytes from dba_free_space group by tablespace_name,file_id ) a, dba_data_files b where a.file_id(+)=b.file_id and a.tablespace_name(+)=b.tablespace_name group by b.tablespace_name order by use_precent) d
where c.TABLESPACE_NAME=d.TABLESPACE_NAME
order by 6;
=========杀锁表:
ps -ef |grep LOCAL=NO |awk '{print $2}'|xargs kill -9
+++++++++++++++++++ AIX修改主句名:
chdev -l inet0 -a hostname=&new_hostname hostname &new_hostname
重启操作系统:nohup shutdown -Fr & ++++++++++++++++++++++ ============================================
--查询数据库负载
set pages 9999
set lines 200
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SELECT * FROM ( SELECT A.INSTANCE_NUMBER, A.SNAP_ID, B.BEGIN_INTERVAL_TIME + 0 BEGIN_TIME, B.END_INTERVAL_TIME + 0 END_TIME, ROUND(VALUE - LAG( VALUE, 1 , '0') OVER(ORDER BY A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME" FROM (SELECT B.SNAP_ID, INSTANCE_NUMBER, SUM(VALUE ) / 1000000 / 60 VALUE FROM DBA_HIST_SYS_TIME_MODEL B WHERE B.DBID = (SELECT DBID FROM V$DATABASE) AND UPPER (B.STAT_NAME) IN UPPER(('DB TIME' )) GROUP BY B.SNAP_ID, INSTANCE_NUMBER) A, DBA_HIST_SNAPSHOT B WHERE A.SNAP_ID = B.SNAP_ID AND B.DBID = (SELECT DBID FROM V$DATABASE) AND B.INSTANCE_NUMBER = A.INSTANCE_NUMBER) WHERE TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE , 'YYYY-MM-DD') ORDER BY BEGIN_TIME;
--查两个节点连接数
select INST_ID,count(*) from gv$session group by inst_id;
--查看历史达到的最大连接数(MAX_UTILIZATION为自数据库上次启动以来达到的最大值,LIMIT_VALUE代表设置的最大值)
select resource_name,MAX_UTILIZATION,LIMIT_VALUE from v$resource_limit where resource_name in ('processes','sessions');
--查当前的等待事件
col wait_class for a20
set lines 200 pages 200
col event for a60
select event,count(*),wait_class from v$session_wait group by event,wait_class order by 3;
--查看被锁的表
col OBJECT_NAME for a20 col OWNER for a20 set line 300 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查看连接的进程
SELECT sid, serial#, username, osuser FROM v$session;
--查看那个用户那个进程照成死锁
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
select ' alter system kill session '''||b.sid||','||b.serial#||''' immediate;' from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine, s.terminal, s.logon_time, l.type FROM v$session s, v$lock l WHERE s.sid = l.sid AND s.username IS NOT NULL ORDER BY sid;
查看数据库表中的列字段有没有BLOB:
select distinct ('TABLE "' || a.OWNER || '"."' || a.TABLE_NAME || '"') from sys.all_tab_columns a where a.OWNER = 'xxxxxx'--用户名 and a.TABLE_NAME in (select t.TABLE_NAME from sys.all_tab_columns t where t.OWNER = 'xxxxxx'--用户名 and t.DATA_TYPE in ( 'BLOB'))
查看表空间碎片率:
select a.tablespace_name,sqrt(max(a.blocks)/sum(a.blocks))*(100/sqrt(sqrt(count(a.blocks)))) FSFI from dba_free_space a,dba_tablespaces b where a.tablespace_name=b.tablespace_name and b.contents not in ('SYSTEM','UNDOTBS2','USERS','SYSAUX','UNDOTBS1') group by a.tablespace_name order by 2;
alter session set current_schema=Schema
这个命令可以用sysdba用然后想切到哪个用户就切到哪个用户 不需要密码就能切
========== 查看10949event是否设置:
SQL> oradebug setmypid oradebug eventdump session; 10949 trace name context forever, level 1
如果有值说明设置了 当前正在执行的sql,以及cpu消耗
set echo off feedback off timing off pause off
set pages 100 lines 180 trimspool on trimout on space 1 recsep off
col username format a13
col prog format a10 trunc
col sql_text format a40 trunc
col sid format a12
col sql_id format a16
col child for 99999
col execs format 9999999
col sqlprofile format a22
col avg_ela for 999999.99
col last_ela for 999999
col event format a15
col EXECUTIONS for 99999999
col cpu_time for 9999999999999
select /*+ rule */ sid||','||serial# sid, substr(a.event,1,15) event, b.sql_id||','||child_number sql_id, b.plan_hash_value, b.executions execs, (b.elapsed_time/decode(nvl(b.executions,0),0,1,b.executions))/1000000 avg_ela, last_call_et last_ela, b.sql_text, c.cpu_time, c.EXECUTIONS
from v$session a, v$sql b,v$sqlarea c
where status = 'ACTIVE'
and username is not null
and a.sql_id = b.sql_id
and a.sql_id = c.sql_id
and a.sql_child_number = b.child_number
and b.sql_text not like '%from v$session a, v$sql b%'
and a.program not like '%(P%)'
order by b.plan_hash_value,last_call_et,sql_id, sql_child_number;
col name for a20
select group_number,name,total_mb/1024 total_gb,free_mb/1024 free_gb,TYPE from v$asm_diskgroup;
---------ADG----------------
--1.查询主备的同步情况
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');
col name for a80
set lines 200
select name,first_time from v$archived_log where name is not null and name!='dbstd' order by first_time;
备库查询
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; select THREAD#,count(FIRST_TIME) from v$archived_log where APPLIED='NO' group by THREAD#; select THREAD#,min(FIRST_TIME) from v$archived_log where APPLIED='NO' group by THREAD#; select THREAD#,min(SEQUENCE#) from v$archived_log where APPLIED='NO' group by THREAD#; select BACKUP_COUNT from v$archived_log where THREAD#=&1 and SEQUENCE#=&2;
--2.查询备库的进程状态
SELECT PROCESS, STATUS,SEQUENCE#,thread# FROM V$MANAGED_STANDBY;
--3.查询备库的角色
set linesize 150;
column DBNAME format a6;
column DBUNAME format a10;
column cftype format a8;
column OPEN_MODE format a20;
column DATABASE_ROLE format a18;
select name dbname,db_unique_name dbuname,controlfile_type cftype,database_role,open_mode from v$database;
--4.查询备库的日志应用模式
SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=1;
RECOVERY_MODE --------------------------------------------------------------------- MANAGED REAL TIME APPLYs
--5.开启日志应用进程:
--应用stanby 实时同步
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
并行应用日志:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile DISCONNECT FROM SESSION parallel 8;
--6.取消日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--7. 查看ADG日志差:
SELECT /*+rule*/ ARCH.THREAD# "Thread",
ARCH.SEQUENCE# "Last Sequence Received",
APPL.SEQUENCE# "Last Sequence Applied",
(ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"
FROM (SELECT THREAD#, SEQUENCE#
FROM V$ARCHIVED_LOG
WHERE (THREAD#, FIRST_CHANGE#) IN
(SELECT THREAD#, MAX(FIRST_CHANGE#)
FROM V$ARCHIVED_LOG
GROUP BY THREAD#)
GROUP BY THREAD#, SEQUENCE#) ARCH,
(SELECT THREAD#, SEQUENCE#
FROM V$LOG_HISTORY
WHERE (THREAD#, FIRST_CHANGE#) IN
(SELECT THREAD#, MAX(FIRST_CHANGE#)
FROM V$LOG_HISTORY
GROUP BY THREAD#)) APPL
WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;
col "hidden parameter" for a30
col value for a20
select ksppinm as "hidden parameter", ksppstvl as "value" from x$ksppi join x$ksppcv using (indx) where ksppinm like '\_%' escape '\' and ksppinm like '%asm_hb%' order by ksppinm;
'
select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME=' 大写的表空间名';
select A.Segment_Name, A.size_total || 'M'
from (Select Segment_Name, Sum(bytes) / 1024 / 1024 size_total ,tablespace_name
From User_Extents
Group By Segment_Name) A
order by size_total desc;
select A.Segment_Name, A.size_total || 'M',tablespace_name from (select A.Segment_Name, A.size_total || 'M'
from (Select Segment_Name, Sum(bytes) / 1024 / 1024 size_total ,tablespace_name
From User_Extents
Group By Segment_Name) A
order by size_total desc),(select TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='IDX_SPACE') where A.Segment_Name='CRM_ITF_CUSTOMER_VALUES';
select aa.Segment_Name, aa.size_total || 'M',tablespace_name from (select A.Segment_Name, A.size_total || 'M'
from (Select Segment_Name, Sum(bytes) / 1024 / 1024 size_total ,tablespace_name
From User_Extents
Group By Segment_Name) A
order by size_total desc) aa,(select TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='IDX_SPACE') where aa.Segment_Name='CRM_ITF_CUSTOMER_VALUES'; set linesize 200
col owner format a20
col table_name format a30
SELECT es.OWNER ,es.TABLE_NAME ,round(s.bytes / 1024 / 1024, 0) "allocate_size(M)" ,round(es."size" / 1024 / 1024, 0) AS "Estemated_Size(M)" ,round(((s.bytes - es."size") / 1024 / 1024), 0) AS "Waste_Size(M)" ,round(1 - es."size" / s.bytes, 2) AS "Wasted_percent"
FROM ( SELECT OWNER ,TABLE_NAME ,AVG_ROW_LEN * NUM_ROWS*1.15 AS "size" FROM dba_tables WHERE NUM_ROWS > 0 AND COMPRESSION != 'ENABLED' ) es ,( SELECT OWNER ,segment_name ,sum(bytes) bytes FROM dba_segments GROUP BY OWNER ,segment_name ) s
WHERE s.OWNER = es.OWNER AND s.segment_name = es.table_name AND round(1 - es."size" / s.bytes, 2) > 0.2 AND round(((s.bytes - es."size") / 1024 / 1024 / 1024), 0) > 20
ORDER BY s.bytes - es."size" DESC;
表空间增长
col name for a50
set linesize 400 pagesize 400
select a.name, b.*
from v$tablespace a,
(select tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss')) datetime,
round(max(tablespace_usedsize * 8 / 1024),2) used_size_MB
from dba_hist_tbspc_space_usage
where trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss')) >
trunc(sysdate - 10)
group by tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'))
order by tablespace_id,
trunc(to_date(rtime, 'mm/dd/yyyy hh24:mi:ss'))) b
where a.ts# = b.tablespace_id and a.name='&tbs';
添加裸设备至磁盘组 查询是否扫盘
ls -lrt /dev/mapper/asm*
查看磁盘大小(root)
lvmdiskscan
set lines 300
col PATH for a30
col name for a11
select HEADER_STATUS,GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,Name name,OS_MB,PATH from v$asm_disk; (以上命令查看asm磁盘组信息,所属为空的则是新添加的磁盘
然后根据提供的路径查看权限是否正确,若不对及时与设备组进行联系
)
alter diskgroup DATA add disk '/dev/dm-*','/dev/dm-*';
alter diskgroup DATA REBALANCE POWER 10;
(进行添加组信息,DATA_COG, 此磁盘名称需要和上条命令对应进行查看,路径也需要和对应的信息进行查看
第二条命令是让数据平衡分配,负载均衡)
select MOUNT_STATUS,HEADER_STATUS,STATE,REDUNDANCY,NAME,PATH from v$asm_disk_stat; set lines 300 pages 1000 col ERROR_CODE for a10 select * from v$asm_operation;
select OWNER,SEGMENT_NAME,SEGMENT_TYPE,sum(bytes/1024/1024/1024) "size(GB)"
from dba_segments where TABLESPACE_NAME='APP_PICCCPI' and SEGMENT_TYPE='TABLE' group by OWNER ,SEGMENT_NAME,SEGMENT_TYPE having sum(bytes/1024/1024/1024)>10
order by 4 desc; select owner, segment_name, segment_type, sum(bytes/1024/1024/1024) "size(GB)"
from dba_segments
where tablespace_name='USER_DATA5' and SEGMENT_TYPE='TABLE'
group by owner, segment_name, segment_type
having sum(bytes/1024/1024/1024)> 10
order by 4 desc;
sudo -l
###不能使用
!ps -ef | grep LOCAL=NO | grep -v grep | awk '{print $2}' |xargs kill -9
kill -9 `ps -ef | grep LOCAL=NO | grep -v grep |cut -c9-22`
crsctl stat res -t
srvctl stop listener -n node1?
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system checkpoint;
create pfile='/home/oracle/bakpfile02.ora' from spfile;
alter database backup controlfile to trace as '/home/oracle/conctlbak20.ctl';
shutdown immediate
crsctl stat res -t
需要sudo权限
sudo crsctl stop crs
sudo crsctl stop his (has)
rman target /
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
allocate channel c5 device type disk;
SET NEWNAME FOR DATABASE TO '+xxxx_DATA/';
restore database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
} 查进度
select sid,
serial#,
sql_id,
context,
sofar,
totalwork,
round(sofar/totalwork*100,2) "%_complete" from v$session_longops where opname not like '%aggregate%' and totalwork !=0
and sofar<>totalwork; select GROUP_NUMBER,NAME,TYPE,STATE,round(TOTAL_MB/1024,2) TOTAL_GB,round(FREE_MB/1024,2) FREE_GB,
round(USABLE_FILE_MB/1024,2) USABLE_GB,round((TO 2 TAL_MB-nvl(FREE_MB,0))/decode(nvl(TOTAL_MB,1),0,1,nvl(TOTAL_MB,1)),4)*100 "Userd_%" from v$asm_diskgroup_stat; 归档时间段 select logtime, count(*), round(sum(blocks * block_size) / 1024 / 1024 / 1024) gbsize from (select trunc(first_time, 'hh') as logtime, a.BLOCKS, a.BLOCK_SIZE from v$archived_log a where a.DEST_ID = 1 and a.FIRST_TIME > trunc(sysdate -1)) group by logtime order by logtime desc; lob大小 select distinct ab.TABLE_NAME, ab.SEGMENT_NAME, ab.TABLESPACE_NAME, ab.OWNER, sum(ac.BYTES / 1024 / 1024 / 1024) GB from dba_lobs ab, DBA_SEGMENTS ac where ab.OWNER IN (SELECT USERNAME FROM DBA_USERS A WHERE A.account_status = 'OPEN' AND A.default_tablespace NOT IN ('SYSTEM', 'USERS', 'SYSAUX')) and ab.SEGMENT_NAME = ac.segment_name and ab.OWNER = ac.owner group by ab.TABLE_NAME, ab.SEGMENT_NAME, ab.TABLESPACE_NAME, ab.OWNER order by 5 desc; 表大小
select * from (SELECT OWNER,TABLE_NAME,SUM(tabsize) table_size from ( SELECT owner,SEGMENT_NAME as table_name,SUM(BYTES)/1024/1024/1024 as tabsize FROM DBA_SEGMENTS WHERE (OWNER,SEGMENT_NAME) IN ( SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER NOT IN ('SYS','SYSTEM','DBSNMP')) GROUP BY SEGMENT_NAME,owner union ALL select lob.owner,lob.table_name,sum(seg.bytes)/1024/1024/1024 as tabsize from dba_lobs lob,dba_segments seg where lob.segment_name=seg.segment_name and lob.OWNER NOT IN ('SYS','SYSTEM','DBSNMP') group by lob.owner,lob.table_name ) GROUP BY OWNER,TABLE_NAME ORDER BY 3 DESC) where table_size>50 ; 查看当前运行sql SELECT OSUSER ,
PROGRAM ,
USERNAME ,
SCHEMANAME,
B.CPU_TIME CPU,
STATUS,
B.SQL_TEXT SQL
FROM V$SESSION A
LEFT JOIN V$SQL B
ON A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUE
ORDER BY B.CPU_TIME DESC;
===============================================================================================================================================
根据cpu消耗查看sql
set linesize 160 pagesize 100
col event format a50;
col
select inst,state,event,count(*)
from
(SELECT
s.inst_id AS inst,
CASE WHEN s.state = 'WAITING' THEN s.state ELSE 'CPU/RUN QUEUE' END AS state,
CASE WHEN s.state = 'WAITING' THEN s.event ELSE 'NOT IN A WAIT' END AS event
FROM gv$session s
WHERE s.status = 'ACTIVE'
and s.type<>'BACKGROUND'
)
group by inst,state,event
order by inst,count(*);
select FINAL_BLOCKING_INSTANCE,FINAL_BLOCKING_session from gv$session where event='enq: TX - row lock contention';
查出来的值如:1,1356
set trimspool on
set trimspool on
set trim on
set pages 0
set linesize 1000
set long 1000000
set longchunksize 1000000
select st.inst_id,
st.sql_id,
st.sql_text
from gv$session s,gv$sqlarea st where s.inst_id=1 and s.sid=1356 and st.inst_id=s.inst_id and st.sql_id=s.sql_id;
=========================================================================================
select count(*) from v$active_session_history where sample_time between to_date('2022-10-14 12:00','YYYY-MM-DD HH24:MI') and to_date('2022-10-14 12:11','YYYY-MM-DD HH24:MI') ;
查看时间段内连接数
==========================================================================================================
查看归档生成,小时
select logtime,
count(*),
round(sum(blocks * block_size) / 1024 / 1024 / 1024) gbsize
from (select trunc(first_time, 'hh') as logtime, a.BLOCKS, a.BLOCK_SIZE
from v$archived_log a
where a.DEST_ID = 1
and a.FIRST_TIME > trunc(sysdate -1))
group by logtime
order by logtime desc;
lob大小
select distinct ab.TABLE_NAME,
ab.SEGMENT_NAME,
ab.TABLESPACE_NAME,
ab.OWNER,
sum(ac.BYTES / 1024 / 1024 / 1024) GB
from dba_lobs ab, DBA_SEGMENTS ac
where ab.OWNER IN (SELECT USERNAME
FROM DBA_USERS A
WHERE A.account_status = 'OPEN'
AND A.default_tablespace NOT IN
('SYSTEM',
'USERS',
'SYSAUX'))
and ab.SEGMENT_NAME = ac.segment_name
and ab.OWNER = ac.owner
group by ab.TABLE_NAME, ab.SEGMENT_NAME, ab.TABLESPACE_NAME, ab.OWNER
order by 5 desc;
表大小大于指定值
select * from (SELECT OWNER,TABLE_NAME,SUM(tabsize) table_size from (
SELECT owner,SEGMENT_NAME as table_name,SUM(BYTES)/1024/1024/1024 as tabsize FROM DBA_SEGMENTS WHERE (OWNER,SEGMENT_NAME) IN (
SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER NOT IN ('SYS','SYSTEM','DBSNMP'))
GROUP BY SEGMENT_NAME,owner
union ALL
select lob.owner,lob.table_name,sum(seg.bytes)/1024/1024/1024 as tabsize from dba_lobs lob,dba_segments seg
where lob.segment_name=seg.segment_name and lob.OWNER NOT IN ('SYS','SYSTEM','DBSNMP') group by lob.owner,lob.table_name
)
GROUP BY OWNER,TABLE_NAME ORDER BY 3 DESC)
where table_size>50 ;
查看当前sql和连接机器
set pagesize 111
col OSUSER for a11
col SQL for a222
col STATUS for a11
col SCHEMANAME for a22
col USERNAME for a11
col PROGRAM for a33
set line 444
SELECT OSUSER ,
PROGRAM ,
USERNAME ,
SCHEMANAME,
B.CPU_TIME CPU,
STATUS,
B.SQL_TEXT SQL
FROM V$SESSION A
LEFT JOIN V$SQL B
ON A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUE
ORDER BY B.CPU_TIME DESC;
查看表上的索引
select INDEX_NAME, INDEX_TYPE,TABLE_OWNER,TABLE_NAME,PARTITIONED,STATUS from dba_indexes where TABLE_name = 'xxx' order by 3,4;
指定时间内sql
select a.SQL_TEXT,a.FIRST_LOAD_TIME from v$sqlarea a
where
to_date(a.FIRST_LOAD_TIME,'YYYY-MM-DD HH24:MI:SS')>= to_date('2023-10-10 12:00:00','YYYY-MM-DD HH24:MI:SS')
and
to_date(a.FIRST_LOAD_TIME,'YYYY-MM-DD HH24:MI:SS')<= to_date('2023-10-10 16:30:00','YYYY-MM-DD HH24:MI:SS');
--------
select sql_id, session_id, session_serial#, sql_exec_id, count(*)
from dba_hist_active_sess_history
where to_char(sample_time, 'yyyymmdd hh24:mi:ss') between
'20231010 12:00:00' and '20231010 16:30:00'
and sql_id is not null
group by sql_id, session_id, session_serial#, sql_exec_id
having count(*) > 1
order by count(*);
查看lob字段超过指定大小
select * from (SELECT OWNER,TABLE_NAME,SUM(tabsize) table_size from (
SELECT owner,SEGMENT_NAME as table_name,SUM(BYTES)/1024/1024/1024 as tabsize FROM DBA_SEGMENTS WHERE (OWNER,SEGMENT_NAME) IN (
SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER NOT IN ('SYS','SYSTEM','DBSNMP'))
GROUP BY SEGMENT_NAME,owner
union ALL
select lob.owner,lob.table_name,sum(seg.bytes)/1024/1024/1024 as tabsize from dba_lobs lob,dba_segments seg
where lob.segment_name=seg.segment_name and lob.OWNER NOT IN ('SYS','SYSTEM','DBSNMP') group by lob.owner,lob.table_name
)
GROUP BY OWNER,TABLE_NAME ORDER BY 3 DESC)
where table_size>5 ;
对活跃会话进行kill拼接语句
set heading off feedback off pagesize 0 verify off echo off
select 'alter system kill session '''||s.sid||','||s.serial#||''' immediate;'
from v\$session s
where s.status='ACTIVE'
AND s.type<>'BACKGROUND';
exit
####卸载节点
dbca -silent -deleteInstance -nodeList host2 -gdbName xxx -instanceName xxx2 -sysDBAUserName sys -sysDBAPassword xxxx560
互信
./sshUserSetup.sh -user grid -hosts "xxxx1 xxxx2" -advanced -confirm -noPromptPassphrase