很多小伙伴们学习数据库,可能很少有时间去整理资料,今天小编整理一下资料给小伙伴们分享,希望对小伙伴有帮助,以下是整理的资料内容,小编给大家介绍一下:
一、Oracle 基础知识
1.1 Oracle OLAP 与 OLTP 介绍
数据处理大致可以分成两大类:联机事务处理 OLTP(on-line transaction
processing)、联机分析处理 OLAP(On-Line Analytical Processing)。
(1)OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处
理,例如银行交易。OLTP 系统强调数据库内存效率,强调内存各种指标的命令
率,强调绑定变量,强调并发操作;
(2)OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,
并且提供直观易懂的查询结果。OLAP 系统则强调数据分析,强调 SQL 执行市
场,强调磁盘 I/O,强调分区等。
OLTP 与 OLAP 之间的比较:
1.1.2 什么是 OLAP
OLAP,也叫联机分析处理(Online Analytical Processing)系统,有的时候也
叫 DSS 决策支持系统,就是我们说的数据仓库。在这样的系统中,语句的执行
量不是考核标准,因为一条语句的执行时间可能会非常长,读取的数据也非常多。
所以,在这样的系统中,考核的标准往往是磁盘子系统的吞吐量(带宽),如能
达到多少 MB/s 的流量。
磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候,Cache 基本是没
有效果的,数据库的读写类型基本上是 db file scattered read 与 direct path
read/write。应尽量采用个数比较多的磁盘以及比较大的带宽,如 4Gb 的光纤接
口。
1.2 索引详解
1.2.1 索引介绍
1.2.1.1 索引的创建语法
CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>
ON <schema>.<table_name>
(<column_name> | <expression> ASC | DESC,
<column_name> | <expression> ASC | DESC,...)
TABLESPACE <tablespace_name>
STORAGE <storage_settings>
LOGGING | NOLOGGING
COMPUTE STATISTICS
NOCOMPRESS | COMPRESS<nn>
NOSORT | REVERSE
PARTITION | GLOBAL PARTITION<partition_setting>
相关说明
1)UNIQUE | BITMAP:指定 UNIQUE 为唯一值索引,BITMAP 为位图索引,省略为 B-Tree
索引。
2)<column_name> | <expression> ASC | DESC:可以对多列进行联合索引,当为
expression 时即―基于函数的索引‖
3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)
4)STORAGE:可进一步设置表空间的存储参数
5)LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用 NOLOGGING
来减少占用空间并提高效率)
6)COMPUTE STATISTICS:创建新索引时收集统计信息
7)NOCOMPRESS | COMPRESS<nn>:是否使用―键压缩‖(使用键压缩可以删除一个键列
中出现的重复值)
8)NOSORT | REVERSE:NOSORT 表示与表中相同的顺序创建索引,REVERSE 表示相
反顺序存储索引值
9)PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区
1.2.1.2 索引特点
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
1.2.1.3 索引不足
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空
间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了
数据的维护速度。
1.2.1.4 应该建索引列的特点
1)在经常需要搜索的列上,可以加快搜索的速度;
2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连
续的;
5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,
加快排序查询时间;
6)在经常使用在 WHERE 子句中的列上面创建索引,加快条件的判断速度。
1.3 分区表总结
1.3.1. 分区表理论知识
Oracle 提供了分区技术以支持 VLDB(Very Large DataBase)。分区表通过对分
区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。
Oracle 的分区表可以包括多个分区, 每 个 分 区 都 是 一 个 独 立 的 段
(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各
个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。
When to Partition a Table 什么时候需要分区表,官网的 2 个建议如下:
(1)Tables greater than 2GB should always be considered for partitioning.
(2)Tables containing historical data, in which new data is added into the newest
partition. A typical example is a historical table where only the current month's data is
updatable and the other 11 months are read only.
在 oracle 10g 中最多支持:1024k-1 个分区:
Tables can be partitioned into up to 1024K-1 separate partitions
联机文档上有关分区表和索引的说明:
Partitioned Tables and Indexes
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/partconc.htm
#sthref2604
分区提供以下优点:
(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;
(2)可以对单独的分区进行备份和恢复;
(3)可以将分区映射到不同的物理磁盘上,来分散 IO;
(4)提高可管理性、可用性和性能。
Oracle 10g 提供了以下几种分区类型:
(1)范围分区(range);
(2)哈希分区(hash);
(3)列表分区(list);
(4)范围-哈希复合分区(range-hash);
(5)范围-列表复合分区(range-list)。
Range 分区:
Range 分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分
区的划分条件,将记录存放到列值所在的 range 分区中。
如按照时间划分,2010 年 1 月的数据放到 a 分区,2 月的数据放到 b 分区,
在创建的时候,需要指定基于的列,以及分区的范围值。
在按时间分区时,如果某些记录暂无法预测范围,可以创建 maxvalue 分区,
所有不在指定范围内的记录都会被存储到 maxvalue 所在分区中。
如:
create table pdba (id number, time date) partition by range (time)
(
partition p1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),
partition p2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),
partition p3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),
partition p4 values less than (maxvalue)
)
这一部分还有很多知识:
二、Oracle 备份恢复
2.1 exp/imp
Oracle 的导出导入是一个很常用的迁移工具。 在 Oracle 10g 中,Oracle 推
出了数据泵(expdp/impdp). 它可以通过使用并行,从而在效率上要比 exp/imp 要
高。
在 Oracle 10g 和 11g 的官方文档里没有搜到有关 exp/imp 的说明, 在 9i 里
找到了相关的使用说明。 连接如下:
Export
http://download.oracle.com/docs/cd/B10501_01/server.920/a96652/ch01.htm
Import
http://download.oracle.com/docs/cd/B10501_01/server.920/a96652/ch02.htm#SUTIL
002
执行备份和恢复的时候,不要在客户端的 shell 窗口执行, 要将备份的的进
程添加到服务器的后台执行。
参考:
Linux 前台 和 后台进程 说明
http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6165753.aspx
三. RMAN
RMAN Catalog 和 Nocatalog 的区别
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/02/5641763.aspx
RMAN 系列(一)---- RMAN 体系结构概述
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/09/5659701.aspx
RMAN 系列(二) ---- RMAN 设置和配置
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/16/5674309.aspx
RMAN 系列(三) ---- 介质管理问题
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/18/5678698.aspx
Windows 下 RMAN 备份脚本
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/01/12/5181414.aspx
Oracle Rman 命令详解(List report backup configure)
Blog: http://blog.csdn.net/tianlesoftware/archive/2009/12/10/4976998.aspx
RMAN 备份与恢复 实例
Blog: 'http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4699320.aspx
RMAN 系列(四) ---- RMAN 备份
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/23/5687938.aspx
RMAN 系列(五) ---- RMAN 还原 与 恢复
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/06/28/5700474.aspx
RMAN 系列(六) ---- RMAN 高级恢复
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/09/5722174.aspx
RMAN 系列(七) ---- RMAN 维护
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/12/5728097.aspx
RMAN 系列(八) ---- RMAN List 和 report 命令
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/12/5728116.aspx
RMAN 系列(九) ---- 调整 RMAN 备份与恢复操作的性能
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/13/5732665.aspx
Linux 平台下 RMAN 全备 和 增量备份 shell 脚本
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740630.aspx
如何 搭建 RMAN 备份平台
Blog: http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740896.aspx