暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle数据库常用脚本(八)

hongg 2025-04-02
258

1.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 */

2.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;

3.回收高水位

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';

4.查询段大小排名前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;

5. 内存、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

6.内存使用率

##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`

7.数据库启动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;"

8.数据库关闭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"
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论