Oracle数据库常用的78个脚本,速来下载!17认证网

正规官方授权
更专业・更权威

Oracle数据库常用的78个脚本,速来下载!

以下文章来源于IT小Chen,作者chenjuchao

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 200col value for a50set pagesize 100select * from nls_database_parameters;

7.spfile参数文件位置和名称

show parameter spfile

8.pfile参数文件位置、名称、内容

cat $ORACLE_HOME/dbs/init实例名.ora

9.表空间信息

set line 300col tablespace_name for a20select tablespace_name,block_size,initial_extent,next_extent,max_size,status,contents,logging,extent_management,segment_space_managementfrom dba_tablespaces;

10.表空间使用率(非自动扩展)

set pagesize 9999set linesize 132col tablespace_name for a35selecta.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) fWHERE a.tablespace_name = f.tablespace_name(+)order by "%_Free"/

11.表空间使用率(非自动扩展和自动扩展)

###不适用同一表空间下既有自动扩容又有非自动扩展的数据文件

selecta.tablespace_name,case when g.auto_free <0 then round((f.free_MB/a.total_MB)*100else round(((f.free_MB+g.auto_free)/b.r_total_mb)*100end "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,2as 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 , 2as MAX_MB,trunc((maxbytes-bytes)/1024/1024,2) FREE_MB from dba_data_files) a group by tablespace_name) gWHEREa.tablespace_name = f.tablespace_name(+)andg.tablespace_name = a.tablespace_nameandb.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) * 1002) Used_Prcfrom (select TABLESPACE_NAME,ROUND(sum(casewhen autoextensible = 'NO' thenBYTESwhen autoextensible = 'YES' thenMAXBYTESend/ 1024 / 1024,2) TOTAL_MB,ROUND(sum(casewhen MAXBYTES - BYTES >= 0 thenMAXBYTES - BYTESwhen MAXBYTES - BYTES < 0 then0end/ 1024 / 1024,2) Free_MB_1from dba_data_filesgroup by TABLESPACE_NAME) ainner join (SELECT dfs.TABLESPACE_NAME,SUM(dfs.bytes / 1024 / 1024) FREE_MB_2FROM dba_free_space dfsGROUP BY dfs.TABLESPACE_NAME) bon a.TABLESPACE_NAME = b.TABLESPACE_NAME(+);

13.数据文件信息

set line 300col tablespace_name for a20col file_name for a45select tablespace_name,file_name,file_id,status,trunc(bytes / 1024 / 1024 / 10242) as FILE_GB,autoextensible,trunc(maxbytes / 1024 / 1024 / 10242) as MAX_GBfrom dba_data_filesorder by file_id;

14.UNDO

select t.status,sum(t.blocks)*8/1024||'M' size_Mfrom dba_undo_extents tgroup by t.status;

15.rollname

select * from v$rollname;
set line 150col tablespace_name for a10set pagesize 100select owner, tablespace_name, segment_id, segment_name, statusfrom dba_rollback_segs order by 2,3;

16.临时文件信息

set line 300col tablespace_name for a20col file_name for a40select tablespace_name,file_name,file_id,status,trunc(bytes / 1024 / 1024 / 10242) as FILE_GB,autoextensible,trunc(maxbytes / 1024 / 1024 / 10242) as MAX_GBfrom dba_temp_filesorder by file_id;

17.temp使用率

SET PAGESIZE 400SET LINES 300COL D.TABLESPACE_NAME FORMAT A15COL D.TOT_GROOTTE_MB FORMAT A10COL TS-PER FORMAT A15SELECT d.tablespace_name "Name",TO_CHAR(NVL(a.bytes / 1024 / 10240),'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 * 1000), '990.00') "HWM % " ,TO_CHAR(NVL(t.bytes/1024/10240),'99999999.999') "Using (M)",TO_CHAR(NVL(t.bytes / a.bytes * 1000), '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) tWHERE 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 a50select status,name from v$controlfile;

19.查看控制文件内容

SELECT * FROM v$CONTROLFILE_RECORD_SECTION;

20.日志文件信息

set line 300col member for a50select a.group#,THREAD#,b.member,a.members,a.status,a.sequence#,bytes / 1024 / 1024 as file_mbfrom v$log a, v$logfile bwhere a.group# = b.group#order by 2,1;

21.归档信息

archive log list;
set pagesize 100select a_date,a_count from (select to_char(first_time,'YYYY-MM-DD') a_date,count(*) a_count from gv$log_historygroup by to_char(first_time,'YYYY-MM-DD')order by 1 descwhere rownum<=31;

22.归档频率

set line 300set pagesize 1000SELECT TRUNC(first_time) "Date",TO_CHAR(first_time, 'Dy') "Day",COUNT(1"Total",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '00', 10)) "h0",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '01', 10)) "h1",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '02', 10)) "h2",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '03', 10)) "h3",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '04', 10)) "h4",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '05', 10)) "h5",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '06', 10)) "h6",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '07', 10)) "h7",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '08', 10)) "h8",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '09', 10)) "h9",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '10', 10)) "h10",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '11', 10)) "h11",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '12', 10)) "h12",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '13', 10)) "h13",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '14', 10)) "h14",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '15', 10)) "h15",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '16', 10)) "h16",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '17', 10)) "h17",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '18', 10)) "h18",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '19', 10)) "h19",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '20', 10)) "h20",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '21', 10)) "h21",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '22', 10)) "h22",SUM(DECODE(TO_CHAR(first_time, 'hh24'), '23', 10)) "h23",ROUND(COUNT(1) / 242"Avg"FROM gv$log_historyWHERE thread# = inst_idGROUP BY TRUNC(first_time), TO_CHAR(first_time, 'Dy')ORDER BY 1 desc;

23.监听文件

监听文件信息

lsnrctl statuslsnrctl 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 300col name for a10col compatibility for a10select group_number,name,block_size,total_mb,free_mb,(1-(free_mb/total_mb))*100 used,type,compatibility,voting_filesfrom v$asm_diskgroup;

25.磁盘信息

set line 300col CREATE_DATE for a10col name for a15col path for a20set pagesize 300select GROUP_NUMBER,DISK_NUMBER,STATE,OS_MB,TOTAL_MB,FREE_MB,NAME,PATH,CREATE_DATE,VOTING_FILEfrom v$asm_disk order by 1,2;

26.OCR

ocrcheck -configocrcheck

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.查看节点信息

olsnodessrvctl status nodeapps -n cjc01srvctl status nodeapps -n cjc02

37.查看数据库名称

srvctl config databasesrvctl status database -d cjc

38.查看SCAN

srvctl config scansrvctl 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_objectswhere 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 300col profile for a10select * 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 a15select owner, trunc(sum(bytes) / 1024 / 1024,2as db_MBfrom dba_segmentsgroup by ownerorder by 1;

44.用户信息

set line 200set pagesize 100col ACCOUNT_STATUS for a20col default_tablespace for a15col username for a10select 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 a10select owner, count(*)from dba_tablesgroup by ownerorder by 1;
---临时表数量select owner, count(*)from dba_tableswhere temporary = 'Y'group by ownerorder by 1;
---索引信息select owner, count(*)from dba_indexesgroup by ownerorder by 1;
---视图数量select owner, count(*)from dba_viewsgroup by ownerorder by 1;
---触发器信息select owner, count(*)from dba_triggersgroup by ownerorder by 1;
---存储过程select owner, count(*)from dba_proceduresgroup by ownerorder by 1;
---无效的对象set line 100set pagesize 300col owner for a20col object_name for a30select owner,object_type,count(*)from dba_objectswhere status = 'INVALID' group by owner,object_type;select owner,object_name,object_typefrom dba_objectswhere status = 'INVALID';

47.分区表信息

注意是否需要手动添加分区

SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE FROM DBA_PART_TABLES ORDER BY 1;

48.查看分区名称等

set line 300set pagesize 1000col table_owner for a20col table_name for a20col PARTITION_NAME for a20col SUBPARTITION_COUNT for a20col MAX_SIZE for a20col HIGH_VALUE for a50select 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 150col INTERVAL for a35col SCHEMA_USER for a15col what for a30SELECT job,schema_user,broken,interval,what,last_date,last_sec,BROKEN from dba_jobs;
set line 100col start_date for a20select owner,job_name,job_type,start_date,state from dba_scheduler_jobs;

50.查询索引列

set line 300set pagesize 100col TABLE_OWNER for a15col TABLE_NAME for a30col COLUMN_NAME for a15col INDEX_NAME for a35select TABLE_OWNER,TABLE_NAME,COLUMN_NAME,INDEX_NAME from dba_ind_columns where TABLE_NAME in ('XXXXXX') order by 2,3;

51.查询约束

set line 300col owner for a15select 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 300set pagesize 150col in_size for a10col out_size for a10col input_type for a10col e for a20col s for a20selectsession_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,statusfrom v$rman_backup_job_details where INPUT_TYPE='DB FULL'order by S DESC;

53.增量备份

set line 300set pagesize 150col in_size for a10col out_size for a10col input_type for a20col e for a20col s for a20selectsession_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,statusfrom 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 300set pagesize 150col in_size for a10col out_size for a10col input_type for a20col e for a20col s for a20selectsession_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,statusfrom v$rman_backup_job_details where INPUT_TYPE='ARCHIVELOG'order by S DESC;

55.数据库连接信息检查

col username for a15select inst_id, username, count(*)from gv$sessiongroup by inst_id, usernameorder by 1;

56.资源限制

set line 300set pagesize 100col RESOURCE_NAME for a10col INITIAL_ALLOCATION for a15select * from v$resource_limit;

57.AWR

@?/rdbms/admin/awrrpt.sql@?/rdbms/admin/awrgrpt.sql

58.执行计划

set linesize 150set pagesize 2000select * 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 a35select client_name,status from dba_autotask_client;

61.数据库内存配置检查

sqlplus / as sysdbashow parameter memshow parameter sgashow parameter pga

62.数据库参数配置检查

---v$parameter ---session---v$system_parameter ---system
set line 100set pagesize 100col name for a30col value for a20col display_value for a20col isdefault for a20select name, value, display_value, isdefaultfrom v$system_parameterwhere 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 200col name for a40col describ for a50SELECT x.ksppinm as name,y.ksppstvl as value,y.ksppstdf as isdefault,x.ksppdesc describFROM SYS.x$ksppi x, SYS.x$ksppcv yWHERE x.inst_id = USERENV('Instance')AND y.inst_id = USERENV('Instance')AND x.indx = y.indxAND 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 a40col name for a30set lines 200 pages 1000col pname for a10col current_value for a85col check_result for a42select nam.inst_id,nam.ksppinm pname,val.ksppstvl current_value,caseWHEN nam.ksppinm = 'event' andval.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_resultfrom x$ksppi nam, x$ksppsv valwhere nam.indx = val.indxand nam.ksppinm IN ('event')/

65.SGA、PGA使用情况

select name,total,round(total-free,2) used,round(free,2free,round((total-free)/total*100,2) pctused from(select 'SGA' name,(select sum(value)/1024/1024 from v$sga) total,(select sum(bytes/1024/1024from v$sgastat where name='free memory'free from dual)unionselect name,total,round(used,2) used,round(total-used,2free,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 300set pagesize 1000select 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 150set pagesize 2000select * 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.eventfrom v$session v, v$sql sqlwhere v.sql_address = sql.addressand v.last_call_et > 0and 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命令,缺省为onset feedback off;  //回显本次sql命令处理的记录条数,缺省为onset heading off;   //输出域标题,缺省为onset pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。set termout off;   //显示脚本中的命令的执行结果,缺省为onset trimout on;   //去除标准输出每行的拖尾空格,缺省为offset trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off
SQL> set timing on; //设置显示“已用时间:XXXX”SQL> set autotrace on-; //设置允许对执行的sql进行分析SQL> set trimout on; //去除标准输出每行的拖尾空格,缺省为offSQL> set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为offSQL> set echo on //设置运行命令是是否显示语句SQL> set echo off; //显示start启动的脚本中的每个sql命令,缺省为onSQL> set feedback on; //设置显示“已选择XX行”SQL> set feedback off; //回显本次sql命令处理的记录条数,缺省为onSQL> set colsep''; //输出分隔符SQL> set heading off; //输出域标题,缺省为onSQL> set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。SQL> set linesize 80; //输出一行字符个数,缺省为80SQL> set numwidth 12; //输出number类型域长度,缺省为10SQL> set termout off; //显示脚本中的命令的执行结果,缺省为onSQL> set serveroutput on; //设置允许显示输出类似dbms_outputSQL> 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$sysmetricwhere 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 300col owner for a15col segment_name for a30set pagesize 100select * 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.shdatename="`date +%Y%m%d%s`"su - oracle -c"lsnrctl start;sqlplus / as sysdba <<EOFspool /home/oracle/shell/outlog/$datename.txtstartup;prompt database startup;select STATUS from v\\\$instance;prompt alter system register;alter system register;EOFlsnrctl status;exit;"

78.数据库关闭shell脚本

cat db_shutdown.shdatename="`date +%Y%m%d%s`"su - oracle -c"lsnrctl stop;sqlplus / as sysdba <<EOFspool /home/oracle/shell/outlog/$datename.txtshow user;select STATUS from v\\\$instance;shutdown immediate;prompt database shutdown;exitEOF"

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » Oracle数据库常用的78个脚本,速来下载!
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师