SQL Server与Oracle迁移指南(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-10 18:29:13

点击下载

作者:梅涛,罗裕梅,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

SQL Server与Oracle迁移指南

SQL Server与Oracle迁移指南试读:

前言

SQL Server与Oracle是世界上商业数据库市场占有率较高的两种通用型数据库。其中,Oracle多年来是数据库业界的领军产品,在高端应用上有较大的占有率;而SQL Server在中低端应用上有较大的占有率。同时,通常 Oracle 给人以性能高、维护难度大的印象。长期以来,当面对大数据量的性能要求时,或者要求跨平台的部署能力时,都会将应用迁移到Oracle数据库上。并且一些行业和企业对Oracle也有着深厚的技术积累,也会要求将应用迁移到Oracle上。

近年来,虽然Oracle在数据库维护上进行了很多简化,但是SQL Server在功能和性能上却有了更长足的进步。事务处理性能委员会(Transaction Processing Performance Council,www.tpc.org)的TPC-E(针对OLTP)和TPC-H(针对OLAP)的排名上,SQL Server在性能上的优势与Oracle形成强烈反差,这表明Oracle在性能上也已经不像过去高高在上了。

随着PC服务器相对小型机在性能上也有较大改善,以及硬件成本的降低,凸显了Oracle数据库的拥有成本过高,特别是维护成本以及对维护人员的要求较高,甚至在安全性上也乏善可陈。为降低成本,一些企业出现了去IOE(IBM、Oracle、EMC)的趋势,出现了越来越多从Oracle数据库向其他数据库进行迁移的需求。

同时,在软件的产品化开发中,也更多地出现不同的数据库,以满足不同客户的需求。数据库开发人员也面临着多种数据库之间的转换和迁移工作。

作为常见的两种商业数据库,SQL Server与Oracle的底层原理是相同的,在基本功能上是一致的,都有着大致对应的实现方案,实施迁移的可行性是较高的。但是两种数据库在系统结构和功能实现上有巨大的差异,使得学习过程和迁移过程较为复杂。本书按照迁移时面临的问题和实际迁移工作的步骤出发,逐步向读者展示相关内容。通过本书,读者可以处理好迁移时大部分需要考虑的相关细节,提高迁移的速度和成功率。

本书第1 章首先从安装开始进行介绍,让读者对两种数据库的运行环境有一个粗略的认识。

第2章着重介绍两者体系架构的异同点。两种数据库的主要构成大体上可以对应,主要是名称上的不一致。不同点主要在于SQL Server是多库结构,架构、用户、登录名相分离。

第3章进一步介绍不同体系架构下用户和授权的差异及迁移建议,演示了SQL Server架构、用户分离为授权带来的灵活性,以及两种数据库在模块授权的不同之处,为迁移做好事前规划和准备工作。

从第4章开始正式进入迁移的实际工作,从对象迁移开始,到第5章的数据迁移。这部分工作可能由一些迁移工具辅助完成。

迁移工作最为烦琐的部分介绍在第6、7章,就是修改应用中的SQL语句。很多功能在TSQL和PLSQL实现的差异较大,需要有不同的方法来解决。

第8章主要考虑相关的事务差异,这部分工作也是今后数据库调优的基础。

最后一章即第9章介绍两种数据库常用扩展功能的迁移建议。这部分功能差异较大,必须重新开发和部署,涉及的范围太大,本书仅做简要介绍。

本书中table统一译为表,schema统一译为架构。文中SQL Server特指Microsoft SQL Server而不是Sybase SQL Server。SSMS为Microsoft SQL Server Management Studio的缩写,OEM为Oracle Enterprise Manager的缩写。如果命令行前有“OS>”的,表示此句是在操作系统的命令行shell下执行的,而不是在SQL环境中执行的。在SQL语句中,由“< >”界定的字符是需要根据实际情况进行替换的。本书中出现的SQL Server用户特指数据库用户,而非实例登录名。本书以SQL Server 2012和Oracle 11g R2为叙述主线,涉及最新的SQL server 2016 SP1和Oracle 12c的一些功能,早期版本也会有一定的涉及。

读者阅读本书前,需要对其中一种数据库有所了解。本书主要针对数据库开发人员,而非DBA(Database Administrator,数据库管理员),仅对迁移过程中出现的常见问题进行对比说明,而其他问题仅做简要介绍。

本书得到国家自然科学基金(71402159、71672013)、云南省应用基础研究计划重点项目(2017FA034)、云南省中青年学术和技术带头人后备人才培养项目(2018HB027)、2018年昆明市电子商务与互联网金融重点实验室项目(2017-1A-14684昆高发〔2018〕18号)、教育部产学合作协同育人项目(教高司函〔2017〕1号)、云科云财电商众创空间项目(2017DS012)、云南省电子商务创新与创业重点实验室(云教科2014[16])、云南省电子商务实验教学示范中心(2015年高水平大学实践教学能力提升工程项目)(云教高2015)的资助。在此一并表示衷心的感谢。

本书由笔者在近年来实际工作中获得的经验汇编而成,笔者尽最大的努力将这些经验与读者分享。鉴于水平有限,书中可能存在一些错误,欢迎广大读者朋友批评指正。著者第1章安装准备1.1 服务器硬件及运行环境

对于数据库服务器的硬件选择,首先应明白数据库服务器硬件的三个主要瓶颈,即存储的存取速度、内存的大小和CPU的核心数,并且它们的优先级依次为存储的存取速度、内存的大小、CPU的核心数。因此在选择时需要注意以下几点。(1)存储的存取速度比存储的容量重要得多。尽量选择转速更快的磁盘,或使用固态硬盘,所以购买时要注意买读写速度更快的硬盘,而不要买容量更大的硬盘。

对于保存备份数据的存储而言,虽然不要求快,但要求故障率低,而且很多时候要求的是独立存储,确保即使服务器无法启动时仍能通过其他途径读取备份数据。(2)物理内存越大越好。增大物理内存,可以有效降低对磁盘的 I/O 需求,减轻存储速度瓶颈的压力。(3)数据库的CPU的核心数比CPU的频率更为重要。与游戏的要求不同,游戏往往要求高频单核,而数据库的CPU的核心数比CPU的频率更为重要。CPU核心数越多,数据库系统的并发能力越强,6核心3.0 G的CPU就不如8核心2.6 G的CPU好。(4)重要的数据库系统必须考虑购买备用服务器,并做好备份/恢复策略。即使是高端的服务器,也可能在某个批次的产品质量上存在问题。(5)拥有良好的外部散热环境,比如安装空调。很多时候,服务器宕机,不是硬件的问题,也不是操作系统的问题,而是太热了。(6)不要将几台服务器的电源接在同一个空开上,这样的话,其中一台服务器电源模块发生故障,将导致所有服务器集体宕机,比停电还可怕。须设定在UPS快耗尽时,将服务器自动关机。1.2 版本选择1.2.1 SQL Server的版本选择

SQL Server常见的版本有Express版(免费版)、标准版、企业版、开发版。各版本在功能上各不相同。其中,要注意的是,开发版在功能上与企业版一致,但其限制了并发性能,不能作为正式的版本在线使用。另外,SQL Server虽然有多种语言版本,但其只影响界面及错误提示,并无其他影响。

SQL Server 2000及以前的Express版称为MSDE(MS SQL Server Desktop Engine),它们限制了并发连接数,要求连接数不能大于5个。新的Express版没有这个限制,但仅授权支持1 CPU(物理CPU)、1GB内存、4GB存储(新版本有所放宽)。Express版通常会集成在Visual Studio安装包中。

开发版包含企业版中所有的功能,但开发版在并发性上有严格的限制,用于生产环境时会使数据库服务器运行缓慢。1.2.2 Oracle的版本选择

Oracle也分个人版、标准版和企业版,Oracle 10g以后个人版称为Express版,Oracle 11g改为Oracle XE(快捷版)。Windows Vista/7/Server 2008上需要安装Oracle 10g及以后的版本才能正常使用。Oracle不分语言版本,根据操作系统的语言环境自动显示对应的语言种类。1.3 安装注意事项1.3.1 SQL Server的安装注意事项(1)安装时需要以管理员权限运行安装程序。(2)安装时可以选择服务启动方式为网络服务(Network Service)方式,这种方式比较安全。黑客利用漏洞入侵SQL Server后无法提升权限来控制操作系统。Express版默认以网络服务进行安装。(3)若安装时MSSQLSERVER服务以本地系统账户(system)运行,后来要改为Network Service 方式运行,先要将 Network Service 用户加入“SQLServer2005MSSQLUser$<计算机名>$MSSQLSERVER”组中,再在服务管理器中将MSSQLSERVER服务改为Network Service用户,密码为空,并重启服务。SQL Server Agent服务还要将Network Service用户加入“SQL Server2005SQLAgentUser$<计算机名>$MSSQLSERVER”组中(具体可看SQLAGENT90.EXE的安全属性中有哪些组,需要相关用途就将 Network Service 用户加入这些组),再将 SQL Server中登录名Network Service加入sysadmin服务器角色。

注意:SQL Server 创建的文件并不继承所在目录的权限,文件被“SQL Server 2005 MSSQLUser$<计算机名>$MSSQLSERVER”组完全控制,而USERS组没有任何权限。如果在FTP中使用普通用户传输库文件将会失败。在C:\Program Files下创建文件,也需要在目录中将这个组加入完全控制。(4)SQL Server安装程序基于.NET 2.0运行时,正式开始安装前将自动安装.NET组件。Express版不带.NET运行时,须手动先行安装。(5)数据库服务器不要使用个人版的Windows,例如Windows XP/7/Vista/8/10,应使用Windows服务器版,如Windows Server 2008/2008 R2/2012/2012 R2。个人版Windows在多CPU支持、多线程并发性上不如服务器版的Windows,个人版Windows上无论安装哪种数据库都只适用于开发。由于微软已经停止支持Windows 2000/Server 2003/Server 2003 R2,不建议使用,如果是32位的CPU,可考虑32位的Windows Server 2008。(6)不能安装杀毒软件。杀毒软件的后台服务通常会在操作系统底层实时地监视系统的每一次读写,使服务器变得很慢,甚至会出错。这也是国外正规的杀毒软件都会自动阻止在服务器上进行安装的原因。网络防火墙使用Windows系统自带的就行了,不要安装第三方的防火墙软件,防火墙软件会检查每一个IP包,使服务器网络通信受阻,甚至引发网卡驱动出错,进而系统蓝屏宕机。杀毒软件和第三方防火墙软件都是为个人PC设计的,不应在服务器上使用,这可能是很多人认为Windows服务器比较慢和不稳定的重要原因。相比而言,及时安装操作系统和数据库的安全补丁(Windows、Linux、SQL Server、Oracle)更为重要。

Windows防毒的一般性措施:

● 不要关闭UAC(User Account Control,用户账户控制)安全提示。

● 不要关闭自带防火墙。

● 不推荐用共享磁盘复制文件,建议用FTP。

● 禁止在U盘上运行程序,只能在本地硬盘上运行。可以在本地安全策略中的软件限制策略中添加路径规则,例如E:\*,安全级别为不允许。

● 自动安装补丁。内部网络中应考虑建设一个补丁服务器(Windows Server Update Service,Windows更新服务)。1.3.2 Oracle的安装注意事项(1)Oracle在Windows中必须以管理员权限进行安装。Oracle 12C以前服务不能以网络服务(Network Service)方式运行,只能以System用户运行,存在安全隐患。(2)安装的路径必须是全英文的,不能含有空格,通常安装在根目录中。(3)安装Oracle时在类UNIX系统下建议新建一个用户,加入oinstall组,并以新建的这个用户登录进行安装。(4)Oracle 64位客户端不包含32位客户端,使用32位接口的应用程序将无法使用。(5)Oracle的安装目录在USERS下没有访问权限,在IIS中(网络服务)无法直接访问,必须要对目录重新授权。(6)Oracle安装程序基于Java运行时,由安装程序自带。1.4 客户端1.4.1 安装

SQL Server的ODBC客户端集成在Windows中,无须另外安装。OLE DB/ADO接口在Windows XP SP3后集成在Windows中。.NET程序的客户端是需要单独安装的。由于接口是直接集成的,在MS Excel中从SQL Server中获得数据、生成报表就极为方便,在任何Windows平台上都可以直接运行。

Oracle的客户端就要手动安装了。要注意,Oracle客户端分为32位和64位,不能混装。例如,要使用32位的PL/SQL Developer,就必须安装32位的客户端。在64位SQL Server SSIS中使用32位Oracle客户端时,必须在选项中选择调试时和运行时使用32位。

使用32位的客户端还是64位的客户端,由调用者决定,而不由操作系统决定。除了PL/SQL Developer这类第三方应用,还要特别注意微软的Visual Studio开发环境。由于Visual Studio 都是 32 位的,所以在设计时,用的是32位客户端,而在调试时或运行时,根据编译的目标程序,用的可能又是64位的客户端。而Oracle不能同时安装32位和64位的客户端,对开发会造成一些麻烦。1.4.2 图形界面

SQL Server 2005使用Management Studio代替了旧版本中的实例管理器和查询分析器。SQL Server不提供B/S管理工具。在本书中,以SSMS来称呼Management Studio。

Oracle 8/9i主要使用客户端方式的Enterprise Manager Console,10 g以后改为使用浏览器方式的OEM(Oracle Enterprise Manager,创建数据库时需要选择“Enterprise Manager 资料档案库”复选框)。Oracle 11 g后,EM使用了HTTPS访问协议,但是密钥只有512位,而Windows要求密钥至少有1 024位,无法访问。需要在管理员模式下的命令行执行 certutil-setreg chain\minRSAPubKeyBitLength 512,将密钥长度要求改为512位。新版的Oracle除了sqlplus以外,还提供了一个免费的 SQL Developer 图形化的查询分析工具。第一次运行时要求指定java.exe 的位置,通常可以指定自带的 java 程序:%ORACLE_HOME%\jdk\jre\bin\java.exe。要修改这个路径,用文本编辑器打开SQL Developer安装目录下的sqldeveloper.conf文件,修改SetJavaHome 值。

第三方工具:以前,Oracle 的图形工具不好用,出现了很多第三方的图形化工具。常用的有 PL/SQL Developer、Toad、Navicat、Database.NET、SI Object Browser、Embarcadero DBArtisan,大多是收费软件。这些工具中有的也兼容SQL Server,由于SQL Server本身自带的图形界面已经很好用了,很少有人使用第三方工具,例如Navicat、Database.NET。有资料显示,PL/SQL Developer也可以用于SQL Server。1.5 命令行1.5.1 SQL Server的命令行

SQL Server中主要使用Microsoft SQL Server Management Studio(SSMS)图形界面,命令行用得不多,甚至有很多SQL Server的开发人员并不知道SQL Server有个命令行工具sqlcmd。

注意,所有的参数以“-”号标识,sqlcmd的参数都要区分大小写,密码也是区分大小写的。以服务器本机操作系统管理员身份进行登录:

语句块(batch)以“GO”结束。-c(小写)参数可以自定义语句块结束标识,例如:

SQL Server 2000中使用 osql 工具,使用方法与 sqlcmd 类似。SQL Server 可以用 exit(select …)返回值给OS。新版的SQL Server还提供了PowerShell脚本工具访问SQL Server。1.5.2 Oracle的命令行

sqlplus username/Password@SID,密码不区分大小写(Oracle 11g后默认区分大小写),命令以分号“;”结束,如果是语句块,应以“/”结束。

管理员登录比较特别:sqlplus username/Password@SID as sysdba,如果是服务器,本机使用操作系统管理员认证方式,可以简化为sqlplus /as sysdba,以sys用户(不需要用户名和密码)进行登录。

Oracle主要使用命令行工具,近几年来也提供了SQL Developer图形工具。常用的第三方的图形化工具有PL/SQL Developer、Toad for Oracle,这两个都是付费软件。

执行SQL脚本:

或者先登录sqlplus,再执行SQL>@pathfilename。

结果输出:

帮助命令:>help

需要先执行脚本:>@helpbld.sql

编辑SQL语句:

如果要修改编辑器,请在$ORACLE_HOME/sqlplus/admin/glogin.sql文件中写入:

保存glogin.sql后,重新登录sqlplus即可。

如果提示SP2-0110:无法创建保存文件 "afiedt.buf",请检查当前目录是否对当前用户有写权限。Windows中可以使用管理员方式运行。SQL>$dir或SQL>!ls查看当前目录。

编辑保存后退出。

终止语句的执行:Ctrl-c

执行操作系统命令。

Windows平台:SQL>$或host

类UNIX平台:SQL>!或host 1.6 创建和删除实例1.6.1 SQL Server的创建和删除实例

对于SQL Server,必须使用SQL Server的安装文件才能创建实例。选择安装database service,在实例名页面选择“命名实例”,输入新的实例名。注意:在创建实例后,也需要对新的实例安装补丁。在连接非默认实例时需要在IP地址或计算机名后附加“\实例名”。Express版本在安装时默认安装的实例名是SQLEXPRESS,在安装时可改为默认实例(MSSQLSERVER)。

使用"%ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\ARPW rapper.exe"/Remove删除实例。

SQL Server多实例情况时建议各实例配置使用不同的CPU和磁盘,并限制内存使用,这样可以避免硬盘资源竞争。1.6.2 Oracle的创建和删除实例

Oracle使用DBCA指令(或开始菜单中的Database Configuration Assistant)在操作系统下创建和删除实例(图形界面)。Oracle 的新实例也要重新执行补丁中的 SQL 升级脚本,否则功能会出现不正常。

注意:

● Oracle使用“库”称呼实例,这是由于Oracle中一个实例只有一个库,这对从SQL Server向Oracle移植的人来说,会造成很大误解。

● Oracle中无法限制实例使用CPU。

由于多实例会引发各种资源的竞争,一般不建议考虑,本书实际上仅考虑单实例的情况。1.7 卸载

卸载前两者都应先关闭实例,否则会造成卸载失败。1.7.1 SQL Server的卸载

直接在控制面板中选择添加/删除程序,找到SQL Server进行卸载。若卸载失败,先执行安装盘上Servers\setup\sqlsupport.msi,再

[1]执行"%ProgramFiles%\Microsoft SQL Server 90\ etup

Bootstrap\ARPWrapper.exe" /Remove。1.7.2 Oracle的卸载

Oracle的Universal Installer有卸载功能,但卸载得不干净,需要手动操作,例如清除注册表。在新版本中,提供了一个卸载程序deinstall,可在Oracle网站上免费下载。1.8 参数配置

在Windows下两者都可以通过图形界面修改参数。

通常都在Management Studio中通过图形界面完成修改。大部分参数修改后直接生效,不需要重启数据库。通过SQL方式查看或修改参数可查看帮助文件。SQL Server先执行EXEC sp_configure 'show advanced option','1',再执行Reconfigure,使其生效。“exec sp_configure”显示所有参数,再使用“sp_configure‘参数名’,值”设置参数,reconfigure使参数生效。(1)SQL Server的配置都可以使用图形界面进行。主要参数在服务器属性中进行配置,SQL Server配置的图形界面如图1-1所示。图1-1 SQL Server配置的图形界面(2)SQL Server 2012及以后版本,也可以在“服务器对象”→“端点”→“方面”中配置一些底层参数,配置SQL Server的底层参数如图1-2所示。图1-2 配置SQL Server的底层参数(3)Oracle 9i以后的版本提供了pfile和spfile两类参数文件的修改。pfile参数文件可以使用文本编辑器直接修改,文件名通常为init.ora;spfile 为二进制的参数文件,不能直接修改,只能存放在Oracle服务器端。Oracle如果使用二进制参数文件,可以动态修改并生成部分参数(alter system set shard_pool_size=64m scope=both),但大部分参数仍然要通过重启数据库才能生效。查看参数可以使用show sga、show parameter shard_pool_size命令。1.9 补丁安装1.9.1 SQL Server的补丁安装[2]

所有微软产品的补丁都可以直接在官网上免费下载,补丁安装程序不判断是否是运行授权(正版验证)。安装程序也会随Microsoft Update定期(每月)自动更新,通过微软的补丁服务器WSUS可自动对内网的SQL Server服务器安装补丁,而不需要SQL Server服务器连接Internet。注意:在安装过补丁后,新创建的实例也需要重新安装补丁。1.9.2 Oracle的补丁安装

所有补丁无法免费下载,必须购买Oracle服务,才能下载补丁。[3]当然购买服务的前提是购买正版数据库软件。Oracle公司的补丁每个季度发布一次CPU(Critical Patch Updates,紧急补丁集)。数据库的各初始版本在 Oracle 官网上可以免费下载,但不能用于商业业务,而且初始版本中bug非常多,长时间在线使用问题很多,后期维护困难。大补丁安装使用Perl脚本,需要保证Perl语言环境的正确。安装后在每个实例上再手动执行升级脚本,升级版本号。若不执行升级脚本,可能造成多项功能运行不正常,如exp/imp。

注意:在安装完大补丁后,新建的实例仍然要手动执行一次升级脚本。小补丁按说明直接复制到相应目录替换目标文件即可。

在OEM中可以配置自动安装补丁,如图1-3所示,前提是购买了Oracle的服务。图1-3 在OEM中配置自动安装补丁1.10 32位系统内存使用

32位Windows默认情况下,进程的用户空间是2 GB内存。若要使用3 GB的用户空间,需要在Windows NT 5的C:\boot.ini中添加/3 GB参数并重启操作系统;在Windows NT 6中使用命令bcdedit /set increaseuserva 3072 打开3 GB参数。从Windows Server 2008 R2开始,微软的服务器版本已没有32位版本。Oracle有大约300 MB的预留地址,实际最大可配置内存只有1.7 GB或2.7 GB。

32位Linux默认情况下可以使用3 GB用户空间,但是Oracle的内存最大也只能用到2.7 GB。36

由于32位x86 CPU实际有36条地址总线,理论上可使用2B=64 GB内存。PAE即物理地址扩展技术,使用CPU中多余的4条地址总线管理超过4 GB的内存。

在Windows Server 2003企业版C:\boot.ini中添加 /PAE 参数(同时去掉/3 GB)并重启操作系统,可支持4 GB以上物理内存,最大单进程可支持至32 GB。Windows数据中心版可支持到64 GB内存。若同时使用/3 GB参数,单进程最大只能使用16 GB内存。Windows Server 2008使用命令打开PAE参数:BCDEdit /set PAE forceenable Windows。

Windows使用这部分内存需要使用AWE技术(地址窗口化扩展API)。AWE技术使进程能够保留大内存块(非分页内存),且只由该程序使用。AWE也在64位SQL Server中使用,以保证进程只使用定额的内存大小,其作用类似于Oracle中的pre_page_sga=ture。

在SQL Server中可直接在“内存”页面上选择“使用AWE分配内存”,SQL Server的“内存”页面如图1-4所示。图1-4 SQL Server的“内存”页面

Oracle在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\(例如:KEY_OraDb10g_home1或KEY_OraDb11g_home1)中添加一个字符串值项AWE_WINDOW_MEMORY,这个值是分配给数据库用的最大内存数(单位为字节),例如想分配8 GB,那这个值就是8 589 934 592(=8*1 024*1 024*1 024),然后设置参数use_indirect_data_buffers=ture,并使用db_block_buffers参数定义DB Buffer使用的内存大小。操作前请备份原有spfile。

在Linux中打开VLM模式,单进程可以支持到64 GB内存,SGA最大可以设置到62 GB内存。

注:在64位操作系统中使用32位的程序时,单进程可直接使用4 GB内存。1.11 防火墙对外端口1.11.1 SQL Server的防火墙对外端口配置

对于默认实例(使用固定端口),SQL Server可以在配置管理器中修改端口号,只需要在防火墙上添加1433端口,如图1-5所示。图1-5 SQL Server在配置管理器中修改端口号

对于非默认实例,例如SQLEXPRESS,其默认都使用动态端口,因此,需要将sqlservr.exe程序设置为完全允许访问,然后启动SQL Server Browser服务,并打开UDP1434端口。

实例启动时分配的动态端口如果被占用,实例将会启动失败,请检查Windows应用日志。1.11.2 Oracle的防火墙对外端口配置

在UNIX/Linux环境下直接在防火墙上添加TCP1521端口即可。

在 Windows 的早期 Oracle 版本中对每个客户端使用一个独立端口进行通信(源于Windows NT 4.0 SP3之前TCP/IP实现不了端口复用造成的遗留问题),需要将oracle.exe程序设置为完全允许访问。在 Oracle 9i 中可以在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\ ORACLE\ HOME0下,添加一个字符值(REG_SZ),名称为USE_SHARED_SOCKET,值为TRUE,重启数据库,然后在防火墙上打开TCP1521端口即可。在Oracle 10 g以后的版本中已经不需要修改注册表了。1.12 帮助文件及售后服务1.12.1 SQL Server的帮助文件及售后服务

SQL Server的帮助文件在客户端组件中安装,也可以使用在线帮助文件(需要网络支持)。新版本中,需要在Microsoft Help查看器中自行下载帮助文件。SQL Server的帮助文件有多种语言版本,包括简体中文版。帮助文件会定期更新,免费下载。对于一些存在问题及处理方法,在MSDN上可以搜索到,也可以获得一些临时性补丁,不需要付费或购买服务。用户可通过800电话获得免费技术支持(需要提供产品的PID号,批量售权产品要提供许可协议号码,即License Agreement ID,并完成注册,获得客户支持号)。进一步的故障分析处理、热补丁等必须购买付费服务。如果购买了软件保障支持,可以免费升级到最新的SQL Server版本。Bug提交页面(包含SQL Server论坛):https://connect.microsoft.com/SQLServer/Feedback(需要注册一个普通的Microsoft 账户)。1.12.2 Oracle的帮助文件及售后服务

Oracle的帮助文件须另行免费下载,安装包中不带。帮助文件只有英文版,不进行更新。需要购买Oracle服务,获得Oracle MetaLink访问权之后可以对一些存在问题的处理方法进行检索,下载补丁,可以提交Bug,有Oracle远程电话支持。注意MetaLink的年服务费一旦购买过,如果中断购买,那么在下次购买时必须先交清中断购买的年费。上门服务须另购,按天计费。购买Oracle服务后,Oracle的版本可免费升级。1.13 异步I/O和裸设备

异步I/O即在I/O操作时,不进行等待,而允许CPU处理其他任务,这样提高了系统的效率和性能。在UNIX平台上,可联系Oracle公司确认操作系统是否支持,通常需要指定的版本或补充安装包。Solaris上的Oracle默认是打开了异步I/O的;Linux 2.6已默认支持异步I/O。Windows平台从Windows 98和NT 4开始支持异步I/O方式;如果Oracle使用ASM,默认使用异步I/O。

重启数据库才能生效。

使用这个语句查看是否生效:

早期Oracle版本中的异步I/O支持Bug较多,可能需要安装补丁,请向Oracle公司咨询。

裸设备的主要用途是绕开操作系统的文件系统,提高I/O效率,避免因操作系统缓存而未能及时写入磁盘。Oracle在Windows下也支持使用裸设备方式:“\\.\<盘符>”,例如:“\\.\G:”。由于盘符资源有限,未分配盘符的分区也可在命令行方式下运行“mountvol”命令,例如使用“\\.\Volume{ce758242-2add-11dc-9423-000bcdb9c478}”方式进行添加。在RAC集群中,共用的库文件必须放在裸设备上。对Windows的裸设备备份,可用“ocopy.exe”(oracle自带工具),相当于UNIX下的dd指令。

SQL Server不能使用裸设备方式,而且不允许对NTFS文件系统和数据库文件进行加密或压缩。SQL Server写入数据时,也是不经过操作系统缓存的。Windows下Oracle虽然允许直接对数据文件进行加密和压缩,但会使性能降低,不建议使用。1.14 数据库的启动和停止1.14.1 SQL Server的启动和停止

● 命令行启动:sqlservr-<实例名>,没有实例名时将启动默认实例。

-f:以最小配置模式启动服务器,类似于Windows的安全模式。

-m:以单用户模式启动实例,类似于Oracle的mount状态。可以使用sqlcmd-A 连接单用户模式的SQL Server。

使用-m或者-f参数时,本机Administrator组中的任何一个用户都可以sysadmin的身份登录到SQL中,不进行登录名的验证。[4]

-T 在启动时添加跟踪标志。可以使用“DBCC TRACESTATUS”查看当前生效的跟踪标志。多个参数之间使用“;”进行分隔,且参数是区分大小写的。

● 服务方式启动:SQL Server配置管理器如图1-6所示,可以在配置管理器中添加启动参数,SQL Server属性如图1-7所示。图1-6 SQL Server配置管理器图1-7 SQL Server属性

SQL Server 2008(图1-7左图)有单独的启动参数页面,而SQL Server 2005(图1-7右图)稍显麻烦。

● 数据库级单用户模式:单用户模式指定一次只有一个用户可访问数据库,该模式通常用于维护操作,设置单用户模式如图1-8所示。

● 数据库级受限用户模式:仅允许具有 dbcreator 服务器角色(包括 sysadmin)或db_owner数据库角色的用户进行登录。图1-8 设置单用户模式1.14.2 Oracle的启动和停止

● 命令行启动:OS>oracle

● 正常启动:startup[open],装入数据库,并打开。

● 启动到受限模式:startup restrict,只有拥有Restricted Session系统权限(包括SYSDBA和SYSPORE 系统权限)的用户才能连接到数据库。

● 启动到迁移状态:startup migrate,Oracle 9i增加的状态,用于修改一些创建数据库时固化的初始化参数、升级/降级数据库、安装数据库补丁。

● 启动到升级状态:startup upgrade,Oracle 10g后增加的状态,主要用于升级数据库。

● 启动到建库模式:startup nomount,不装入数据库,多用于数据库创建。

● 启动到配置模式:startup mount,装入数据库,但不打开,多用于配置数据库。

● 从配置模式进入正常模式:alter database open。

● 打开数据时,重置重做日志,将scn归零:alter database open resetlogs。

● 从配置模式进入只读模式:alter database open read only。[1]http://technet.microsoft.com/zh-cn/library/aa337087(v=SQL.90).aspx.[2]https://technet.microsoft.com/zh-CN/sqlserver/ff803383.aspx.[3]http://blog.csdn.net/tianlesoftware/article/details/5809526.[4]https://technet.microsoft.com/zh-cn/library/ms188396(v=sql.105).aspx.第2章数据库体系结构2.1 DBMS[1]体系结构图

SQL Server的体系结构图是严格按数据库标准进行组织的,如图2-1所示;而Oracle并不完全遵循这个标准,如图2-2所示。它们最主要的区别是:在Oracle数据库中,一个实例(instance)只有一个库(database),一个用户只对应一个架构;在SQL Server数据库中,每个库中有不同的用户,多个不同库的用户对应一个登录名,如图2-2中虚线框中的层次在Oracle中是不存在的。图2-1 SQL Server的体系结构图

架构(schema,Oracle 中也被译为方案)可以理解为一个库下的不同名字空间,更简单一点的理解就是数据库中的对象文件夹。相同名称的对象在不同的架构中可以同时存在。由于在Oracle中用户与架构是一一对应的,所以schema这个概念容易在Oracle开发者中发生混淆。而SQL Server是多架构多用户的结构,用户与架构分离。

在访问对象时,Oracle以“用户.对象名@服务器”的形式进行访问,SQL Server以“服务器.库.架构.对象”的形式进行访问。在SQL Server 2005之前的版本中,用户与架构也是一一对应的,在这些版本中,对象以“服务器.库.用户.对象”的形式进行访问。用户与架构分离的一大好处是灵活,例如,在删除用户时不必删除对应架构的对象,而可以将这个架构下的对象转给其他用户。当然,在删除架构时,必须先删除架构下所有的对象。图2-2 Oracle的体系结构图2.2 架构和所有者

简而言之,架构是指对象的存放位置(或者说是访问路径),而所有者是对象的管理者,具有对象的完全控制权。2.2.1 SQL Server的架构和所有者

SQL Server中存在多个数据库。

use :切换当前数据库。

select db_name():查询当前所在数据库。

当前数据库下的对象通常以“架构.对象”形式表达。我们常见的dbo.××××形式,其中“dbo”就是一个默认架构名。SQL Server对象的表达形式中看不出用户的概念,这与Oracle有很大不同,在此我们需要了解SQL Server对象的所有者。

1.数据库的所有者是登录名

数据库的所有者如图2-3所示。图2-3 数据库的所有者

早期版本使用sp_changedbowner进行更改。

数据库的所有者实际上就是将登录名映射到数据库的 dbo 用户上,成为数据库的默认db_owner角色的用户。这也就要求,成为数据库所有者的登录名不能在这个数据库上映射其他用户。

在附加数据库时可能需要更改所有者。如果数据库所有者为空,使用sysadmin的成员(例如sa)仍然可以对这个数据库进行任何操作。

2.架构和对象的所有者是数据库用户

每个架构只能有一个所有者,架构所有者如图2-4所示。图2-4 架构所有者

每个用户可以同时拥有多个架构,如图2-5所示。图2-5 每个用户拥有多个架构

注意:如果需要取消在用户属性中选中拥有的架构,方法一是在架构属性中修改架构所有者为其他用户,方法二是在其他用户的属性中设为拥有此架构。

用户的默认架构如图2-6所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载