推荐下载Oracle数据库维护手册 精品.docx

上传人:b****3 文档编号:27421396 上传时间:2023-06-30 格式:DOCX 页数:16 大小:23.64KB
下载 相关 举报
推荐下载Oracle数据库维护手册 精品.docx_第1页
第1页 / 共16页
推荐下载Oracle数据库维护手册 精品.docx_第2页
第2页 / 共16页
推荐下载Oracle数据库维护手册 精品.docx_第3页
第3页 / 共16页
推荐下载Oracle数据库维护手册 精品.docx_第4页
第4页 / 共16页
推荐下载Oracle数据库维护手册 精品.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

推荐下载Oracle数据库维护手册 精品.docx

《推荐下载Oracle数据库维护手册 精品.docx》由会员分享,可在线阅读,更多相关《推荐下载Oracle数据库维护手册 精品.docx(16页珍藏版)》请在冰豆网上搜索。

推荐下载Oracle数据库维护手册 精品.docx

推荐下载Oracle数据库维护手册精品

 

数据库维护手册

 

1

前言

本文主要是简单介绍和总结日常Oracle数据在运行维护方面的一些方法和技巧。

通过该手册以便于相关技术人员的日常运维工作。

2ORACLEDB维护方法

2.1数据库启动

1、以oracle用户用户登录,

sqlplus‘/assysdba’

sqlplus>startup

2、以oracle用户或ora816用户登录

sqlplus‘/assysdba’

sqlplus>startupnomunt

sqlplus>alterdatabasemount;

sqlplus>alterdatabaseopen;

3、第一种启动方式是最常用的手工启动方式,第二种启动方式是数据库有故障时常用的逐步启动方式,可以观察故障点。

因为startupnomount语句只读取spfile(serverparameterfile数据库参数文件),启动instance,启动SGA和后台进程;alterdatabasemount语句打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查;alterdatabaseopen打开包括Redolog文件在内的所有数据库文件,这种方式下可访问数据库中的数据。

Startup完成功能是上述三条语句的之和。

2.2数据库停止

1、sqlplus‘/assysdba’

sqlplus>shutdownnormal

正常方式关闭数据库。

2、shutdownimmediate

立即方式关闭数据库,在SQLPLUS中执行shutdownimmediate,数据库并不立即关闭,而是在所有事务执行完毕并提交工作后才关闭,所以可能会等待,因此在关闭数据前要停掉连接到数据库的所有应用程序。

建议日常维护工作中的关闭数据库,采用此方式。

3、shutdownabort

直接关闭数据库,正在访问数据库的会话会被突然终止。

如果数据库中有大量操作正在执行,这时执行shutdownabort后,因日志回滚、前滚(RollBack/RollForward),下次重新启动数据库需要教长时间。

当用shutdownimmediate不能关闭数据库时,shutdownabort可以立即完成数据库的关闭操作。

2.3监听器的启停

1、监听器的启动,以oracle用户用户登录

lsnrctlstart[$ORACLE_SID]

2、监听器的停止,以oracle用户用户登录

lsnrctlstop[$ORACLE_SID]

3、监听器状态的查看,以oracle用户用户登录

lsnrctlstatus[$ORACLE_SID]

4、检测服务名是否有效,在操作系统下运行

tnspingSERVICE_NAMENUMBERS

SERVICE_NAME为你建立的服务名,NUMBERS为你要试PING数据库服务的次数

2.4用户管理

1、用SQL语句查看系统中已有用户情况

select*fromdba_users;

2、增加新的用户,并授予连接和资源权限,只有授予连接权限才可登录,授予资源权限才可建表和修改

createuserUSERNAMEprofiledefaultidentifiedbyPASSWORD

defaulttablespaceDEFALUT_TABLESPACE_NAME

temporarytablespaceTEMP_TABLESPACE_NAME;

grantconnecttoUSERNAME;

grantresourcetoUSERNAME;

3、修改用户口令

alteruserUSERNAMEidentifiedbyNEWPASSWORD;

4、删除用户

dropuserUSERNAME;

5、限制某个已有用户会话的连接数(通过创建profile的方式)

createprofilePROFILENAMElimitsessions_per_user

CONNECT_NUMBERS;

alteruserUSERNAMEprofilePROFILENAME;

2.5数据库参数文件

1、参数文件位置$ORACLE_HOME/dbs/spfileINSTANCE_NAME.ora,参数主要分为动态参数和非动态参数,动态参数修改够直接生效,非动态参数需要重新启动数据库才能生效。

2、修改参数的方法

altersystemsetPARAMETER_NAME=VAlUEscope=both(system/spfile)

3、几个重要的参数

A、db_block_size数据库块大小,数据库创建时决定,创建后不能修改。

B、db_block_buffers 数据高速缓冲区大小为此值与db_block_buffes的乘积,该区越大越好。

C、share_pool_size程序高速缓冲区和数据字典缓冲区的大小,主要用于存储执行过的sql语句,减少重复分析,提高运行速度。

该区也越大越好,但建议数据高速缓冲区加上程序高速缓冲区和数据字典缓冲区的大小(即SGA)一般不超过系统物理内存的50%。

D、sort_area_size 每个会话用于排序操作的内存大小,建议为默认值的两倍到1M之间。

E、process 能同时访问数据库的最大进程数,根据连接数的多少,来设定,一般为300以上。

F、db_io_slaves后台写进程数对I/O比较繁忙的数据库,可以将其设为多于1个。

(以上参数以9i为参考,在10g里个别参数名有所变化)

2.6数据库概况的查询

1、表空间的情况

selecttablespace_name,stautsfromdba_tablespaces;

2、数据文件的情况

SELECTFILE_NAME,FILE_ID,TABLESPACE_NAMEFROMDBA_DATA_FILES;

3、段的情况

SELECTSEGMENT_NAME,,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUSFROMDBA_ROLLBACK_SEGS;

4、表、存储过程的拥有者名字和创建日期

selectowner,object_name,object_type,createdfromall_objects

whereobject_type=’TABLE’OROBJECT_TYPE=’PROCEDURE'

5、其他常用的视图和表

v$lock锁的情况

v$session会话的情况

v$process进程的情况

v$parameter数据库参数

v$rollname回滚段的情况

v$sqlarea共享池中的SQL语句

v$waitstat等待的会话

dba_jobs数据里定义的作业

dba_jobs_running数据库里正在运行的作业

dba_views数据库中所有视图的文本

dba_indexs数据库中所有索引的描述

dba_free_space数据库中所有表空间自由分区

dba_db_links数据库中所有数据库链接

2.7常用对象的创建和使用

1、表的创建(在表空间zy上创建表dhhm为例)

createtabledhhm

(hmvarchar2(11),

yhmcvarchar2(60))tablespacezy;

2、索引的创建(将DHHM表上hm字段建立索引hmsy存储在表空间zy上为例)

createindexhmsyondhhm(hm)tablespacezy;

3、已有存储过程、函数、包源代码的查找

selectname,textfromuser_sourcewherename=NAME;

4、数据库链接的创建和使用

createpublicdatabaselink DBLINKNAME.worldconnecttoUSERNAMEidentdiedbyPASWORDusingSERVICENAME;

select*fromTABLE_NAME@DBLINKNAME;

5、同义词的创建和使用(以dyh用户可以查询并修改yyxt用户的dhhm表为例)

cratesynonyndyh.dhhmforyyxt.dhhm;

grantselectonyyxt.dhhmtodyh;

grantupdateonyyxt.dhhmtodyh;

2.8失效数据库对象的检测和编译

1、失效存储过程的查找和编译

select'alterprocedure'||object_name||'pile;'fromuser_objectswherestatus='INVALID'andobject_type='PROCEDURE’

然后复制粘贴并执行第一条语句的输出结果

2、失效的包的查找和编译

select'alterpackage'||object_name||'pile;'fromuser_objectswherestatus='INVALID'andobject_type='PACKAGE’

然后复制粘贴并执行第一条语句的输出结果

2.9数据备份的技巧

一、EXP/IMP

1、利用管道将数据库备份压缩到磁带中去,以备份dhhm,yhzl表为例

(磁带机名IBM为/dev/rmt0,HP为/dev/rtm/m0)

/usr/sbin/mknodpipe_ofp

/usr/sbin/mknodpipe_ifp

ddof=/dev/rmt0if=pipe_ifbs=1024&

presspipe_if&

expUSERNAME/PASSWORDtables=(dhhm,yhzl)file=pipe_of

rmpipe_of

rmpipe_if

2、利用管道将备份磁带解压后倒入到数据库中去

/usr/sbin/mknodpipe_ofp

/usr/sbin/mknodpipe_ifp

ddif=/dev/rmt0of=pipe_ofbs=1024&

unpresspipe_if&

impUSERNAME/PASSWORDtables=(dhhm,yhzl)file=pipe_if

rmpipe_of

rmpipe_if

3、数据库备份的分割,解决有时文件系统限制文件大小不能超过2G的问题(此处只分割为三个文件,当然可以根据实际情况继续增加)

expUSERNAME/PASSWORD

file=(FILE1.dmp,FILE2.dmp,FILE3.dmp)

log=dump.logfilesize=1gtables=(dhhm,yhzl)

1、为了提高备份速度,可将DIRECT参数设为Y(但当该参数设置为Y时,备份时不做一些有效性检查,应慎用),并将buffer开大,如

expUSERNAME/PASSWORDdirect=ybuffer=8192000

tables=(dhhm,yhzl)file=1.dmp

2、只备份建表和建索引语句

expUSERNAME/PASSWORDrows=ntables=(dhhm,yhzl)file=1.dmp

5、有时为了提高倒入速度,应该将数据和索引的倒入倒出分开,而不是一起进行

二、RMAN备份恢复

1、非归档模式下数据库必须在mount状态下进行备份。

$rmantarget/

进入rman

全库备份

RMAN>shutdownimmediate;关闭数据库

RMAN>startupmount;

RMAN>backupdatabaseformat‘/路径/DAT_%d_%T_%s’;

RMAN>alterdatabaseopen;恢复数据库为OPEN状态

RMAN>listbackupsetofdatabase;备份记录

RMAN>listbackup;

恢复

RMAN>shutdownimmediate;

RMAN>startupnomount;

RMAN>restorecontrolfilefrom‘控制文件备份’;

RMAN>alterdatabasemount;

RMAN>restoredatabase;

RMAN>recoverdatabase;

RMAN>alterdatabaseopenresetlogs;打开数据库并重做日志

2、归档模式

切换归档模式

SQL>altersystemsetlog_archive_dest_1='location=归档路径'scope=both;首先需要指定归档路径

SQL>startupmount;

SQL>alterdatabasearchivelog;非归档模式noarchivelog

SQL>alterdatabaseopen;

SQL>altersystemswitchlogfile;/*切换日志*/

RMAN>backupdatabaseformat'/数据备份路径/full_%d_%T_%s'plusarchivelogformat'/日志备份路径/arch_%d_%T_%s'deleteallinput;

2.10数据库命中率的监测

1、监控SGA中数据高速缓冲区的命中率

selecta.value+b.value"logical_reads",c.value"phys_reads",

(100*((a.value+b.value)-c.value)/(a.value+b.value))

"SGADATABUFFERHITRATIO"

fromv$sysstata,v$sysstatb,v$sysstatc

wherea.statistic#=38andb.statistic#=39

andc.statistic#=40;

2、监控SGA中字典缓冲区的命中率

select100*(sum(pins-reloads))/sum(pins)"DICTIONARYBUFFERHITRATIO"fromv$librarycache;

3、监控SGA中共享缓存区的命中率,

select100*((sum(pins-reloads))/sum(pins))"SQLSHAREAREAHITRATIO"fromv$librarycache;

4、整个SGA使用率的检查

selectname,sgasize/1024/1024"totalsgaM",bytes/1024/1024

"freesgaM",round(bytes/sgasize*100,2)"freeratio%"from

(selectsum(bytes)sgasizefromsys.v_$sgastat)s,sys.v_$sgastatf

wheref.name='freememory';

2.11最消耗资源进程的检测

1、查看某个会话正在执行的SQL语句及该会话是哪台台机器发出

selectb.username,b.mand,b.termainal,b.osuserb.machinea.sql_textfromv$sqltexta,v$sessionb

wherea.address=b.sql_addressandb.sid=SESSION_ID

2、SQLPLUS下找出最消耗资源的10个进程的SQL指令集

!

ps-eaf|grepora|grep-v\/sh|grep-vora_|awk'{print$4,$1,$2}'|sort-r|head–10(HP平台)

!

ps-eaf-opcpu,pid,user,tty,m|grepora|grep-v\/sh|grep-vora_|sort-r|head–10(IBM平台)

promptEnterTheUNIXPID:

acceptPID

SELECTa.username,a.terminal,a.program,b.sql_text

FROMv$sessiona,v$sqlareab,v$processc

WHERE(c.spid='&PID'ORa.process='&PID')

ANDa.paddr=c.addr

ANDa.sql_address=b.address;

3、利用数据自带统计工具检测其性能和瓶颈

A、启动统计程序:

svrmgrl>

svrmgrl>@$ORACLE_HOME/admin/rdbms/utlbstat.sql

B、停止统计程序

svrmgrl>

svrmgrl>@$ORACLE_HOME/admin/rdbms/utlestat.sql

C、一般在系统忙时开始统计程序,半小时后停止统计程序,不能执行过长,否则会影响系统性能;停止统计程序后,会在当前目录产生名为report.txt的文本文件,应对其做分析。

2.12锁的监测及处理

1、锁的监测及锁住哪些表(注意绝大部分锁都不是死锁)

selectid1,count(*)fromv$lockgroupbyid2havingcount(*)>1;

selectobject_name,object_typefromdba_objectswhereobject_id=id1;

这里v$lock中的id1和all_objects中的object_id是相对应的。

2、查看哪些会话被锁并杀死会话

selectid1,count(*)fromv$lockgroupbyid2havingcount(*)>1;

selectsid,serial#fromv$sessionwhereid1=被锁的表ID;

altersystemkillsession'sid,serial#';(注意sid,serial#都为数字)

3、死数据库僵死进程(假设此进程的数据库会话号为X)

selectspidfromv$processa,v$sessionb

wherea.addr=b.paddrandb.sid=x;

找出此数据库会话的操作系统进程spid,然后在操作系统提示符号下杀死此进程

killspid

2.13SQL语句执行技巧

1、打开和关闭显示SQL语句的执行方案(如使用哪个索引等)

setautotraceon;

setautotroaceoff;

2、打开和关闭显示SQL语句的执行时间

settimeon;

settimeoff;

settimingon;

settimingoff;

3、尽量使用unionall而不使用union,因为union操作时要排序并移走重复记录,而unionall不执行上述操作,所以速度要块很多倍。

4、避免在SQL里使用PL/SQL功能调用,以提高速度

5、查询时避免使用like‘%string’,以免全表扫描,而like‘string%’则使用了对应字段的索引。

6、定期重建索引,提高查询速度

alterindexINDEX_NAMErebuild;

6、保存SQL输出到文本文件(以输出到ls.txt为例)

setserverouton

spoolls.txt

SQL语句

Spooloff。

2.14表空间的管理

1、查看所有表空间大小和使用率

selecta.tablespace_name,sum(a.bytes)/1024/1024"totalsize(M)",

round(10000*(sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024))/

1000"usedsize(M)",

round(10000*(sum(a.bytes)/1024/1024-sum(b.bytes)/1024/1024)/

(sum(a.bytes)/1024/1024))/100"percent%"

fromdba_data_filesa,(selecttablespace_name,file_id,

sum(bytes)bytes

fromdba_free_spacegroupbytablespace_name,file_id)b

wherea.tablespace_name=b.tablespace_name

anda.file_id=b.file_idgroupbya.tablespace_name;

2、使用文件系统的表空间扩展

alterdatabaseTABLESPACE_NAMEadddatafileFILE_NAMEsizeSIZE;

3、用裸设备表空间的扩展

alterdatabaseTABLESPACE_NAMEadddatafileRAW_DEVICE_NAMEsizeSIZE;

这里需要注意的是裸设备要提前建立后,且这里使用的是裸设备的字符文件(类型为C),SIZE值要比其实际大小要稍微小一些。

4、集群中,在某一台主机上共享卷组上增加文件系统和裸设备后,一定要

同步到集群中另外的主机,否则当数据库在另外的主机中启动时,会找不着相应的设备号,导致数据库不能够被打开。

5、查找表空间的剩余空间块数以及最大空闲块的大小,如果碎片过多或最大空闲块过小,需要手工合并表空间碎片

selecttablespace_name,count(*)

"freeblocknumber",trunc(sum(bytes)/1024/1024)

"totalfreesize(M)",trunc(max(bytes)/1024/1024)

"maxblock(M)"fromdba_free_spacegroupbytablespace_name;

6、手工合并某表空间碎片

altertablespaceTABLESPACE_NAMEcoalesce;

2.15数据文件I/O的统计优化

col文件名formata35;

select

df.name文件名,fs.phyrds读次数,fs.phywrts写次数,

(fs.readtim/decode(f

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1