数据中心数据库管理与sql优化技术交流Word文档下载推荐.docx
《数据中心数据库管理与sql优化技术交流Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据中心数据库管理与sql优化技术交流Word文档下载推荐.docx(52页珍藏版)》请在冰点文库上搜索。
(12)查哪个索引状态不正确29
(13)查某个用户正在跑的sql29
(14)查客户营销系统bbrun用户非web应用正在运行的sql29
(15)查客户营销系统bbrun用户web应用正在运行的sql30
(16)如何杀某个session30
(17)查表是否被锁30
(18)查回滚段的使用31
(19)查询表的描述32
(20)查询列的描述32
(21)建主键时如何指定表空间33
(22)误删除一张表,如何恢复33
(23)在函数中怎么执行DDL语句33
(24)导出用户的建表语句34
(25)导出用户的建索引语句34
(26)导出用户的建视图语句34
(27)导出用户的建存储过程语句34
(28)导出用户的建函数语句34
(29)导出用户的建序列语句34
5、sql语句优化34
(1)执行计划34
(2)何时要对表进行分析34
(3)如何对一张表进行分析35
(4)sql执行计划35
(5)hint35
(6)用EXISTS替代IN;
用NOT
EXISTS替代NOT
IN35
(7)并行度35
(8)RAC影响35
(9)索引监控35
(10)表和索引的压缩存储的研究35
(11)增加序列的cache值,建议cache值不少于2035
6、日常编写sql应该注意的地方36
1、数据下载系统日常检查与查询
(1)查目前加载的作业
登陆10.241.1.16的cpdds用户,在/DDS_DATA/DDS/ETL/bin目录下执行etlctlstatus
LPendingQue带-的作业表示数据从数据文件解密并加载到cpdds_sdata用户。
TPendingQue带#的作业表示数据从cpdds_sdata用户下merge到cpdds_pdata用户。
进一步查看作业
(2)查哪些文件已经传输到服务器上但未加载
可以通过查看/DDS_DATA/DDS/ETL/run目录下的文件
一直未加载的文件需要联系数据下载系统项目组进行处理。
(3)查某个文件加载到哪天以及状态
selectjob_name,LAST_TXDATE,JOB_STATUSfromcpdds_etl.etl_jobwherejob_namelikeupper('
sav_indpty_tx_stat%t98_indpty_tx_stat'
);
(4)查文件成功加载最新情况
selecta.etl_job_name,b.JOB_FREQUENCY,max(to_char(a.txdate,'
YYYYMMDD'
))txdate
fromcpdds_etl.etl_job_loga,cpdds_etl.etl_jobb
wherea.etl_job_name=b.job_name
anda.etl_job_namelike'
%#%'
anda.STATUS='
D'
groupbya.etl_job_name,b.JOB_FREQUENCY
orderbyb.JOB_FREQUENCY,max(to_char(a.txdate,'
))desc,a.etl_job_name;
其中STATUS='
表示数据加载成功;
JOB_FREQUENCY=‘D’的是每天加载;
JOB_FREQUENCY=‘M’是每月加载;
JOB_FREQUENCY=‘Y’是每年加载。
(5)查失败的作业与失败原因
colRETMSGfora60
coletl_job_namefora56
select/*+ORDER(B,A)*/a.etl_job_name,max(to_char(a.txdate,'
))txdate,max(to_char(a.end_time,'
YYYYMMDDHH24:
MI:
SS'
))end_datetime,substr(RETMSG,1,30)RETMSG
andb.JOB_FREQUENCY='
anda.STATUS='
F'
groupbya.etl_job_name,substr(RETMSG,1,30)
orderby2asc,3asc;
(6)查某个文件加载状态、加载开始时间与结束时间
select/*+ORDER(B,A)*/a.etl_job_name,to_char(a.txdate,'
)txdate,to_char(START_TIME,'
YYYYMMDD-HH24:
),to_char(END_TIME,'
),a.status
fromcpdds_etl.etl_job_loga,cpdds_etl.etl_jobb
wherea.etl_job_name=b.job_name
--anda.STATUS='
andto_char(a.txdate,'
)in('
20110320'
'
20110321'
)
--groupbya.etl_job_name,to_char(a.txdate,'
orderby2desc,a.etl_job_name;
(7)查某个文件加载的时长
)txdate,ROUND(TO_NUMBER(END_TIME-START_TIME)*24*60*60)do_time
查询结果单位是秒。
2、数据下载系统日常特殊处理
(1)加载异常的处理
目前,数据下载系统从数据文件解密并加载到cpdds_sdata的过程一般不会出错,而碰到结息数据、小额管理费、每月第一天这样的大数据量时,从cpdds_sdata到cpdds_pdata的过程处理很慢,并时常出错(常见是临时表空间和回滚段不足;
或进程僵死),需要人工杀session和进程,并且重跑数据。
1)查出对应的session,杀掉session
2)杀对应的进程;
3)等待数据库回滚结束
4)修改cpdds_etl.etl_job_log
updatecpdds_etl.etl_job_logasetstatus='
end_time=sysdate
whereetl_job_name=upper('
cre_indpty_prod_stat#t98_indpty_prod_stat'
)andto_char(a.txdate,'
)='
20111002'
;
将状态改成失败(F)
5)修改cpdds_etl.etl_job
updatecpdds_etl.etl_jobasetJOB_STATUS='
wherejob_name=upper('
);
将状态改成失败(F),该作业才会重新启动。
6)修改控制文件
cd/DDS_DATA/DDS/ETL/run
mvcre_indpty_prod_stat#t98_indpty_prod_stat_20111002.ctl.tscre_indpty_prod_stat#t98_indpty_prod_stat_20111002.ctl,即将对应作业最后的.ts去掉。
7)作业重新加载
数据下载系统会根据控制文件和cpdds_etl.etl_job的状态重新启动该作业的加载。
(2)启停
1)启动etl
cd/DDS_DATA/DDS/ETL/bin
etlctlstart(启动过程需要输入用户和密码)
2)关闭etl
etlctlstop
3)启动GTP
cd/DDS_DATA/GTPServer
./gtp.shstop
4)关闭GTP
(3)手工解密文件
有时,客户营销系统需要单独处理数据下载系统的某些文件,因此需要手工将数据下载系统的文件先解密,解密前建议建一个目录用于保存解密前后的文件,数据下载系统处理完的数据文件保存在/DDS_DATA/DDS/ETL/success/YYYYMMDD目录下,数据文件拷贝后,到/DDS_DATA/DDS/ETL/bin目录下,执行decrypt,然后根据屏幕提示操作,操作过程需要输入用户和密码。
(4)数据文件的清理
若文件系统/CPDDS_DATA使用率超过85%,可以删除/DDS_DATA/DDS/BAK/99/YYYYMMDD和/DDS_DATA/DDS/BAK/02/YYYYMMDD下的文件(/DDS_DATA/DDS/BAK/99目录是转发给省邮政的文件,/DDS_DATA/DDS/BAK/02是转发给厦门分行的文件)。
也可以删除/DDS_DATA/DDS/ETL/success/YYYYMMDD下的文件,该目录是福建省分行处理成功的文件。
3、数据库服务器性能查看
目前数据中心采用2台IBMP550小型机做为数据库服务器,其中A机IP地址为10.241.1.12(数据库vip地址是10.241.1.13),B机IP地址是10.241.1.14(数据库vip地址是10.241.1.15)。
目前总行数据下载系统连接到A机数据库,客户营销系统web和应用连接到B机数据库,平常要查看数据库服务器的性能,必须登录到相应的服务器上查看,在10.241.1.16上执行vmstat看的是应用服务器的性能,而不是数据库服务器的性能,目前A机和B机登陆的用户是view/view1。
(1)常用性能监控命令
a)AIX的topas
topas下令用于监控种种体系资源,如CPU的应用情况,CPU变乱和行列,内存和换页空间的应用,磁盘性能,网络性能以及NFS统计等。
它还会陈诉指派给差别WLM类的进程对体系资源的损耗情况。
它还能陈诉体系中最热点的进程和事变量管理器(WLM)的热点类。
有关WLM类信息只有在WLM激活时才会表现。
topas下令将热点进程界说为那些应用大宗CPU工夫的进程。
topas下令没有作日记的选项,全部信息都是及时的。
CPU使用情况显示一个条形图表来表示累积的CPU使用情况。
如果有多个CPU,按c键两次就可显示CPU列表。
仅按c键一次会关闭这个部分。
User%显示以用户方式执行的程序所使用的CPU的百分数;
(缺省按用户%排序)
Kern%显示以内核方式执行的程序所使用的CPU的百分数;
Wait%显示用于等待IO的时间的百分数;
Idle%表示CPU空闲时间的百分数。
网络接口显示了网络接口的列表。
所显示接口的最大数目是正被监视的接口数目,正如-n标志指定的那样。
按n键可关闭此部分。
再按一次n键就会显示一行所有网络接口活动的报告摘要。
两个报告都显示下列字段:
Interf网络接口的名称。
KBPS在监视时间间隔内每秒钟以MB为单位的总吞吐量。
这个字段是每秒接收到的千字节和发送的千字节的总和。
I-Pack在监视时间间隔内每秒钟接收到的数据包的数目。
O-Pack在监视时间间隔内每秒钟发送的数据包的数目。
KB-In在监视时间间隔内每秒钟接收到的千字节的数目。
KB-Out在监视时间间隔内每秒钟发送的千字节的数目。
磁盘显示了物理磁盘的列表。
按d键可关闭这个部分。
再按一次d键就会显示一行所有物理磁盘活动的报告摘要。
Disk物理磁盘的名称。
Busy%表示物理磁盘活动时间的百分比(驱动器带宽使用)。
KBPS在监视时间间隔内每秒钟读和写的千字节的数目。
此字段是KB-Read和KB-Writ的总和。
TPS每秒钟发送到物理磁盘的传输的数目。
传输是对物理磁盘的I/O请求。
多个逻辑请求可组合成对磁盘的单个I/O请求。
传输大小不确定。
KB-Read每秒钟从物理磁盘读取的千字节的数目。
KB-Writ每秒钟写到物理磁盘的千字节的数目。
进程显示了进程的列表。
按p键可关闭此部分。
按监视时间间隔内进程的CPU使用情况来对进程排序。
对于每一进程会显示下列字段:
Name在进程中执行的可执行程序的名称。
名称已被除去任何路径名和参数信息并被截断到9个字符的长度。
PID进程的进程标识。
CPU%CPU使用情况
在监视时间间隔内进程的平均CPU使用情况。
第一次显示进程时,这个值表示整个进程阶段平均CPU使用情况。
PgSp分配给此进程的调页空间的大小。
这可被认为是进程覆盖区的一种表达式,但并不包括用来保持可执行程序和它依赖的任何共享库的内存。
Owner拥有此进程的用户的用户名。
EVENTS/QUEUES
Cswitch在监视时间间隔内每秒上下文切换的数量。
Syscalls在监视时间间隔内每秒执行的系统调用的数量。
Reads在监视时间间隔内每秒执行的read系统调用的数量。
Writes在监视时间间隔内每秒执行的write系统调用的数量。
Forks在监视时间间隔内每秒执行的fork系统调用的数量。
Execs在监视时间间隔内每秒执行的exec系统调用的数量。
Runqueue准备运行但需要等待处理器可用的平均线程数目。
Waitqueue正在等待页面调度完成的平均线程数目。
FILE/TTY显示所选文件与tty统计信息的每秒频率。
Readch在监视时间间隔内read系统调用每秒读的字节数。
Writech在监视时间间隔内write系统调用每秒写的字节数。
Rawin在监视时间间隔内从TTY中每秒读取的原始字节数。
Ttyout在监视时间间隔内每秒写入TTY中的字节数。
Igets在监视时间间隔内每秒调用信息节点查找例程的数量。
Namei在监视时间间隔内每秒调用路径名查找例程的数量。
Dirblk在监视时间间隔内被目录搜索例程每秒扫描的目录块数目。
PAGING显示页面调度统计信息的每秒频率。
Faults在监视时间间隔内每秒页面出错的数量。
这包括不能激活页面调度的页面故障。
Steals在监视时间间隔内每秒钟有物理内存4K帧被虚拟内存管理器占用。
PgspIn在监视时间间隔内每秒钟从调页空间读取4K页面的数量。
PgspOut在监视时间间隔内每秒钟把4K页面写入调页空间的数量。
PageIn在监视时间间隔内每秒钟读取4K页面的数量。
这包括与从文件系统读取有关的页面调度活动。
从这个值中减去PgspIn就可得到在监视时间间隔内每秒钟从文件系统读取的4K页面的数量。
PageOut在监视时间间隔内每秒钟写4K页面的数量。
这包括与写入文件系统有关的页面调度活动。
从这个值中减去PgspOut就可得到在监视时间间隔内每秒钟写入文件系统的4K页面的数量。
Sios在监视时间间隔内虚拟内存管理器每秒钟发出的I/O请求的数目。
MEMORY显示实际内存大小与内存使用的分布情况。
Real,MB以MB为单位的实际内存大小。
%Comp当前分配给计算页面帧的实际内存的百分数。
计算页面帧通常是那些被调页空间支持的帧。
%Noncomp当前分配给非计算页面帧的实际内存的百分数。
非计算页面帧通常是那些被文件空间(可以是数据文件、可执行文件或共享库文件)支持的帧。
%Client当前被分配用来高速缓存远程安装的文件的实际内存的百分数。
PAGINGSPACE显示调页空间的大小及利用情况。
Size,MB系统上所有调页空间的总和,以MB为单位。
%Used当前在使用的调页空间占所有的百分数。
%Free当前未使用的调页空间占所有的百分数。
NFS(calls/sec)显示每秒调用的NFS状态
ServerV2
ClientV2
ServerV3
ClientV3
b)linux的top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
统计信息区
前五行是系统整体的统计信息。
第一行是任务队列信息,同uptime命令的执行结果。
其内容如下:
up系统运行时间,格式为时:
分
user当前登录用户数
loadaverage系统负载,即任务队列的平均长度。
三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。
当有多个CPU时,这些内容可能会超过两行。
内容如下:
Tasks:
进程总数
running正在运行的进程数
sleeping睡眠的进程数
stopped停止的进程数
zombie僵尸进程数
Cpu(s):
us用户空间占用CPU百分比
y内核空间占用CPU百分比
ni用户进程空间内改变过优先级的进程占用CPU百分比
id空闲CPU百分比
wa等待输入输出的CPU时间百分比
hi
si
最后两行为内存信息。
Mem:
物理内存总量
used使用的物理内存总量
free空闲内存总量
buffers用作内核缓存的内存量
Swap:
交换区总量
used使用的交换区总量
free空闲交换区总量
cached缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息
序号列名含义
PID进程id
USER进程所有者的用户名
PR优先级
NInice值。
负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。
VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。
RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行
c)ps
列出最占资源20个进程:
ps-ef|sort+3-4nr|head-20
linux:
AIX:
d)sar
AIX下只有root允许执行sar命令:
linux下:
e)vmstat
AIX:
参数
含义
备注
kthr
内核进程的状态
r
运行队列中的进程数,在一个稳定的工作量下,应该少于5
运行的进程比较多,系统很繁忙,当这个值超过了CPU数目,就会出现CPU瓶颈了
b
等待队列中的进程数(等待I/O),通常情况下是接近0的
memory
虚拟和真实内存的使用信息
avm
活动虚拟页面,在进程运行中分配到工作段的页面空间数
free
空闲列表的数量.一般不少于120,当fre少于120时,系统开始自动的kill进程去释freelist
page
页面活动的信息
re
页面i/o的列表
pi
从页面输入的页(一般不大于5)
po
输出到页面的页
fr
空闲的页面数(可替换的页面数)
sr
通过页面置换算法搜索到的页面数
cy
页面置换算法的时钟频率
faults
在取样间隔中的陷阱及中断数
in
设备中断
sy
系统调用中断
cs
内核进程前后交换中断
CPU
cpu的使用率
us
用户进程的时间
一般us+sy在单用户系统中不大于