Oracle数据库存储管理策略研究
摘要:如果数据库存储管理策略不当,信息系统的查询或更新速度就会非常缓慢,甚至部分功能不能正常运转,也有可能导致整个计算机系统瘫痪。对数据库的存储管理策略进行了研究。适当增加并合理使用表空间;增加必要的索引项,删除从未使用的索引;选用合适的数据库备份方式等手段不仅可以提升数据库的性能,提高存储数据的可靠性,还对保障计算机系统的正常运转具有十分重要的作用。
关键词:数据库;表空间;索引;物理备份;逻辑备份;数据泵
1适当增加并合理使用表空间
一个Oracle数据库可以分割为小的逻辑单元,称之为表空间。Oracle数据库由一个或多个表空间组成。Oracle数据库中的数据存储在表空间中。一个表空间可能包含一个或多个段,每个段由一个或多个盘区组成。表空间的一个重要作用是分布数据于不同的设备之间以改善性能。
Oracle数据库表空间分为系统表空间和非System表空间。系统表空间有System表空间和SYSAUX表空间,随数据库创建,所有数据库均需要,不包括用户数据,不能删除、不能重命名、不能置为read only。非System 表空间分为永久表空间(Permanent Tablespace)和还原(撤消)表空间(UNDO TableSpace)。
某Oracle数据库系统有31个表空间,运行速度快,另一Oracle
数据库系统只有9个表空间,而且基本上是使用系统生成的表空间,数据都放置在USERS表空间,容易造成磁盘竞争,影响系统并发,运行缓慢。表和表的索引应该存储在不同的表空间,一个表空间中的不同数据文件还应该存放于不同的盘区以改善性能。手工指定表空间,可以防止某个表空间的表太多,减少磁盘竞争,提高I/O性能。统计表空间总数语句如下:
select count(*)from sys.dba_tablespaces;
表空间创建语法如下:
(1)创建永久表空间:
CREATE TABLESPACE data01 DATAFILE 'c:DATA01.dbf' SIZE 50M;
CREATE TABLESPACE data01 DATAFILE 'c:DATA01.dbf' SIZE 50M AUTOEXTEND ON NEXT 100m MAXSIZE 10G;
(2)创建UNDO表空间:
CREATE UNDO TABLESPACE MYUNTA DATAFILE 'D:a' SIZE 5M ;
(3)创建临时表空间:
CREATE TEMPORARY TABLESPACE tempTA TEMPFILE 'c:TEMP_DATA.dbf' SIZE 50M ;
(4)创建大文件表空间:
CREATE BIGFILE TABLESPACE bftbs DATAFILE 'c:big.dbf' SIZE 5M;
CREATE BIGFILE TEMPORARY TABLESPACE bftbs TEMPFILE 'c:big.dbf' SIZE 5M;--创建大文件临时表空间。
2增加必要的索引项,删除从未使用的索引
索引是一个对象,通过快速路径访问方法定位数据可以减少磁盘I/O,加速检索。索引和它所引用的表相对独立,被Oracle服务器自动使用和维护。
适合建立索引的列:经常被查询的列,在ORDER BY子句中使用的列,外键或主键的列,该列的值唯一。
索引创建策略:导入数据后再创建索引,经常查询的记录数目少于表中所有记录总数的5%时就应当创建
索引,经常进行连接查询表时,在连接列上建立索引能够显著提高查询的速度。不需要为很小的表创建索引,不能在LONG、LONG RAW、LOB数据类型的列上创建索引。存储索引的表空间最好单独设定。
创建索引语法:
CREATE[UNIQUE|BITMAP]INDEX 索引名ON 表名(列名[ASC | DESC] [,...])[ONLINE] [NOSORT]
oracle数据库自动备份方法CREATE UNIQUE INDEX EMP_JOBSAL ON EMP(JOB ASC ,SAL DESC);
CREATE INDEX EMP_ENAME ON EMP(ENAME)REVERSE;
CREATE INDEX dept_id5 ON dept(substr(dname,1,5));
DBA_INDEXES:提供索引的信息
DBA_IND_COLUMNS:提供索引列的信息
改进系统中的索引可以提高性能。如果查询是瓶颈,在作为查询条件的属性上建立索引,能提高查询效率。如果更新是瓶颈,每次更新都会重建表上的索引,增加系统开销,降低数据增删改效率,还会占用空间,所以删除从未使用的索引能提高数据更新效率。
使用函数索引:select * from dept where substr(dname,1,5)='abcde';
下面是某信息系统删除从未使用的索引举例:
SELECT * FROM ALL_INDEXES WHERE TABLE_NAME='FIN_OPR_BOOKING' --查询表FIN_OPR_BOOKING的索引,结果节选如表1。——为每个索引增加监控,语句如下:
ALTER INDEX PK_BOOKING MONITORING USAGE;
ALTER INDEX IND_BOOK1 MONITORING USAGE;
ALTER INDEX IND_BOOK2 MONITORING USAGE;
——查询受监控的索引,语句及结果如下:
select index_name ,table_name,monitoring ,used from v$object_usage WHERE monitoring='YES' ORDER BY USED 抽取一个表,查出建了3个索引,经过较长时期的监控,其中一个索引从未使用。对使用过的索引取消监控,语句如下:ALTER INDEX PK_BOOKING NOMONITORING USAGE;
ALTER INDEX IND_BOOK1 NOMONITORING USAGE;
通过如下语句查询到某数据库的表和索引数目分别为2 734和3
430个,把索引都加上监控,出从未使用的索引并删除,可以大大节省系统开销,减少系统响应时间。
select count(*)from all_tables;
select count(*)from DBA_INDEXES;
删除索引语法:
DROP INDEX index_name
合并索引可以收回多余空间,语法如下:
ALTER INDEX index_name COALESCE;
ALTER INDEX index_name COALESCE DEALLOCATE UNUSED;
3选用合适的数据库备份方式
数据库备份的类型分为物理备份和逻辑备份。物理备份是将实际组成数据库的操作系统文件(数据文件、控制文件、日志文件等)从一处拷贝到另一处的备份过程。物理备份又分为冷备份和热备份。冷备份需要在关闭数据库的状态下进行数据库完全备份。热备份是指在数据库处于运行状态下进行的数据库备份。
导出(exp)是数据库的逻辑备份,导入(imp)是数据库的逻辑恢复。某数据库采用如下脚本实现备份与恢复:
当数据库发生介质损坏而无法启动时,不能利用逻辑备份恢复数据库。因此,数据库备份应以物理备份为主,逻辑备份为辅。
RMAN (Recovery Manager,恢复管理器)是一种用于备份(backup)和恢复(recover)数据库的Oracle 工具,它能够备份整
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论