摘要:本文解释了 Microsoft® SQL Server™ 2000 数据库和 Oracle 数据库的结构区别。本文是给那些准备数据库以迁移到 SQL Server 2000 的 Oracle 专业人员使用的。
数据库定义 在 Oracle,数据库是指整个 Oracle RDBMS 环境,它包括以下组件:
Oracle 数据库进程和缓冲(实例)。
SYSTEM 表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。
其它由数据库管理员 (DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。
两个以上的联机恢复日志。
归档恢复日志(可选)。
其它文件(控制文件、Init.ora、Config.ora 等)。
Microsoft® SQL Server™ 2000 数据库提供了数据、应用程序和安全机制的逻辑分隔。一个 SQL Server 安装(实例)可以支持多个数据库。用 SQL Server 构建的应用程序可以用数据库来逻辑分隔业务功能。一台计算机上可以有多个 SQL Server 实例。每个 SQL Server 实例可以有多个数据库。
每个 SQL Server 数据库可以支持文件组,它提供了物理分布数据位置的能力。一个 SQL Server 文件组可以对含有单个 SQL Server 数据库数据的操作系统文件进行分类,以简化数据库管理任务,比如备份。文件组是 SQL Server 数据库的一个属性,不能包含多于一个数据库的操作系统文件,但一个数据库可以包含一个以上的文件组。创建数据库后,可以将文件组添加到数据库。
如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
Microsoft SQL Server 还会默认安装以下数据库:
model 数据库是所有新建用户数据库的模板。 tempdb 数据库类似于 Oracle 临时表空间,用于临时工作存储和排序操作。与 Oracle 临时表空间不同,用户可以创建临时的表,当用户登出时,这个表会被自动删除。
msdb 数据库支持 SQL Server 代理及其安排的作业、警报和复制信息。
提供的 pubs 和 Northwind 数据库是培训示例数据库。
有关默认数据库的详细信息,请参见 SQL Server 联机图书。
数据库系统类目 每个 Oracle 数据库都在一个中央系统类目和数据字典上运行,它位于 SYSTEM 表空间。每个 Microsoft SQL Server 2000 数据库都维护自己的系统类目,它含有以下信息:
数据对象(数据表、索引、存储过程、视图、触发器等)。
约束。
用户和权限。
用户定义的数据类型。
复制定义。
数据库使用的文件。
SQL Server 的 master 数据库中还包含中央系统类目,它含有系统类目和一些单个数据库的信息,比如:
每个数据库的数据库名称和主文件位置。
SQL Server 登录帐户。
系统消息。
数据库配置值。
远程和/或链接的服务器。
当前活动信息。
系统存储过程。
同 Oracle 的 SYSTEM 表空间类似,SQL Server 必须有 master 数据库才能访问其它数据库。因此,每次对数据库进行重大修改后都应备份 master 数据库,这对防止发生故障很重要。数据库管理员也可镜像构成 master 数据库的所有文件。
有关 master 数据库中和所有其它数据库的系统数据表的详细列表,请参见 SQL Server 联机图书的“系统数据表”。
物理和逻辑存储结构 Oracle RDBMS 由表空间组成,它又组成了数据文件。表空间数据文件被格式化成称作区块的内部单元。区块大小由 DBA 在首次创建 Oracle 数据库时设定。在 Oracle 表空间中创建对象时,用户可以用称作扩展盘区的单位指定其空间(初始扩展盘区、下一扩展盘区、最小扩展盘区和最大扩展盘区)。如果没有明确指定扩展盘区大小,则创建默认扩展盘区。Oracle 扩展盘区的大小各不相同,而且必须含有至少 5 个相邻的区块链。
Microsoft SQL Server 2000 在数据库级别使用文件组来控制表和索引的物理位置。文件组是一个或多个文件的逻辑容器,文件组中的数据按比例填充到属于该文件组的所有文件中。
如果未定义且未使用文件组,数据库对象则放到创建数据库时隐式创建的一个默认文件组中。文件组允许您:
将大数据表分布到多个文件,从而提高 I/O 吞吐量。
存放与相应的表不同的文件索引,这也能提高 I/O 吞吐量和磁盘并发性能。
将 text、ntext 和 image 卷(大对象)存储到独立于数据表的单独文件。
将数据库对象置于特定的磁盘卷轴。
备份并恢复单个数据表和文件组中的一组表。
SQL Server 将文件格式化成称作页的内部单位。页的大小是固定的 8,192 字节(8 KB)。页被组织成扩展盘区,扩展盘区的固定大小是 8 个相邻的页。在 SQL Server 数据库中创建表或索引时,它会在一个扩展盘区内被自动分配一个页。当表或索引变大时,SQL Server 会自动为它分配属于它的扩展盘区。与 Oracle 分配整个扩展盘区的方法相比,这种做法可以更有效地存储较小的表和索引。
详细信息请参见 SQL Server 联机图书的“物理数据库结构”。
数据条带化 安装的大多数 Microsoft SQL Server 不需要 Oracle 类型的数据段。SQL Server 的方法是,它能用基于硬件的 RAID 或基于软件的 RAID(可从 Windows NT 磁盘管理实用程序或第三方获得)更有效地分布数据(或叫做数据条带化)。利用 RAID,您可以建立含有多个磁盘驱动器(但显示为一个逻辑磁盘)的数据条带集。如果在这个条带集上创建数据库文件,磁盘子系统会承担跨多个磁盘分配 I/O 负载的任务。建议管理员用 RAID 将数据分布到多个物理磁盘。
建议 SQL Server 采用的 RAID 配置是 RAID 1(镜像)或 RAID 5(有额外奇偶校验启动器的条带集做备份)。同样也推荐使用 RAID 10(带奇偶校验的条带集镜像),但它的价格比上面两个选择高。条带集可以很好地分布对数据库文件的随机 I/O 操作。
如果不能选择 RAID,那么文件组是一个很有吸引力的替代方法,它提供与 RAID 相同的一些优点。此外,对于那些非常大的数据库(跨多个物理 RAID 阵列),文件组是一个用可控方式将 I/O 分布到多个 RAID 阵列的好方法。
连续 I/O 必须优化事务日志文件,而且该文件必须有单点故障保护。因此,建议事务日志使用 RAID 1(镜像)。迁移时,这个驱动器的大小至少应该与 Oracle 联机恢复日志和 Oracle 回滚数据段表空间的大小总和相等。请创建一个或多个占据逻辑盘上定义的全部空间的日志文件。与文件组中存储的数据不同,事务日志项总是按先后顺序写入,并不按比例填充。
有关 RAID 的详细信息,请参见 SQL Server 联机图书、Windows NT Server 文档资料和 Microsoft Windows NT Resource Kit。
事务日志和自动恢复 Oracle RDBMS 在每次启动时执行自动恢复。它检查表空间文件的内容与联机恢复日志文件的内容是否一致。如果不一致,Oracle 会将联机恢复文件的内容应用于表空间文件(前滚),然后删除回滚数据段中发现的所有未授权的事务(回滚)。如果 Oracle 无法从联机恢复日志文件获得所需的信息,它会到归档恢复日志文件中查找。
Microsoft SQL Server 2000 也能执行自动数据恢复,它在每次启动时检查系统中的每个数据库。它首先检查 master 数据库,并启动恢复系统中所有其它数据库的线程。自动恢复机制对每个 SQL Server 数据库检查事务日志。如果事务日志中有任何未授权的事务,则复原事务。然后恢复机制检查事务日志中那些尚未写入数据库的授权事务。如果找到这样的事务,它就重新执行事务(前滚)。
每个 SQL Server 事务日志都具有 Oracle 回滚数据段和 Oracle 联机恢复日志的组合功能。每个数据库都有自己的事务日志,它记录了数据库的所有更改,并且由该数据库的所有用户共享。当某项事务开始,数据被修改的时候,日志中记录下一个 BEGIN TRANSACTION 事件(和修改事件)。在自动恢复期间要使用这个事件来判断事务的起始点。接收到每个数据修改声明时,更改情况先写入事务日志,然后再写入数据库本身。SQL Server 有一个自动检查点机制,可以确保已完成的事务定期从 SQL Server 磁盘高速缓存写入事务日志文件。检查点将自上一个检查点以来已被修改的缓存页写入数据库。用检查点将这些缓存页(也叫脏页)写入数据库可确保所有已完成的事务都被写入磁盘。这个过程缩短了恢复系统故障(比如断电)的时间。这个设置是可以更改的,请使用 SQL Server 企业管理器或 Transact-SQL sp_configure 系统存储过程来修改恢复间隔设置。
备份和恢复数据 Microsoft SQL Server 2000 提供了几个数据备份选项:
数据库全部备份 数据库备份将制作整个数据库的拷贝。并不是所有页都被复制到备份集,而只是复制那些实际含有数据的页。数据页和事务日志页都被复制到备份集。
数据库备份集用于重新创建 BACKUP 语句完成时的数据库。如果只存在数据库的数据库备份,它只能恢复到服务器或数据库故障发生之前的上一次数据库备份时的数据库原貌。要进行数据库全部备份,请使用 BACKUP DATABASE 语句或备份向导。
差异备份
完成数据库全部备份后,请定期用 BACKUP DATABASE WITH DIFFERENTIAL 或备份向导只备份那些已经更改的数据和索引页。
事务日志备份 Microsoft SQL Server 中的事务日志是与单个数据库关联的。事务日志文件会一直
查看本文来源