oracle 数据库维护_第1页
oracle 数据库维护_第2页
oracle 数据库维护_第3页
oracle 数据库维护_第4页
oracle 数据库维护_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 数据库维护1.1 ORACLE数据库用户和权限管理1、创建一个ORACLE用户必须拥有DBA权限2、创建用户语法如下:svrmgrl create user username identified by passworddefault tablespace tablesapce_nametemporary tablespace tablespace_namequota size/unlimited on tablespace_nameprofile default/profile_name;删除用户语法如下:svrmgrl drop user username cascade;修改用户

2、语法如下:svrmgrl alter user username identified by passwddefault tablespace tablespace_nametemporary tablespace tablespace_nameprofile default/profile_name 3、注:除非有特殊需要,否则严禁将用户建在系统表空间1、ORACLE的安全性分成以下几个级别:1)合法用户的帐户安全性ORACLE对所创建的每一个用户的口令均以加密的方式存储在数据字典中。2)2数据库对象的访问安全性在数据库中访问一个对象是通过权限来完成的。例如:grant select on

3、emp to public; -提供emp表的查询权限给所有用户grant insert on emp to scott; -提供emp表的插入权限SCOTT用户或者创建一个角色(role):create role new_role; -创建一个角色new-role grant select on emp to new_role; -提供emp表的查询权限给new-role角色grant select on dept to new_role;grant new_role to scott; -授与scott用户角色new-role3)ORACLE系统级权限如:CREATE ALL CLUSTE

4、R/INDEX ALTER ALL CLUSTER/INDEX SYSDBA -可以执行象建立数据库这样的所有系统管理功能 SYSOPER -执行数据库关闭/启动、备份有关的系统管理功能 4)ORACLE提供了8个系统级角色CONNECT -最终用户的基本系统权限,允许创建一个新的会话RESOURCE -开发商的基本系统权限,拥有创建表、索引、存储 过程等数据库对象的权限IMP_FULL_DATABASE -允许进行数据库的完整输入(imp)EXP_FULL_DATABASE -允许进行数据库的完整输出(exp)DBA -所有系统级权限EXECUTE_CATALOG_ROLE -允许用户执行数

5、据字典中部分过程和函数SELECT_CATALOG_ROLE -允许用户在部分数据字典中进行查询操作DELETE_CATALOG_ROLE -允许用户从表SYS.AUD$中删除数据 2、用户环境文件设定环境文件(profile文件)可以限制系统和数据库资源对用户开放,对管理口令进行管理、终止、重新使用、限制等。在创建一个用户时。使用环境变量可以最大限度利用系统资源,提高系统的安全性。系统中使用的默认环境文件,它对所有的用户开放,没有进行资源的限制。例如: svrmgrl create profile new_profilecpu_per_session 20session_per_user 1

6、idle_time 30;session_per_user -一个用户可以同时拥有的对话数cpu_per_user -一个对话可以使用数个百分之一秒cpu_per_call -语法分析、执行、取数可使用数个百分之一秒logical_reads_per_second -一个会话可以读取的ORACLE块最大数idle_time -无键盘活动最长时间(分钟)connect_time -一个会话连接最长时间(分钟)failed_login_attempts -导致帐户加锁的连续登录失败次数password_left_time -口令可以使用天数password_reuse_time -口令再次生效所需

7、要天数数据库具有审计发生在其内部的所有动作的能力,审计记录写入SYS.AVD$或操作系统的审计trace文件。数据库可以审计三种操作:登录企图、对象访问和数据库操作。1、设定AUDIT_TRAIL参数:AUDIT_TRAIL= OS -写入操作系统trace文件 DB -写入数据库SYS.AVD$ NONE -不进行审计2、审计登录audit session; audit session whenever successful; -仅审计登录成功的会话audit session whenever not successful;noaudit session; -禁止审计3、操作审计audit

8、role;例如:audit alte index ;4、对象审计例如:audit insert on scott.emp;audit all on scott.dept;1.2 ORACLE数据库空间管理1、管理表空间必须有DBA权限2、创建表空间语法:svrmgrl create tablespace TABLESPACE_NAME datafile FULL_PATH_FILENAME reuse size SIZE online; 例如: svrmgrl create tablespace test datafile /oracle/dbf/test1.dbf reuse size 10

9、0m online; 修改表空间: svrmgrl alter tablespace test offline; svrmgrl alter tablespace test add datafile /oracle/dbf/test2.dbf size 100m;删除表空间:1)删除建在该表空间上的用户(删除建在该表空间上的回滚段)2)使该表空间offline3)Svrmgrl drop tablespace test cascade;3、如果数据文件基于raw device(裸设备),则必须先在操作系统下利用操作系统命令创建好文件后再建表空间,修改该文件的用户及属组,同时根据操作系统的不同,

10、创建的表空间需要比生成的裸设备小64K不等(为便于管理,我们建议表空间比生成的裸设备小1m):例如:AIX操作系统下,先用smit创建一个raw device /dev/rrbs 大小为101m# chown oracle:dba /dev/rrbsSvrmgrl create tablespace rbs datafile /dev/rrbs size 100m online;4、定时对数据库空间的使用情况进行跟踪:例如:查询各表空间剩余空间大小:svrmgrl select sum(bytes/1024/1024),tablespace_name from dba_free_spacegr

11、oup by tablespace_name;1、创建回滚段语法svrmgrl create rollback segment r01 tablespace rbs storage (initial 20k next 20k optimal 3m);修改回滚段:svrmgrl alter rollback segment r01 offline;svrmgrl alter rollback segment r01 storage ( next 128k optimal 4m);initial不能修改删除回滚段:1)该回滚段不正被任何一个事务使用2)Offline该回滚段3)Svrmgrl dr

12、op rollback segment r01;4)修改初始化文件init.ora,修改rollback_segment=(r01,r02,r03,)=删除r012、使用optimal参数使回滚段自动回缩3、定时监控数据库回滚段使用情况例如:SQL select ,rs.gets ,rs.waits,(rs.waits/rs.gets)*100 ratio from 2 v$rollstat rs,v$rollname rn where rs.usn=rn.usn 3 /NAME GETS WAITS RATIO- - - -SYSTEM 663 0 0R01 1506 0 0R

13、02 2061 0 0R03 1781 0 0R04 1660 0 0查询到5记录.如果结果的比例大于百分之二,则在回滚段中存在竞争,应该用Create rollback segment语句创建更多的回滚段。创建更多的回滚段可以减少多个进程同时访问相同回滚段的机会。一个非常好的原则是每四个并发任务建立一个回滚段。在确定回滚段大小时应分析在数据库上所执行的任务的类型。OLTP任务写的数据较多,需要较大的回滚段。执行大量查询所写数据不多的DSS决策支持系统可以使用较小的回滚段。1.3 ORACLE数据库日常操作及监控1、 数据库关闭数据库关闭应该尽可能采用shutdown normal或shutd

14、own immediate命令关闭,除非万不得已,不要采用shutdown abort命令关闭数据库。正确关闭数据库步骤:1)停止监听进程$ lsnrctl stop2)查看系统中有无活动进程svrmgrl select username,sid,serial# from v$session where status=ACTIVE and username is not null;3)关闭数据库svrmgrl shutdown immediate2、 数据库启动在OPS下,启动数据库步骤:1)在双机上启动DLM锁管理进程例如:$ opsctl start2)在双机上启动并行数据库svrmgrl

15、 startup parallel3)启动监听进程$ lsnrctl start3、 检查alertSID.log文件。Oracle会将系统的主要事件和错误写在alert.log文件中,应该每天查看alert.log文件并将查看过的文件删除或作为历史记录存放到别处。1.4 ORACLE数据库日常监控1、 检查alertSID.log文件。Oracle会将系统的主要事件和错误写在alert.log文件中,应该每天查看alert.log文件并将查看过的文件删除或作为历史存放到别处。2、 用utlbstat/utlestat产生数据库性能报告,在报告中应该主要查看下列项目:1) library 的g

16、ethitratio建议值0.99,否则需要增加shared-pool-size。2) db block buffer的命中率HITS=100*(db block gets + consisten reads)/(db block gets + consistent reads) + physical reads)建议值0.8,否则需要增加db-block-buffers3) fileI/O,(files)各个磁盘组上的I/O应该基本均衡,如果有很大差异,检查数据库的物理设计。4) 在OPS环境下,需要检测lock hit ratio 和 ping write ratioSQL select

17、name,value from v$sysstat wherename in (db block gets, consistent gets,physical_reads);计算命中率:Lock hit ratio = (consistent gets ?C global lock converts(anync)/consistent gets) Ping write ratio =DBWR cross instance writes / physical writes)在单机情况下,lock hit ratio =1,ping write ratio = 0在OPS下,两者均为0-1之间的值

18、,如果lock hit ratio 降低或ping write ratio 升高,则需要重新检查数据库的OPS设计。5) 通过对v$sysstat等视图进行查询6) 将报告和以前的报告进行比较,对其中显著不同的进行分析。3、 对应用的SQL 语句进行分析,将结果反馈给开发者。详见数据库性能检测和优化4、 对OPS来说,必须经常查看v$ 表观察instance 在数据上 的冲突,于OPS有关的表有v$bh,v$ping,v$false_ping等。利用下列的命令可以检查各个datafile 上的冲突情况:SQL select file#,sun(xnc) from v$bh/v$ping/v$f

19、alse_ping group by file#Instance之间的冲突表现为PCM锁的转换,转换次数(SUM(XNC)多的datafile即是冲突比较多的datafile。5、 为了系统能够更好地进行运行,对数据库中的表和索引应该经常进行统计和检查,方法是对所有的表和索引用如下命令:SQL analyze index/table compute statistics;进行统计,统计的结果将存放如Oracle的系统表中,Oracle Optimazer在制定SQL执行计划时会根据统计的结果进行优化。用如下的命令对表和索引的存储结构进行检查:SQL analyze index/table va

20、lidate structure6、 对某些SQL语句直接利用执行计划进行分析,可以了解该SQL语句的执行效率。SQL explain plan for SQL select options,cost,operations from plan_table;如果发现某些SQL语句使用全表扫描,通过增加索引或修改SQL语句使之能够利用到索引,可以大大提高查找的速度。7、 对ORACLE的错误,采用如下命令进行简单定位:$ oerr ora error-no如果出现的错误是ORA-00600错误或ORA-07445等错误则需要通知ORACLE技术中心以取得解决。详见数据库故障处理。8、 如果得到OR

21、ACLE公司的新补丁,按照以下步骤进行:1)关闭数据库2)执行如下命令:$ sh patch.sh3)重新启动数据库4)如果发现在打完补丁后情况更糟,则关闭数据库后执行如下命令:$ sh undo_prePATCHNO.sh1.5 备份与恢复数据库的备份方案有以下几种:l 全部或部分卸出备份(exp)l 增量卸出备份l 冷备份(映象备份)l 热备份l 归档备份(备份archive 日志文件)l 整个文件系统的复制(不适用于数据文件为raw device数据库备份)建议数据库的备份采用冷备份(热备份)+ 归档备份与export卸出备份相结合的方式。1、归档备份:l 修改$ORACLE_HOME/

22、dbs/init$ORACLE_SID.ora 增加如下参数:log_archive_start = truel svrmgrl startup mount svrmgrl alter database archive log;svrmgrl select * from v$database;NAME CREATED LOG_MODE CHECKPOINT ARCHIVE_CH-ORA1 07/19/97 07:47:48 ARCHIVELOG 40490076 404344641 row selected. 2、冷备份关闭数据库后进行的数据库文件的拷贝备份。相对于热备份,冷备份还必须备份数据

23、库的在线日志文件(redolog文件)。3、热备份用数据库的“alter tablespace system begin backup”命令将数据库表空间处于开始备份模式下对数据库文件进行备份,在数据库文件备份工作完成后用相应命令使相应表空间结束备份状态。4、卸出备份采用数据库的备份命令exp,适用于对某些重要数据的单独备份。5、整个文件系统的复制该备份方法只适合于基于文件系统的数据库,效果较差。6、建议数据库的备份采用以上几种备份方式相结合。7、建议数据备份至少保存一个月;保存一个月归档日志文件。采取每周备份一次数据库(完全),每天备份生成的archive日志文件的方法进行数据库的备份;同时

24、采用数据库的卸出(exp)备份方法备份数据库中重要数据(按用户或按表)。8、控制文件的备份 svrmgrl alter database backup controlfile to /usr/con.bak 或 svrmgrl alter database backup controlfile to trace;(在$ORACLE_BASE/admin/$ORACLE_SID/udump下将生成一个trace文件,编辑该文件为一个sql脚本。Example:STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE YY1 NORESETLOGS NOAR

25、CHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 256 -最大数据文件数 MAXINSTANCES 8 MAXLOGHISTORY 800LOGFILE GROUP 1 /u01/log1 SIZE 10M, GROUP 2 /u01/log2 SIZE 10M, GROUP 3 /u01/log3 SIZE 10M, DATAFILE /u02/system.dbf, /u02/rbs.dbf, /u02/temp.dbf, /u02/tools.dbf, /u02/usr.dbf;;# Recovery is required if

26、 any of the datafiles are restored backups,# or if the last shutdown was not normal or immediate.RECOVER DATABASE# Database can now be opened normally.由于数据库并未受到破坏,无需对库进行恢复,因而以上这些语句可以删除。ALTER DATABASE OPEN;1、用户表空间故障现象:在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误例如ORA-07360,在关闭数据库(使用shutdown normal或shutdown i

27、mmediate) 时将导致错误ORA-01116,ORA-01110以及操作系统级错误ORA-07368。解决方法:以下有两种解决方案:l 用户的表空间可以被轻易地重建即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等。在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象。 svrmgrl startup mount svrmgrl alter database datafile filename offline drop; svrmgrl alter database open; svrmgrl drop tablespace table

28、space_name including contents;l 用户的表空间不能够被轻易地重建在大多数情况下,重建表空间是不可能及太辛苦的工作。方法是倒备份及做介质恢复。如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据在online redo log中方可被恢复。步骤如下: 1)Restore the lost datafile from a backup 2)svrmgrl startup mount 3)svrmgrl select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 wh

29、ere v1.group#=v2.group#; 4)如果数据库运行在NOARCHIVELOG模式下则: svrmgrl select file#,change# from v$recover_file;如果CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复。如果CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复。恢复最近一次的全备份或采用方案一。 5)svrmgrl recover datafile filename; 6)确认恢复成功 7)svrmgrl alter database open resetlogs;只读表空间无需做介质恢复,只要将备

30、份恢复即可。唯一的例外是: 表空间在最后一次备份后被改为read-write 模式 表空间在最后一次备份后被改为read-only 模式在这两种情况下,均需进行介质恢复2、临时表空间临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可.3、系统表空间如果备份不可用,则只能采用重建数据库的方法4、回滚表空间有两种情况l 数据库已经完全关闭(使用shutdown immediate或shutdown命令) 1) 确认数据库完全关闭 2) 修改init.ora文件,注释rollback-segment 3) svrmgrl startup restrict mount 4) svrmg

31、rl alter database datafile filename offline drop; 5) svrmgrl alter database open; 基于出现的结果: statement processed 转(7) ORA-00604,ORA-00376,ORA-01110转(6) 6) svrmgrl shutdown immediate 修改init.ora文件,增加如下一行: _corrupted_rollback_segments = (,.) svrmgrl startup restrict 7) svrmgrl drop tablespace tablespace_

32、name including contents; 8) 重建表空间及回滚段 9) svrmgrl alter system disable restricted session; 10) 修改init.ora文件l 数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库) 1) 恢复备份 2) svrmgrl startup mount 3) svrmgrl select file#,name,status from v$datafile; svrmgrl alter database datafile filename online; 4) svrmgrl select

33、 v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#; 5) svrmgrl select file#,change# from v$recover_file;见第一种情况“数据库已经完全关闭”中第2)4)步。 6) svrmgrl recover datafile filename; 7) svrmgrl alter database open;l 数据库处于打开状态 1) 删除回滚段和表空间 2) 重建表空间和回滚段5、控制文件恢复l 所有的控制文件均被破

34、坏,且备份完好 将备份的控制文件拷贝至原目录下 对于raw device,则:dd if=con.bak of=/dev/rdrd/drd1 seek=128(根据操作系统不同,有所不同)l 所有控制文件均被破坏,且无备份 重建控制文件l 并非所有的控制文件均被破坏 关闭数据库,复制控制文件,重新启动数据库1.6 数据库优化调整数据库的性能必须有一个明确的目标,总的来说可以是以下的几个目标之一或多个:l 改善指定类型的SQL语句的性能l 改善专门的数据库应用的性能l 改善所有同时应用数据库的用户及其应用的所有性能在调整ORACLE性能之前,首先要有一个性能良好的应用设计及高效的SQL语句,在此

35、基础上调整ORACLE性能的过程有三步:l 调整内存分配l 调整I/Ol 调整资源争用1、 ORACLE数据库系统的数据存储的物理结构和逻辑结构构成2、 模式对象的组成3、 ORACLE数据库系统的进程以及内存结构构成4、 ORACLE锁的概念介绍5、 二阶段提交的概念6、 用户、角色、权限的概念的介绍7、 ORACLE处理一个事务步骤:l 首先必须有一台主机或数据库服务器运行一个ORACLE INSTANCE。l 一台本地机器或客户端工作站运行一个应用,它试图通过适当的SQLNET驱动同服务器取得联系l 如果该服务器也正在运行适当的SQLNET驱动,服务器检测到应用的连接请求,开始为此用户进

36、程创建一个专用的服务器进程。l 客户端的用户执行一个SQL语句并提交此进程。l 服务器进程收到此SQL语句,并开始检验在ORACLE的共享池中是否存在同样的SQL语句。如果在共享池中发现该SQL语句,服务器进程开始检验该用户是否对请求的数据有操作的权限,然后使用在共享池中的SQL语句去执行该语句。如果该SQL语句在共享池中不存在,就为此语句分配一个新的共享池区以便它能够被解析、执行。l 服务器进程从实际的数据文件或共享池中取回必需的数据。l 服务器进程在在共享池中修改数据。在上述所作的生效之后,DBWR后台进程把修改后的数据块永久的写入硬盘。在此事务提交成功之后,LGWR进程立即把此事务记录到

37、在线的redo log file。l 如果此事务成功,服务器进程通过网络返回一个成功的信息给应用程序。如果该事务不成功,将返回一个适当的信息。l 在上述的事务过程中,其余的后台进程同样在运行,等待着条件符合而被触发。此外,数据库服务器还管理着其他用户的事务,并且在不同事务之间提供数据一致性,防止不同事务对相同数据操作在数据库安装时作的优化工作主要是关于DB_BLOCK_SIZE参数的设置,该参数决定了ORACLE每次操作多少的数据。该参数在安装时一经确认就不能修改,除非重新安装数据库。对于一个中型的应用系统,它的DB_BLOCK_SIZE大小设为4K,而对于一个较大型的应用而言,它的DB_BL

38、OCK_SIZE一般设为8K或更大一点为16K。对于一个较大的DB_BLOCK_SIZE,可以加快系统的运行速度,(因为从系统的I/O吞吐能力来说,一次性读取较多的数据可以比一次性读取较少的数据的过程减少I/O的读取次数)而且可以有较大的系统扩展能力。DB_BLOCK_SIZE和MAX EXTENTS的对应关系如下:DB_BLOCK_SIZEMAX EXTENTS512BYTES251K572K1214K2498K505在安装之后,在数据库初始化时必须对INITXXX.ORA文件作优化。l 对于SHARE_POOL_SIZE的设置:对于不同的系统根据用户对于内存区的要求,考虑用户是否需要多少的

39、内存空间存放用户的存储过程或要多少空间存放用户要编译的程序。l 对于需要进行大量数据操作的用户可考虑增大用户的DB_BLOCK_BUFFERS的数目,该参数可以使用户在缓冲区中的数据较大,使用户查找的数据尽可能的在缓冲区中,不要到表中去再次查找。l 根据用户的实际需要,设置较好的PROCESS该参数决定能够有多少个用户在系统中运行,如果该参数设置不当会导致用户无法正常运行。并且该参数与操作系统的参数有关,该类型的参数限制了每个用户允许最大多少用户登录的限制。l 根据用户实际使用系统的SQL语句的多少,决定最终要开的OPEN_CURSORS数目的多少,因为一个SQL的DML语句就是一个隐含的CU

40、RSOR,如果上述参数的数目开的不够大的话,系统会提示用户的SGA区不足,导致系统出错。l 对于要进行大量数据分组和排序工作的应用要加大系统的SORT_AREA_SIZE的大小,该参数决定分配给每一位用户的排序空间,该参数用到系统的内存空间。l 为保证系统能够正常运转,要保证系统有足够的DML_LOCKS,如果该值不够的话,会导致系统发生中断,半途终止系统。l 为保证系统能够有足够的数据库链路可用,要保证OPEN_LINKS的数目足够大。l 设置shadow_core_dump=none避免生成core文件填充系统空间使数据库系统崩溃。表空间设计的原则为:l 把由用户创建的其余表空间同SYST

41、EM表空间进行分离l 最重要的原则是把系统的数据表空间同索引表空间分离l 把操作频繁和不经常操作的表划分在不同的表空间中l 把用户数据与数据字典数据分开l 分离用户数据和回滚段的数据以防止某个磁盘出现故障丢失数据。l 为特殊类型的数据库使用保留某个表空间l 在数据库的表空间设计时,建议每一个表空间对应的数据物理文件的大小应该小于1G大小。(因为某些系统的操作系统不支持大于2G大小的文件。同时,从数据库的备份角度考虑,对小文件的备份不仅可以提高备份的速度,也可以提高备份的安全性)1、 在这里先讨论以下系统的物理存储结构,在ORACLE系统中,数据的存储是以BLOCK为基本单位,一个BLOCK的打

42、下为系统在安装时确认下的DB_BLOCK_SIZES的大小。多个BLOCK构成一个EXTENT,多个EXTENT构成一个SEGMENT。现介绍一下关于一个BLOCK的结构:公用的变长标题(common and variable header) A表目录(table directory) B行目录(row directory) C未用空间(free space) D行数据(row data) E现对上述结构中用到的每一个段进行说明:1) A部分包含一般的块信息,如块地址、段的类型(数据段、索引段或回滚段等)。2) B部分包含所存放的表的信息。 3) C部分包含块中的行信息(如行数据区中的每一行的

43、行地址)。4) D部分包含可用于插入新行及修改5) E部分包含在表或索引数据。需要的附加空间的行或额外的事务头。2、 建表对于建表而言,虽然同一张表有相同的表结构,但是由于有不同的存储策略,最终会导致不同的性能结果。CREATE TABLE schema.table ( column datatype DEFAULT expr column_constraint . | table_constraint , column datatype DEFAULT expr column_constraint . | table_constraint .) PCTFREE integer PCTUSED

44、 integer INITRANS integer MAXTRANS integer TABLESPACE tablespace STORAGE storage_clause PARALLEL ( DEGREE integer | DEFAULT INSTANCES integer | DEFAULT ) | NOPARALLEL CACHE | NOCACHE | CLUSTER cluster (column , column.) ENABLE enable_clause | DISABLE disable_clause . AS subquery l PCTFREE和PCTUSED两个参

45、数的使用:PCTFREE参数为块中保留的未用空间的百分数,用于修改已存在块中的行。该块保留出的空间用于数据的修改使用。PCTUSED当一数据块为填满后(由PCTFREE决定),该块不能考虑插入新行,但是当它使用低于PCTUSED参数时,又可插入。在达到PCTUSED值之前,该未用空间仅用于修改行。上述两个参数的值的总和不能超过100。l INITRANS参数的使用该参数决定了同时能够允许多少个用户对表或索引进行处理,也就是指定表的每一数据块中分配的事务项的初值。由于ORACLE在对表或索引进行操作之前,对每一数据块的修改,都要在块中申请一个事务项,该事务项的值的大小依赖于OS。该参数保证可同时

46、并发修改块的最小事务数,它避免动态事务项的开销。l STORAGE参数的使用:INITIAL:该参数决定了ORACLE系统初始分配给该表的空间的大小,对于该参数的值应该尽可能的能够容纳该表的所有数据。以尽量避免该表进行无谓的扩展。ORACLE公司建议把对表的扩展控制在5个以下。因为太多的扩展将造成I/O开销的增加。NEXT:该参数决定了一张表在INITIAL空间用完之后,系统分配给该表多大的空间。PCTINCREASE:该参数影响到系统的存储空间的使用问题,经常由于该参数设置不当的缘故,导致存储空间的无谓的浪费。例如,如果一张表的PCTINCREASE为50的话,那么在上一个NEXT用完之后,

47、它将按照一定的几何比例进行扩展。具体公式如下:next*(1+pctincrease),该表扩展几次,就乘以(1+PCTINCREASE)几次。如果没有特殊的要求,建议把该参数值设置为0。l 对表的空间大小的确定对于表大小空间的确定可以进行估算和精确计算,现以2K字节大小的数据块进行一张表大小的估算,估算公式如下:greatest(4,ceil(ROW_COUNT/(round(1958-(initrans*23)*(100-PCT_FREE)/100)/ADJ_ROW_SIZE)*2其中:1) 一个块的实际可用字节数为1958BYTE。2) 每个INITRANS使用23BYTE3) PCT_

48、FREE为建表时要指定的值4) 表中每行估计的已调试的行大小(ADJ_ROW_SIZE)5) 表的估计行数(ROW_COUNT)对于公式中用到的函数greatest,ceil,round,其中greatest函数取多个值中的最大值,ceil取加1的整数,round具有四舍五入的功能。对于已有数据的旧的数据库结构中,对于表的空间大小的计算公式如下:select avg(nvl(vsize(col1),0) +avg(nvl(vsize(col2),0) + avg(nvl(vsize(coln),n) from table_name通过对现有表结构以及数据量的分析,可以准确的确定现有的数据结构。以分析出来的数据量为依据,可以准确的确定表的存储参数。通过制定行之有效的表的存储策略,可以提高应用的效率以及利用存储空间的效率。3、 建索引索引本身也是一个数据库对象。对于在表的索引列上的每一值将包含一项(ENTRY),为行提供直接的快速存取。索引的存储参数的取值和使用同表的存储参数的使用一致。l 使用索引的优缺点在下列情况下ORACLE可利用索引改进性能:按指定的索引列的值查找行,按索引列的顺序存取表。然而,索引虽然可以加快查询的速度,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论