下面是我个人的一点体会,由于水平有限,估计有理解的有一些问题,欢迎指正对于
Oracle 8i初学者,很有可能会经常把MS
SQL Server中的概念拿来与
Oracle对照,这种对照,从我个人认为觉得不需要做过多的这种比较,一个如果才来没有学过其他
数据库管理的人,可能更容易学习
Oracle.现在我来说一下两者的区别和联系
1、关于
数据库的概念
我怎么找到或者创建自己的
数据库Oracle的
数据库的概念已经完全不同于MS SQL
Oracle的服务和
数据库,相当于MS SQL的
数据库服务
Oracle的服务=后台进程+相关内存
数据库=数据文件的集合
而且
Oracle的服务是完全可以与
数据文件脱离开来的
那么MS SQL的
数据库,在
Oracle哪儿能找到呢,
Oracle的Schema,Schema的中文意思:方案,意思是一个用户所拥有所有对象的集合
这里的对象包括表、视图、实例化视图、序列、过程、函数、
程序包、同义词
(下面我会详细解释这其中的一些陌生的概念)
所以我们要建立一个在
Oracle中的类似于MS SQL的
数据库:大致过程
·建立
数据表空间(相当于MS SQL的
数据库的
数据文件)
·建立临时表空间(相当于MS SQL的
数据库的事务日志文件)
·建立用户,他的却省表空间和临时表空间是刚建立的两个表空间
·给用户授权,最起码的角色权限是Connect 的角色
·以该用户登陆,创建自己的表、视图、实例化视图、序列、过程、函数、
程序包、同义词等
2、关于
Oracle Manager Server与MS SQL的
Enetrprise manager
应该说这两者有很大的差别,DBA Studio工具提供了与MS SQL的
Enetrprise manager同样的功用,
DBA Studio工具对一般使用来说已经足够了。
但这里有必要对
Oracle Manager Server解释一下
·它是
Oracle 管理分布式
数据库的服务,注意他是服务
·它却省并不安装
·它需要有自己管理所需要的资料库,在某个
数据库中需要建立相应的用户
·它的等录需要身份验证,注意这里的身份验证,与管理所需要的资料库的用户是不是一个概念,
也不是
数据库中的Sys和、system用户,它的却省用户是oemtemp
·它的功能有
·使用它,在管理端要启动Manager Server服务和智能代理服务(
OracleAgent),被管理的
数据库服务器要启动智能代理服务(
OracleAgent)
3、关于
Oracle 的Sys、System的用户与MS SQL的master的比较
MS SQL的master数据库存储了当前
数据库服务的一些配置信息如
数据库设备(在MS SQL已经弱化)、字符集、
数据文件、登陆帐号、拥有的
数据库、整个服务参数配制等信息
Oracle的Sys存储
Oracle服务或者实例的信息及所有用户的
数据字典信息
这一点不同于MS SQL,MS SQL每一个
数据库拥有自己的对象的
数据字典信息
System用户拥有
数据字典是视图信息,有了这些视图,我们的查询
数据库的信息就特别方便
却省情况下,system用户拥有DBA系统角色权限,而sys不仅拥有DBA 的权限还拥有SysDBA的权限
DBA、SysDBA这两个系统角色有什么区别呢
在说明这一点之前我需要说一下
Oracle服务的创建过程
·创建实例
·启动实例
·创建
数据库(system表空间是必须的)
启动过程
·实例启动
·装载
数据库·打开
数据库SysDBA,是管理
Oracle实例的,它的存在不依赖于整个
数据库完全启动,
只要实例启动了,他就已经存在,以SysDBA身份登陆,装载
数据库、打开
数据库只有
数据库打开了,或者说整个
数据库完全启动后,DBA角色才有了存在的基础!
4、
Oracle中新的
数据库对象:实例化视图、快照、序列、
程序包、同义词、抽象的
数据类型
·实例化视图又称显形图:实例化说明他有自己的存储空间,视图:说明他的
数据来源于其他表
数据。
实例化视图中的
数据,设置为隔一段时间更新
数据,更新的模式可以定义为完全更新和增量更新
·快照基本上同实例化视图,只不过
数据来源不同,快照
数据来愿于远程
数据库,而实例化视图则来源于本地
数据表
·序列,相当于MS SQL中的identity列,他是一个数字顺序列表
·
程序包:他是过程、函数、全局变量的集合,他封装了私有变量、私有过程和私有函数
如:dbms_out包
·同义词:是对
数据库中的对象的别名,同义词可以是全局的也可以是私有的(属于某个用户的)
如:Tab,col等
·抽象的
数据类型,类似于C中的结构体或Pascal记录类型
关于类型,这里还有一个题外话:A Tab%RowType,这是一个特别的抽象的
数据类型,该类型的分量就是TAB的字段
B Tab.TName%Type,这定义了一个和tab的字段TNAME相同的
数据类型的变量,想想他有什么好处
5、
Oracle数据库连接和MS SQL远程连接
两者都是为了实现分布式
数据库的操作。
两者都能实现分布式事务,参见MS SQL的联机帮助
6、
Oracle回滚段和MS SQL的
数据库事务日志文件
回滚段提供了事物回滚需要使用的
数据变化以前的映象.这些映象是按条目存储的,
如果这些条目过少,一个事务等待另一个事务的几率增大,就会影响
数据库的性能
却省安装时,提供一个系统回滚段他在System表空间.为了提高性能system 表空间
不应存储有任何
数据字典信息以外的信息.
MS SQL数据库事务日志文件功能雷同于回滚段,只不过他是同特定的
数据库密切相关的
7、关于
数据表的管理
·超大型
数据表的管理
一个
数据表,尤其是那种流水帐表,长年累月后急剧膨胀,最后影响查询性能
怎么办,
Oracle和MS SQL都提供了一种方法,把
数据文件及其索引存放在一个特定的
数据文件或表空间里,但这个还是不能解决问题,怎么办,开发人员只能给表添加
时间的标志:如CWSJ2000(财务
数据2000),CWSJ2001,CWSJ2002, 这种命名方式,
确实能提高查询性能,但是给开发带来了不少的麻烦(浪潮财务就是这样做的),
而且当你不知道
数据在哪个表中的时候,你要联合这么表进行查询,岂不长哉!
Oracle提供了很好的手段解决了这个问题:表及索引分区存储。按字段值的范围
进行分区存储.具体做法不在说明。
·
Oracle索引组织表和MS SQL簇索引表
两者的
数据存放顺序都是按照索引值的顺序存放的。
·无事务回滚概念的表,对这种表的操作不村在事务的概念
记得以前
MySQL是不提供事务的回滚(不知现在有否变化)
而
Oracle提供了建表参数nologging,使对该表的操作不参与事物的回滚
·索引
Oracle提供了多种MS SQL没有的索引类型
··位图索引,
比方说性别:仅有男女
第1条记录:男
第2条记录:男
第3条记录:女
第4条记录:男
第5条记录:女
第6条记录:男
.........
那它的索引:110101............
看这种索引多节省空间,它适用于字段值是的已