
1.数据库版本
select * from gv$version;
复制
2.数据库创建时间
select dbid,name,to_char(created,'YYYY-MM-DD') created,log_mode from gv$database;
复制
3.启动时间
select version,instance_name,to_char(startup_time,'YYYY-MM-DD') startup_time,status from gv$instance;
复制
4.实例名
select instance_name,status from gv$instance;
复制
5.opatch查看补丁版本
$ORACLE_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lsinventory
复制
6.数据库字符集
set line 200
col value for a50
set pagesize 100
select * from nls_database_parameters;
复制
7.spfile参数文件位置和名称
show parameter spfile
复制
8.pfile参数文件位置、名称、内容
cat $ORACLE_HOME/dbs/init实例名.ora
复制
9.表空间信息
set line 300
col tablespace_name for a20
select tablespace_name,
block_size,
initial_extent,
next_extent,
max_size,
status,
contents,
logging,
extent_management,
segment_space_management
from dba_tablespaces;
复制
10.表空间使用率(非自动扩展)
set pagesize 9999
set linesize 132
col tablespace_name for a35
select
a.tablespace_name,
a.Total_mb,
f.Free_mb,
round(a.total_MB-f.free_mb,2) Used_mb,
round((f.free_MB/a.total_MB)*100) "%_Free"
from
(select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,
(select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) f
WHERE a.tablespace_name = f.tablespace_name(+)
order by "%_Free"
/
复制
11.表空间使用率(非自动扩展和自动扩展)
###不适用同一表空间下既有自动扩容又有非自动扩展的数据文件
select
a.tablespace_name,
case when g.auto_free <0 then round((f.free_MB/a.total_MB)*100) else round(((f.free_MB+g.auto_free)/b.r_total_mb)*100) end "Free"
from
(select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,
(select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) f,
(select tablespace_name,trunc(sum(maxbytes)/1024/1024,2) as r_total_mb from dba_data_files group by tablespace_name) b,
(select sum(free_MB) auto_free,tablespace_name from (select tablespace_name,trunc(maxbytes / 1024 / 1024 , 2) as MAX_MB,trunc((maxbytes-bytes)/1024/1024,2) FREE_MB from dba_data_files) a group by tablespace_name) g
WHERE
a.tablespace_name = f.tablespace_name(+)
and
g.tablespace_name = a.tablespace_name
and
b.tablespace_name = a.tablespace_name;
复制
12.表空间使用率(非自动扩展和自动扩展)
###最新
###修改:表空间满了以后,dba_free_space里没有记录,会删除表空间信息,查询的值为空。
###1.需要添加左连接.
###2.需要使用nvl进行空值转换。
select a.TABLESPACE_NAME,
ROUND((1 - (a.Free_MB_1+ nvl(b.FREE_MB_2,0)) / a.total_mb) * 100, 2) Used_Prc
from (select TABLESPACE_NAME,
ROUND(sum(case
when autoextensible = 'NO' then
BYTES
when autoextensible = 'YES' then
MAXBYTES
end) / 1024 / 1024,
2) TOTAL_MB,
ROUND(sum(case
when MAXBYTES - BYTES >= 0 then
MAXBYTES - BYTES
when MAXBYTES - BYTES < 0 then
0
end) / 1024 / 1024,
2) Free_MB_1
from dba_data_files
group by TABLESPACE_NAME) a
inner join (SELECT dfs.TABLESPACE_NAME,
SUM(dfs.bytes / 1024 / 1024) FREE_MB_2
FROM dba_free_space dfs
GROUP BY dfs.TABLESPACE_NAME) b
on a.TABLESPACE_NAME = b.TABLESPACE_NAME(+);
复制
13.数据文件信息
set line 300
col tablespace_name for a20
col file_name for a45
select tablespace_name,
file_name,
file_id,
status,
trunc(bytes 1024 / 1024 / 1024, 2) as FILE_GB,
autoextensible,
trunc(maxbytes 1024 / 1024 / 1024, 2) as MAX_GB
from dba_data_files
order by file_id;
复制
14.UNDO
select t.status,sum(t.blocks)*8/1024||'M' size_M
from dba_undo_extents t
group by t.status;
复制
15.rollname
select * from v$rollname;
复制
set line 150
col tablespace_name for a10
set pagesize 100
select owner, tablespace_name, segment_id, segment_name, status
from dba_rollback_segs order by 2,3;
复制
16.临时文件信息
set line 300
col tablespace_name for a20
col file_name for a40
select tablespace_name,
file_name,
file_id,
status,
trunc(bytes 1024 / 1024 / 1024, 2) as FILE_GB,
autoextensible,
trunc(maxbytes 1024 / 1024 / 1024, 2) as MAX_GB
from dba_temp_files
order by file_id;
复制
17.temp使用率
SET PAGESIZE 400
SET LINES 300
COL D.TABLESPACE_NAME FORMAT A15
COL D.TOT_GROOTTE_MB FORMAT A10
COL TS-PER FORMAT A15
SELECT d.tablespace_name "Name",
TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)",
TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,
TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",
TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"
FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
(select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management like 'LOCAL'
AND d.contents like 'TEMPORARY';
复制
18.控制文件信息
col name for a50
select status,name from v$controlfile;
复制
19.查看控制文件内容
SELECT * FROM v$CONTROLFILE_RECORD_SECTION;
复制
20.日志文件信息
set line 300
col member for a50
select a.group#,
THREAD#,
b.member,
a.members,
a.status,
a.sequence#,
bytes 1024 / 1024 as file_mb
from v$log a, v$logfile b
where a.group# = b.group#
order by 2,1;
复制
21.归档信息
archive log list;
复制
set pagesize 100
select a_date,a_count from (
select to_char(first_time,'YYYY-MM-DD') a_date,count(*) a_count from gv$log_history
group by to_char(first_time,'YYYY-MM-DD')
order by 1 desc) where rownum<=31;
复制
22.归档频率
set line 300
set pagesize 1000
SELECT TRUNC(first_time) "Date",
TO_CHAR(first_time, 'Dy') "Day",
COUNT(1) "Total",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '00', 1, 0)) "h0",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '01', 1, 0)) "h1",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '02', 1, 0)) "h2",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '03', 1, 0)) "h3",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '04', 1, 0)) "h4",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '05', 1, 0)) "h5",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '06', 1, 0)) "h6",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '07', 1, 0)) "h7",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '08', 1, 0)) "h8",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '09', 1, 0)) "h9",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '10', 1, 0)) "h10",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '11', 1, 0)) "h11",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '12', 1, 0)) "h12",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '13', 1, 0)) "h13",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '14', 1, 0)) "h14",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '15', 1, 0)) "h15",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '16', 1, 0)) "h16",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '17', 1, 0)) "h17",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '18', 1, 0)) "h18",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '19', 1, 0)) "h19",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '20', 1, 0)) "h20",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '21', 1, 0)) "h21",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '22', 1, 0)) "h22",
SUM(DECODE(TO_CHAR(first_time, 'hh24'), '23', 1, 0)) "h23",
ROUND(COUNT(1) 24, 2) "Avg"
FROM gv$log_history
WHERE thread# = inst_id
GROUP BY TRUNC(first_time), TO_CHAR(first_time, 'Dy')
ORDER BY 1 desc;
复制
23.监听文件
监听文件信息
lsnrctl status
lsnrctl status listener_scan1
复制
监听文件大小,最近更新时间
ls -lrth $ORACLE_HOME/network/log/listener.log
复制
检查监听日志中IP信息
cd /oracle/grid/diag/tnslsnr/cjc-db-01/listener/trace
复制
注意如果文件过大,可跳过不检查,或检查log.xml文件
grep "HOST=.*establish.*\* 0" listener.log | awk -F'*' '{match($3,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($3,RSTART,RLENGTH);cnt[ip]+=1;last[ip]=$1;}END {for (i in cnt) printf "%-16s %9s %19s\n",i,cnt[i],last[i];}' | sort -k 1
复制
数据库集群检查(RAC部分)
24.磁盘组
set line 300
col name for a10
col compatibility for a10
select group_number,
name,
block_size,
total_mb,
free_mb,
(1-(free_mb/total_mb))*100 used,
type,
compatibility,
voting_files
from v$asm_diskgroup;
复制
25.磁盘信息
set line 300
col CREATE_DATE for a10
col name for a15
col path for a20
set pagesize 300
select GROUP_NUMBER,
DISK_NUMBER,
STATE,
OS_MB,
TOTAL_MB,
FREE_MB,
NAME,
PATH,
CREATE_DATE,
VOTING_FILE
from v$asm_disk order by 1,2;
复制
26.OCR
ocrcheck -config
ocrcheck
复制
27.OLR
ocrcheck -local
复制
28.VOTEDISK
crsctl query css votedisk
复制
29.netwoerk
oifcfg getif
复制
30.数据库信息
srvctl config database -d dah
复制
31.查看集群名
cemutlo -n
复制
32.查看集群状态
crsctl check cluster -all
复制
33.查看资源状态
crsctl stat res -t
复制
34.查看CRS状态
crsctl check crs
复制
35.查看OHASD状态
crsctl check has
复制
36.查看节点信息
olsnodes
srvctl status nodeapps -n cjc01
srvctl status nodeapps -n cjc02
复制
37.查看数据库名称
srvctl config database
srvctl status database -d cjc
复制
38.查看SCAN
srvctl config scan
srvctl status scan
复制
39.查看LISTENER
配置
srvctl config listener -a
复制
状态
srvctl status listener
复制
40.数据库安全检查
检查SQL注入
column OWNER format a10 heading 'OWNER'
column OBJECT_NAME format a80 heading 'OBJECT_NAME'
column OBJECT_TYPE format a40 heading 'OBJECT_TYPE'
select OWNER,OBJECT_NAME, OBJECT_TYPE from dba_objects
where object_name in
('DBMS_SUPPORT_INTERNAL','DBMS_SYSTEM_INTERNAL','DBMS_CORE_INTERNAL','DBMS_STANDARD_FUN9','DBMS_SUPPORT_INTERNAL','DBMS_SYSTEM_INTERNAL','DBMS_CORE_INTERNAL') or object_name like 'DBMS_SUPPORT_DBMONITOR%';
复制
41.角色
select grantee,granted_role from dba_role_privs where GRANTED_ROLE='DBA';
复制
42.数据库用户
set line 300
col profile for a10
select * from dba_profiles where profile='DEFAULT' and resource_name in ('PASSWORD_LIFE_TIME','FAILED_LOGIN_ATTEMPTS');
复制
如需改成无限制,执行下面语句:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
复制
数据库用户检查
对象信息
43.数据库大小
select trunc(sum(bytes) 1024 / 1024 / 1024,2) as db_GB from dba_segments;
复制
col owner for a15
select owner, trunc(sum(bytes) / 1024 / 1024,2) as db_MB
from dba_segments
group by owner
order by 1;
复制
44.用户信息
set line 200
set pagesize 100
col ACCOUNT_STATUS for a20
col default_tablespace for a15
col username for a10
select username,to_char(created,'YYYY-MM-DD') created,default_tablespace,ACCOUNT_STATUS from dba_users order by 2;
复制
45.业务用户权限
select grantee,granted_role from dba_role_privs where grantee in ('username') order by 1;
Select grantee,privilege from dba_sys_privs where grantee in ('username') order by 1;
Select grantee,privilege from dba_tab_privs where grantee in ('username') order by 1;
Select role,privilege from role_sys_privs where role in ('CONNECT','RESOURCE') order by role;
复制
46.数据库用户对象检查
---表数量
col owner for a10
select owner, count(*)
from dba_tables
group by owner
order by 1;
---临时表数量
select owner, count(*)
from dba_tables
where temporary = 'Y'
group by owner
order by 1;
---索引信息
select owner, count(*)
from dba_indexes
group by owner
order by 1;
---视图数量
select owner, count(*)
from dba_views
group by owner
order by 1;
---触发器信息
select owner, count(*)
from dba_triggers
group by owner
order by 1;
---存储过程
select owner, count(*)
from dba_procedures
group by owner
order by 1;
---无效的对象
set line 100
set pagesize 300
col owner for a20
col object_name for a30
select owner,object_type,count(*)
from dba_objects
where status = 'INVALID' group by owner,object_type;
select owner,object_name,object_type
from dba_objects
where status = 'INVALID';
复制
47.分区表信息
注意是否需要手动添加分区
SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE FROM DBA_PART_TABLES ORDER BY 1;
复制
48.查看分区名称等
set line 300
set pagesize 1000
col table_owner for a20
col table_name for a20
col PARTITION_NAME for a20
col SUBPARTITION_COUNT for a20
col MAX_SIZE for a20
col HIGH_VALUE for a50
select table_owner,table_name,PARTITION_NAME,HIGH_VALUE from dba_tab_PARTITIONS where table_owner not in ('SYS','SYSTEM') ORDER BY 3;
复制
49.JOB和定时任务
set line 150
col INTERVAL for a35
col SCHEMA_USER for a15
col what for a30
SELECT job,schema_user,broken,interval,what,last_date,last_sec,BROKEN from dba_jobs;
复制
set line 100
col start_date for a20
select owner,job_name,job_type,start_date,state from dba_scheduler_jobs;
复制
50.查询索引列
set line 300
set pagesize 100
col TABLE_OWNER for a15
col TABLE_NAME for a30
col COLUMN_NAME for a15
col INDEX_NAME for a35
select TABLE_OWNER,TABLE_NAME,COLUMN_NAME,INDEX_NAME from dba_ind_columns where TABLE_NAME in (
'XXXXXX'
) order by 2,3;
复制
51.查询约束
set line 300
col owner for a15
select OWNER,TABLE_NAME,CONSTRAINT_TYPE,CONSTRAINT_NAME,INDEX_NAME,status from dba_constraints where table_name in
(
'XXXXXX'
) and CONSTRAINT_TYPE='P';
复制
数据库备份信息
RMAN备份信息
52.全备份
set line 300
set pagesize 150
col in_size for a10
col out_size for a10
col input_type for a10
col e for a20
col s for a20
select
session_key,
input_type,
compression_ratio,
INPUT_BYTES_DISPLAY in_size,
output_bytes_display out_size,
to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
status
from v$rman_backup_job_details where INPUT_TYPE='DB FULL'
order by S DESC;
复制
53.增量备份
set line 300
set pagesize 150
col in_size for a10
col out_size for a10
col input_type for a20
col e for a20
col s for a20
select
session_key,
input_type,
compression_ratio,
INPUT_BYTES_DISPLAY in_size,
output_bytes_display out_size,
to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
status
from v$rman_backup_job_details where INPUT_TYPE='DB INCR'
order by S DESC;
复制
SELECT DISTINCT INCREMENTAL_LEVEL FROM V$BACKUP_SET;
复制
54.归档备份
set line 300
set pagesize 150
col in_size for a10
col out_size for a10
col input_type for a20
col e for a20
col s for a20
select
session_key,
input_type,
compression_ratio,
INPUT_BYTES_DISPLAY in_size,
output_bytes_display out_size,
to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
status
from v$rman_backup_job_details where INPUT_TYPE='ARCHIVELOG'
order by S DESC;
复制
55.数据库连接信息检查
col username for a15
select inst_id, username, count(*)
from gv$session
group by inst_id, username
order by 1;
复制
56.资源限制
set line 300
set pagesize 100
col RESOURCE_NAME for a10
col INITIAL_ALLOCATION for a15
select * from v$resource_limit;
复制
57.AWR
@?/rdbms/admin/awrrpt.sql
@?/rdbms/admin/awrgrpt.sql
复制
58.执行计划
set linesize 150
set pagesize 2000
select * from TABLE(dbms_xplan.display_cursor('&SQL_ID'));
或
select * from TABLE(dbms_xplan.display_cursor('&SQL_ID', &CHILD));
select * from table(dbms_xplan.display_awr('&sql_id')) ;
复制
59.get_ddl
select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;
select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual;
select dbms_metadata.get_ddl('PROCEDURE','NAME','OWNER') from dual;
复制
60.11g 自动维护任务
col CLIENT_NAME for a35
select client_name,status from dba_autotask_client;
复制
61.数据库内存配置检查
sqlplus / as sysdba
show parameter mem
show parameter sga
show parameter pga
复制
62.数据库参数配置检查
---v$parameter ---session
---v$system_parameter ---system
复制
set line 100
set pagesize 100
col name for a30
col value for a20
col display_value for a20
col isdefault for a20
select name, value, display_value, isdefault
from v$system_parameter
where name in ('audit_trail',
'audit_sys_operations',
'cluster_database_instances',
'cpu_count',
'cursor_sharing',
'db_recovery_file_dest_size',
'deferred_segment_creation',
'disk_asynch_io',
'event',
'enable_ddl_logging',
'filesystemio_options',
'job_queue_processes',
'log_archive_dest_1',
'log_archive_format',
'memory_max_target',
'memory_target',
'nls_language',
'optimizer_dynamic_sampling',
'optimizer_index_cost_adj',
'processes',
'parallel_force_local',
'parallel_max_servers',
'pga_aggregate_target',
'query_rewrite_enabled',
'sec_case_sensitive_logon',
'sessions',
'sga_max_size',
'sga_target',
'utl_file_dir',
'undo_management',
'undo_retention',
'undo_tablespace',
'large_pool_size',
'resource_limit',
'resource_manager_plan',
'max_dump_file_size',
'control_file_record_keep_time',
'result_cache_max_size',
'local_listener',
'resource_limit') order by 1;
复制
63.常见隐含参数
set line 200
col name for a40
col describ for a50
SELECT x.ksppinm as name,
y.ksppstvl as value,
y.ksppstdf as isdefault,
x.ksppdesc describ
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 in ('_allow_resetlogs_corruption',
'_b_tree_bitmap_plans',
'_corrupted_rollback_segments',
'_datafile_write_errors_crash_instance',
'_gc_policy_time',
'_gc_undo_affinity',
'_gc_defer_time',
'_hash_join_enabled',
'_offline_rollback_segments',
'_px_use_large_pool',
'_memory_imm_mode_without_autosga',
'_partition_large_extents',
'_optimizer_null_aware_antijoin',
'_optim_peek_user_binds',
'_optimizer_mjc_enabled',
'_optimizer_use_feedback',
'_optimizer_join_elimination_enabled',
'_optimizer_ads_use_result_cache',
'_optimizer_adaptive_plans',
'_optimizer_adaptive_cursor_sharing',
'_optimizer_extended_cursor_sharing',
'_optimizer_extended_cursor_sharing_rel',
'_optimizer_aggr_groupby_elim',
'_optimizer_reduce_groupby_key',
'_optimizer_cost_based_transformation',
'_use_adaptive_log_file_sync',
'_undo_autotune')
order by 1;
复制
64.event事件
col owner for a40
col name for a30
set lines 200 pages 1000
col pname for a10
col current_value for a85
col check_result for a42
select nam.inst_id,
nam.ksppinm pname,
val.ksppstvl current_value,
case
WHEN nam.ksppinm = 'event' and
val.ksppstvl ='28401 trace name context forever,level 1, 10949 trace name context forever,level 1' then
'28401,10949 event is OK! Manual check NAS event (10298)'
else
'INCORRECT'
end as check_result
from x$ksppi nam, x$ksppsv val
where nam.indx = val.indx
and nam.ksppinm IN ('event')
/
复制
65.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 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);
复制
66.查看正在执行的SQL
set line 300
set pagesize 1000
select SID,SERIAL#,SQL_ID,LAST_CALL_ET,status,event from v$session where STATUS='ACTIVE' and username is not null and event not in ('SQL*Net message to client','SQL*Net message from client') order by LAST_CALL_ET;
复制
select * from v$sql where address in (select sql_address from v$session);
复制
67.通过sql_id查看sql的历史执行计划
set linesize 150
set pagesize 2000
select * from TABLE(dbms_xplan.display_cursor('&SQL_ID'));
或
select * from TABLE(dbms_xplan.display_cursor('&SQL_ID', &CHILD));
select * from table(dbms_xplan.display_awr('&sql_id')) ;
复制
68.查看正在执行SQL和执行时间
select v.last_call_et,
v.username,
v.machine,
v.program,
v.module,
v.sid,
sql.sql_text,
sql.sql_fulltext,
sql.sql_id,
sql.disk_reads,
v.event
from v$session v, v$sql sql
where v.sql_address = sql.address
and v.last_call_et > 0
and v.status = 'ACTIVE'
and v.username is not null;
复制
69.统计信息
表级别统计信息
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'cjc',tabname => 't1',estimate_percent=>100,method_opt=> 'FOR ALL INDEXED COLUMNS',CASCADE=> TRUE,no_invalidate=> FALSE,degree=>);
EXEC DBMS_STATS.GATHER_TABLE_STATS('OWNER','TABLE',estimate_percent=>30,CASCADE=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
EXEC DBMS_STATS.GATHER_TABLE_STATS('OWNER','TABLE',estimate_percent=>30,CASCADE=> TRUE);
复制
70.格式
spool常用的设置
set colsep' '; //域输出分隔符
set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
set feedback off; //回显本次sql命令处理的记录条数,缺省为on
set heading off; //输出域标题,缺省为on
set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
set termout off; //显示脚本中的命令的执行结果,缺省为on
set trimout on; //去除标准输出每行的拖尾空格,缺省为off
set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
复制
SQL> set timing on; //设置显示“已用时间:XXXX”
SQL> set autotrace on-; //设置允许对执行的sql进行分析
SQL> set trimout on; //去除标准输出每行的拖尾空格,缺省为off
SQL> set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
SQL> set echo on //设置运行命令是是否显示语句
SQL> set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
SQL> set feedback on; //设置显示“已选择XX行”
SQL> set feedback off; //回显本次sql命令处理的记录条数,缺省为on
SQL> set colsep''; //输出分隔符
SQL> set heading off; //输出域标题,缺省为on
SQL> set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
SQL> set linesize 80; //输出一行字符个数,缺省为80
SQL> set numwidth 12; //输出number类型域长度,缺省为10
SQL> set termout off; //显示脚本中的命令的执行结果,缺省为on
SQL> set serveroutput on; //设置允许显示输出类似dbms_output
SQL> set verify off //可以关闭和打开提示确认信息old 1和new 1的显示.
复制
71.HINT
select /*+ full(t1) */ * from t1;--全表扫描
select /*+ index(t1 idx_name) */ * from t1 where object_id>2;使用指定索引
select /*+ no_index(t1 idx_name) */ * from t1 where object_id>2; --不使用指定索引
select /*+ index_desc(t1 idx_name) */ * from t1 where object_id=2; --按索引降序顺序访问数据
select /*+ index_combine(t1 idx_name) */ * from t1;--选择位图索引
select /*+ index_ffs(t1 idx_name) */ from t1 where object_id <100; --索引快速全表扫描(把索引当作一个表看待)
select /*+ index_join(t1 idx_name1 idx_name2) */ * from t1 where object_id=5 and status='VALID'; --同时使用条件列上的相关索引
select /*+ index_ss(t1 index_name) */ * from t1 where object_id=99; --跳跃式扫描
select /*+ leading(t1,t) */ t.* from t,t1 where t1.object_id=t.object_id; --指定t1为驱动作,优化器先访问此表
select /*+ ordered */ t.* from t,t1 where t1.id=t.id; --指定按from 后面表的顺序选择驱表,t作为驱动表
select /*+ use_nl(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--使用NEST LOOP表连接,适合含有小表数据关联,如一大一小(有别名,必须用别名)
select /*+ use_hash(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--使用HASH表连接,适合两个大表关联
select /*+ use_merge(t1,t) */t.* from t1,t where t1.object_id=t.object_id;--使用合并排序表连接
select /*+ no_use_nl(t1,t) */ t.* from t1,t where t1.object_id=t.object_id; --不使用NEST LOOP表连接
select /*+ no_use_hash(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--不使用HASH表连接
select /*+ no_use_merge(t1,t) */t.* from t1,t where t1.object_id=t.object_id; --不使用合并排序表连接
/*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
SELECT /*+ PUSH_PRED (v1) */ t1.c1,v1.c1
/*+no_push_pred()*/
/*+ no_unnest */
/*+ unnest */
复制
72.QPS,TPS
QPS(Queries Per Second,每秒查询数)
TPS(Transactions Per Second,每秒处理事务数)
--一分钟QPS
select value from v$sysmetric
where metric_name in ('Executions Per Sec')
and group_id = 2;
复制
--15秒QPS
select value from v$sysmetric where metric_name in ('Executions Per Sec') and group_id = 3;
复制
TPS:
select (select VALUE from v$sysmetric where metric_name in ('User Commits Per Sec'))
+ (select VALUE from v$sysmetric where metric_name in ('User Rollbacks Per Sec')) as TPS FROM DUAL;
复制
73.回收高水位
alter table XXX enable row movement;
alter table XXX shrink space;
alter table XXX disable row movement;
复制
检查索引状态
select owner,table_name,status from dba_indexes where table_name='XXX';
复制
74.查询段大小排名前20
set line 300
col owner for a15
col segment_name for a30
set pagesize 100
select * from
(select owner,segment_name,segment_type,BYTES/1024/1024/1024 GB from dba_segments order by 4 desc)
where rownum<=20;
复制
查询段大小排名前20总大小
select sum(GB) from
(select owner,segment_name,segment_type,BYTES/1024/1024/1024 GB from dba_segments order by 4 desc)
where rownum<=20;
复制
75. 内存、CPU前10
消耗内存前10名
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
消耗CPU前10名
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
复制
76.内存使用率
##centos6 or suse os
usedMem1=`free -k|grep "cache:" |awk '{print $3}'`
shmem=`cat /proc/meminfo |grep -w Shmem|awk '{print $2}'`
usedMem=`expr $usedMem1 + $shmem`
复制
##redhat7 os
usedMem1=`free -k|grep "Mem:" |awk '{print $3}'`
shmem=`cat /proc/meminfo |grep -w Shmem|awk '{print $2}'`
usedMem=`expr $usedMem1 + $shmem`
复制
77.数据库启动shell脚本
cat db_startup.sh
datename="`date +%Y%m%d%s`"
su - oracle -c"
lsnrctl start;
sqlplus / as sysdba <<EOF
spool /home/oracle/shell/outlog/$datename.txt
startup;
prompt database startup;
select STATUS from v\\\$instance;
prompt alter system register;
alter system register;
EOF
lsnrctl status;
exit;
"
复制
78.数据库关闭shell脚本
cat db_shutdown.sh
datename="`date +%Y%m%d%s`"
su - oracle -c"
lsnrctl stop;
sqlplus / as sysdba <<EOF
spool /home/oracle/shell/outlog/$datename.txt
show user;
select STATUS from v\\\$instance;
shutdown immediate;
prompt database shutdown;
exit
EOF
"
复制
###chenjuchao 20250318###


