转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
把Oracle数据库移植到Microsoft SQL Server 7.0         ★★★★

把Oracle数据库移植到Microsoft SQL Server 7.0

作者:闵涛 文章来源:闵涛的学习笔记 点击数:8702 更新时间:2009/4/22 22:06:51
一次数据修改,则一个BEGIN TRANSACTION事件(同modification事件一样)被记录在日志中。在自动恢复的过程中使用该事件来确定事务的起始点。每收到一个数据修改事件,改变都被记入事务日志中,优先写入其数据库中。欲了解更多信息,请参看本章后面的"事务、锁定和并行"部分。

SQL Server有一个自动检查点机制,该机制确保完成了的事务规则的从SQL Server磁盘缓存中写入事务日志文件。从数据库的上一个检查点算起,任何修改过的缓存页将被写入一个检查点。向数据库上的这些缓存页(dirty pages,污损页)写入检查点,确保了所有已完成的事务被写到磁盘上。该过程缩短了发生失败(例如能量损耗,power outage)时修复系统的所花的时间。该设置可以用SQL Server Enterprise Manager修改,还可以用Transact-SQL修改(sp_configure系统存储程序)。

备份和恢复数据
Microsoft SQL Server提供了几种备份数据的选择:
完全的数据库备份
要进行完全的数据库备份,使用BACKUP DATABASE语句或者"备份向导"(Backup Wizard)。
微分备份(Differential backup)
在经过完全的数据库备份以后,定期使用BACKUP DATABASE WITH DIFFERENTIAL语句或者"备份向导"来备份改变过的数据和索引页。

事务日志备份
Microsoft SQL Server中的事务日志有一个独立的数据库。该数据库仅在备份或者被删除以后才填充。SQL Server 7.0中的缺省设置是事务日志自动增长,直到它用完了所有的可用空间或者达到其设置的最大空间。当事务日志过满时,它会生成一个错误并且阻止任何的数据修改,直到该日志被备份或者被删除。其他的数据库不会受到影响。可以用BACKUP LOG语句或者"备份向导"进行事务日志备份。

文件或者文件组备份
SQL Server可以备份文件或者文件组。欲知详情,请参看SQL Server联机图书。
备份可以在数据库正在使用的时候进行,这样就可以使那些必须不断运行的系统进行备份。SQL Server 7.0的备份过程和数据结构已经大大的改进,可以使备份在对事务吞吐量影响最小的情况下达到最大的数据传输率。

Oracle和SQL Server都需要一个特殊的日志文件格式。在SQL Server中,这些叫做备份设备的文件是用SQL Server Enterprise Manager、Transact-SQL的sp_addumpdevice存储程序或者等价的SQL-DMO命令创建的。

虽然备份可以通过手工操作进行,但是建议你使用SQL Server Enterprise Manager和/或者"数据库维护计划向导"进行定期的备份,或者基于数据库活动进行备份。
应用事务日志备份和/或者微分备份,一个数据库可以按时储存在一个完全备份数据库(设备)的特定的点上。数据库使用备份中包含的信息恢复数据。可以用SQL Server Enterprise Manager、Transact-SQL (RESTORE DATABASE)或者SQL-DMO进行恢复。

就像你可以关掉Oracle存档器以跳过备份一样,在Microsoft SQL Server中,db_owner组中的成员可以强制事务日志在检查点发生的时候抹去目录。可以用SQL Server Enterprise Manager(删除检查点上的日志),Transact-SQL(sp_dboption存储过程)或者SQL-DMO来完成。
网络

Oracle SQL*Net支持Oracle数据库和其客户端的网络连接。它们通过透明网络层数据流协议进行通信,并且允许用户运行许多不同的网络协议,而不需要编写任何特殊的代码。SQL*Net未包含在核心Oracle数据库软件产品中。

在Microsoft SQL Server中,Net库(网络库)支持客户端和服务器的连接,它们通过列表数据流协议进行通信。这使得可以同时和运行名字管道(Named Pipes)、TCP/IP套接字或者其他交互处理机制(Inter-Process Communication、IPC)的客户端连接。SQL Server CD-ROM包含了所有的客户端Net库,不需要另外购买这些产品了。

SQL Server Net库选项可以在安装后修改。客户端网络工具为运行Windows NT、Windows 95、 或者Windows 98的客户端配置缺省的Net库和服务器连接信息。除非在ODBC数据源的安装过程中改变或者在ODBC连接字串中显式的标明,所有的ODBC客户端也使用同样的Net库和服务器连接信息。欲了解关于Net库的更多信息,请参看SQL Server联机手册。
数据库安全性和角色(Database Security and Roles)
为了把你的Oracle应用程序完整的移植到Microsoft SQL Server 7.0上,你需要明白SQL Server是如何实现数据库的安全性和角色的。

登录账号
登录账号允许一个用户访问SQL Server数据或者管理选项。登录账号允许用户仅仅是登录到SQL Server上并且显示那些可以让访客(guest)访问的数据库。(guest账号不是缺省设置的,必须创建)

SQL Server提供了两种类型的登录安全性。Windows NT验证模式(也称为集成的)和SQL Server验证模式(也称为标准的)。SQL Server 7.0还支持标准的和集成的安全性的联合使用,称为混合的。

Windows NT验证模式在检验登录连接时使用Windows NT内建的安全机制,并且依赖用户的Windows NT安全信任。用户不需要为SQL Server输入登录ID和口令--其登录信息直接从网络连接上截取。当发生连接时,一个条目就被写入syslogins表,并且在Windows NT和SQL Server之间加以验证。这种方式叫做可信连接,其工作原理同两台Windows NT服务器之间的可信关系是一样的。此功能同Oracle中用于用户账号的IDENTIFIED EXTERNALLY选项是类似的。

SQL Server验证模式在用户请求访问SQL Server时要求用户输入登录ID和口令。这种方式又叫做不信任连接。此功能同Oracle中用于用户账号的IDENTIFIED BY PASSWORD选项是类似的。使用标准安全模式,登录仅仅提供用户访问SQL Server数据库引擎的能力,不允许用户访问用户数据库。

欲了解关于安全机制的更多信息,请参看SQL Server联机手册。
组、角色和许可(Groups, roles, and permissions)

Microsoft SQL Server和Oracle都使用许可来加强数据库安全性。SQL Server用语句级的许可来限制创建新的数据库对象的能力。(同Oracle一样)

SQL Server还提供了对象级的许可。像Oracle一样,对象级所有权是分配给对象的创建者的,并且不能过户。在其他用户可以访问对象之前必须给予他们对象级的许可。sysadmin 固定服务器角色、db_owner 固定数据库角色、或者db_securityadmin 固定数据库角色的成员同样可以给予其他用户对某个用户对象的许可。

SQL Server语句级和对象级的许可可以直接赋予数据库用户账号。但是,通常更简单的方法是赋予数据库角色管理员许可。SQL Server角色用来赋予或者撤消数据库用户组的特权(同Oracle角色非常相象)。角色(Roles)是一个带有特殊数据库的数据库对象。每次安装都有一些固定的服务器角色,这些角色在数据库之上工作。一个固定服务器角色的例子是sysadmin。Windows NT组也可以作为SQL Server登录,就像数据库用户一样。许可可以赋予一个Windows NT组或者一个Windows NT用户。

一个数据库可以有任意数量的角色或者Windows NT组。缺省的public角色总是可以在任何一个数据库上找到,这些角色不能被清除。public角色的功能很像Oracle中的PUBLIC账号。每个数据库用户都是public角色的成员。在public角色之外,一个数据库用户还可以是任意数量角色的成员。Windows NT用户或组也可以是任意数量角色的成员,同样,他们也是public角色的成员。

数据库用户和Guest账号(Database users and the guest account)
在Microsoft SQL Server中,一个用户登录账号必须被授权使用一个数据库和它的对象。登录账号可以用下面方法中的一种来访问数据库:
登录账号可以被设定为数据库用户。
登录账号可以在数据库中使用访客(Guest)账号。
一个Windows NT组登录可以被映射为一个数据库角色。作为该组成员的单个Windows NT账号就可以连接到数据库上。

db_owner或者db_accessadmin角色或者sysadmin固定服务器角色的成员可以创建数据库用户账号角色。一个账号可以包含一些参数:SQL Server登录ID,数据库用户名(可选)、以及一个角色名(可选)。数据库用户名不一定要和用户登录ID一样。如果未提供一个数据库用户名,则用户的登录ID和数据库用户名就是一样的。如果未提供一个角色名,则该数据库用户就仅是public角色的成员。在创建了数据库用户之后,用户可以根据需要分配任意的角色。
db_owner或者db_accessadmin角色的成员也可以创建一个guest账号。guest账号允许任意有效的SQL Server登录账号访问一个数据库,甚至不需要有数据库用户账号。缺省情况下,guest账号继承了分配给public角色的特权;但是,这些特权可以修改为多于或者少于public账号的特权。

一个Windows NT用户或者一个组的账号可以被赋予访问数据库的权利,就像SQL Server登录所能做的一样。如果一个Windows NT组的一个成员连接数据库,该用户会收到分配给这个组的许可。如果该用户是不止一个Windows NT组的成员,则他会收到所有这些组对数据库的权限的集合。

Sysadmin角色(The sysadmin role)
Microsoft SQL Server sysadmin固定服务器角色中的成员拥有与Oracle DBA组中的成员相似的权限。在SQL Server 7.0中,如果SQL Server是安装在一台Windows NT计算机上,那么以sa SQL Server验证模式登录的账号缺省为该角色的成员,也就是本地Administrator组中的成员。一个sysadmin角色中的成员可以增加或者删除Windows NT用户和组,以及SQL Server登录账号。典型的该角色中的成员有以下职责:
安装SQL Server。

配置服务器和客户端。
创建数据库。*
设立登录权限和用户许可。*
将数据导入或者导出SQL Server数据库。*
备份和恢复数据库。*
执行和维护复制。
安排无人值守的操作。*
监视和调试SQL Server的性能。*
诊断系统问题。
*这些项目可以委派给其他安全性角色和用户。

在SQL Server 7.0中,对于sysadmin固定服务器角色中的成员能干什么是没有限制的。因此,该角色中的成员可以通过一个特殊的SQL Server实例访问任何数据库、所有的对象(包括数据)。像一个Oracle DBA一样,有一些命令和系统程序是只有sysadmin角色中的成员才能使用的。

db_owner角色

虽然Microsoft SQL Server数据库在使用上和Oracle表空间很相似,但是它们在管理上是不一样的。每个SQL Server数据库都是一个自持的管理域。每个数据库都标明了数据库所有者(dbo)。该用户总是db_owner固定数据库角色的成员。其他用户也可以是db_owner角色的成员。该角色中的所有成员都可以管理与他的数据库相关的管理任务。(不象在Oracle中,DBA管理所有数据库的管理任务)。这些管理任务包括:
管理数据库访问。
修改数据库设置(只读,单用户,等等)。
备份和恢复数据库目录。
授予和取消数据库许可。
创建和删除数据库对象。
db_owner角色中的成员可以在他们的数据库上做任何事情。分配给该角色的大多数权利被分给一些固定数据库角色,或者也可以赋予数据库用户。在数据库上行使db_owner特权并不需要赋予sysadmin服务器范围特权。

安装和配置Microsoft SQL Server

了解了Oracle和SQL Server之间基本结构上的差异以后,你就可以开始进行移植过程的第一步了。SQL Server Query Analyzer将用来运行下面的脚本:

 

  1. 使用Windows NT基于软件的RAID或者基于硬件的RAID第五级来创建一个足够放下你的所有数据的逻辑驱动器。对空间的估算可以通过计算被Oracle系统、临时文件以及应用程序表空间占用的文件空间大小来进行。
  2. 使用Windows NT基于软件的RAID或者基于硬件的RAID第一级创建一个第二逻辑驱动器来放事务日志。该驱动器的大小起码应该和在线恢复以及后滚表空间的总的大小一致。
  3. 使用SQL Server Enterprise Manager创建一个和Oracle应用程序表空间名字一样的数据库。(示例应用程序使用的数据库名字叫做USER_DB)标明文件位置,使它们分别和你在第一步以及第二步中为数据和事务创建的磁盘位置一致。如果你使用多个Oracle表空间,不需要也建议你不要创建多个SQL Server数据库,RAID会自动为你分配的。
  4. 创建SQL Server登录账号: USE MASTER

    EXEC SP_ADDLOGIN STUDENT_ADMIN, STUDENT_ADMIN

    EXEC SP_ADDLOGIN DEPT_ADMIN, DEPT_ADMIN

    EXEC SP_ADDLOGIN ENDUSER1, ENDUSER1

    GO

  5. 为数据库添加角色: USE USER_DB

    EXEC SP_ADDROLE DATA_ADMIN

    EXEC SP_ADDROLE USER_LOGON

    GO

  6. 为角色授予许可: GRANT CREATE TABLE, CREATE TRIGGER, CREATE VIEW,

    CREATE PROCEDURE TO DATA_ADMIN

    GO

  7. 增加作为数据库用户账号的登录账号:
EXEC SP_ADDUSER ENDUSER1, ENDUSER1, USER_LOGON

EXEC SP_ADDUSER DEPT_ADMIN, DEPT_ADMIN, DATA_ADMIN

EXEC SP_ADDUSER STUDENT_ADMIN, STUDENT_ADMIN, DATA_ADMIN

GO

教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台