
经常会有人问我数据库是干啥的,其实一开始我是拒绝回答的,因为我也不能做到通俗易懂的表达出来,毕竟我接触这个概念也没有多长时间,但随着问的人多了,我觉得是时候脑补一下我的第一堂课了,万一哪天冒出来个货跟你掰扯这事儿,你没分分钟给他说清,最后弄个丢里儿丢面儿,好尴尬呀。
数据库,说白了就是按照数据结构来组织、存储和管理数据的仓库,这些数据是结构化的,并可为多种应用服务。也就是说,数据库是使用计算机服务器来存储数据的,专门用来提供各种数据服务。可以这样想像,过去一个公司的所有财务数据都是放在保险柜里面,而现在我们就可以针对这些财务数据搭建一个数据库放在某台计算机或服务器上面;再比如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。最常见的数据库有:银行储蓄系统、手机话费系统、美容美发会员系统、超市会员积分系统、水电费系统、机票或火车票系统等,这些都需要后台数据库基础设施的支撑。举了这么多例子,应该是把数据库说明白了,至少能在大脑里面有个概念,知道这个东西是干啥的。
现在大数据被炒的红得发紫,而大数据的基础也是数据,由此可见,数据是一个企业的核心资源,说它是企业的立身之本、发展之基都不为过,因此,维护数据库的数据库管理员(DBA)是企业不可或缺的。
目前市面上的数据库产品有很多,单从规模上分可分为大型、中型、小型几种,典型的数据库产品如下:
大型数据库:Oracle、DB2、Sybase;
中型数据库:MySQL、SQLServer、Infomix;
小型数据库:Access、VisualFoxpro。在众多的数据库产品中,Oracle数据库一直处于行业领导先地位,也是当今最流行的关系型数据库。Oracle可翻译成"甲骨文",它是一家以数据库为主业的全球化公司,是全球第二大软件公司(第一名是微软公司),目前Oracle在数据库软件市场已经排名第一,数据库软件市场份额达到486%,遥遥领先于第二名占有率仅为207%的IBM公司的DB2。在中国市场上的计算机专业系统后台所使用的数据库尤以Oracle数据库居多。但是购买Oracle数据库需要很大一笔费用,一般的大型企业使用,需要有专业人员进行管理和维护,中小企业承担不起。中小企业为了节省成本,一般使用MySQL、PostgreSQL这类免费开源的数据库,所以Oracle数据库相关的工作岗位一般是在大型企业中。
对于为什么选择Oracle数据库,而不是其他的数据库
第一,是因为Oracle数据库占据最大的市场份额,并且越来越大,市场需要很多Oracle数据库方面的人才,中国有句老话说"做对事,选对人",是同样的道理;第二,是很多非Oracle数据库的老系统正往Oracle数据库迁移,其他数据库市场占有率在减少,其他数据库工作者有面临失业的风险;第三,Oracle有大量的官方学习文档,还有部分中文文档,可以有效地进行学习;第四,Oracle有大量的从业人员,有共同方向的朋友可以互相帮助,不再是孤胆英雄;第五,是可以很容易地从Oracle官方网站下载功能齐全的数据库最新版本进行学习,可以让你了解数据库方面的最新发展趋势等。
在此说明,以后的所有内容都是基于Oracle11g数据库产品的,下面我们就简单介绍一下Oracle11g的系列产品:
企业版(EnterpriseEdition)此版本包含了数据库的所有组件,并且能够通过购买选项和程序包来进一步对其增强。
能支持例如大业务量的在线事务处理OLTP(On-LineTransactionProcessing联机事务处理系统)环境、查询密集的数据仓库和要求苛刻的互联网应用程序。
标准版1(StandardEditionOne)此版本为工作组、部门级和互联网、内联网应用程序提供了前所未有的易用性和性价比。从针对小型商务的单服务器环境到大型的分布式部门环境,该版本包含了构建重要商务应用程序所必需的全部工具。它仅许可在最高容量为2个处理器的服务器上使用,支持Windows/Linux/UNIX *** 作系统,并支持64位平台 *** 作系统。
标准版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,并且利用真正的应用集群(RAC)提供了对更大型计算机和服务集群的支持。它可以在最高容量为4个处理器的单台服务器上、或者在一个支持最多4个处理器的集群上使用,可支持Windows、Linux和UNIX *** 作系统,并支持64位平台 *** 作系统。
简化版此版本支持与标准版1、标准版和企业版完全兼容的单用户开发和部署。通过将Oracle数据库获奖的功能引入到个人工作站中,该版本提供了结合世界上最流行的数据库功能的数据库,并且该数据库具有桌面产品通常具有的易用性和简单性,可支持Linux和Windows *** 作系统。
从存储结构上来说,目前流行的数据库主要包含以下两种:
RDBMS:关系型数据库,是指采用了关系模型来组织数据的数据库;
NoSQL数据库,是指那些非关系型的、分布式的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
关系型数据库优点:
1、容易理解
二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。
2、使用方便
通用的SQL语言使得 *** 作关系型数据库非常方便。
3、易于维护
丰富的完整性大大减低了数据冗余和数据部移植的概率。
4、事务安全
所有关系型数据库都不同程度的遵守事物的四个基本属性,因此对于银行、电信、证券等交易型业务是不可或缺的。
关系型数据库的瓶颈:
1、高并发读写需求
网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统型数据库来说,硬盘I/O是一个很大的瓶颈。
2、海量数据的高效率读写
互联网上每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的。
3、高扩展性和可用性
在基于WEB的结构中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像WEBServer和APPLICATIONServer那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。
NoSQL数据库
NoSQL一词首先是CarloStrozzi在1998年提出的。2009年再次提出了NoSQL一词,用于指那些非关系型的、分布式的,且一般不保证遵循ACID原则的数据存储系统。
NoSQL具有以下特点:
1、可以弥补关系型数据库的不足
2、针对某些特定的需求而设计,可以具有极高的性能
3、大部分都是开源的,由于成熟度不够,存在潜在的稳定性和维护性问题。
关系型数据库适用于结构化数据,而非关系型数据库适用于非结构化数据,二者优势互补,相得益彰。
Oracle数据库未来的发展方向是提供结构化、非结构化、半结构化的解决方案,实现关系型数据库和NoSQL共存互补。值得强调的是,目前关系型数据库仍是主流数据库。
虽然NoSQL数据库打破了关系型数据库存储的观念,可以很好地满足WEB20时代数据的存储要求,但NoSQL数据库也有自己的缺陷。在现阶段的情况下,可以将关系型数据库和NoSQL数据库结合使用,相互弥补各自的不足。
关于数据库及其代表产品Oracle今天就介绍这么多,有兴趣的可以继续深挖,希望我的介绍能让你对数据库有一个更深入的认识。如果有志于在这方面发展的话,就让我们一起跟往事干杯从头再来。
第一章 安装 目标完成本课 您将能够:列出新的安装特性列出安装性能的增加安装新特性支持数据库存储选项 文件系统 自动存储管理(a ) 裸设备数据库管理选项 企业管理器网格控制器 企业管理器数据库控制器数据库备份和恢复选项电子邮件通知选项cluster ready服务克隆oracle g报告下面的新安装特性:配置使用oraclea 安装和配置新的企业管理器(EM)框架 如果你选择使用oracle企业管理器数据库控制器 你可以有配置使用oracle推荐的默认备份策略的选项如果你在安装的时候使用oracle企业管理器数据库控制器 你可以配置em发送警告到你知道的email地址 这些警告包括磁盘空间到了严重的界限或数据库非正常关闭 RAC的加强 g安装支持RAC新特性 尤其是安装Cluster ready服务 oracle的homes可以使用企业配置管理工具进行克隆 这个工具是附带在grid control中的 安装的性能加强内存需求 有数据库控制器的实例 m 无数据库控制器的实例 m磁盘需求 G的交换分区(或Ram的两倍) /tmp目录下要有 m的空间 oracle软件大概要 g到 g g可配置的数据库(可选) g的闪回区(可选) 减少了安装数据库的总大小 去掉了旧的选项完全安装大概 min只需要一张cd查看安装前的必要条件 查看是否有足够的临时空间 位和 位的问题 检查正确的os 检查ps的patch 系统包 系统/内核参数 x 服务器的许可 足够的交换空间 非空的oracle_home混杂的安装加强sys和system密码只需要输入一次干净的反安装 没有文件留下 oracle home外的文件都被清除 windows中的注册表记录被清除有特定的 oc j需求b_idsableStartMenu变量受到ISV的支持CD pack的内容oracle database g cdpanion cdoracle iAS infrastructure cdoracle database g clientoracle enterprise manger cdoracle documentation g cdoracle database g demos cdpanion cd 有 dbworkflowohssqlj jpublishercontext knowledgelegato storage managerexamples管理选项如果你在安装的时候选择创建启动数据库 你可以看到很多屏幕问你配置启动数据库的下面的信息命名数据库字符集schema样本数据库管理文件存储选项文件系统 把文件存储在你配置的os文件系统上ASm ASM文件是自动创建和配置的 你可以得到额外的镜向 条带化等益处 裸设备(分区) 上面没有文件系统的磁盘分区 备份和恢复选项安装的时候会提示你要不要进行自动备份口令安装的时候你可以为所有的用户设置同一个口令 也可以单独为他们设置 第二章 服务器配置 完成本章之后 您将能够:描述使用dbca安装完数据库之后oracle g功能性的支持同时使用初始化参数的子集来简化实例配置从dbca安装样本schema(可选的)从oem中查看数据库使用统计dbca的加强dbca为oracle标准提供快速创建功能齐全的马上可以使用的数据库:自动创建sysaux辅助表空间应用闪回去 并且设置闪回备份和恢复策略out of the box管理资料库自动统计的收集自动ldap注册oracle g为了简化当年的将来的自我管理活动 引进了许多特性上的改善 这次改善包括存储所有辅助元数据和工作负载信息和为了优化性能的监控工具的公用体系结构 这些改善都是被dbca完全支持和应用的 新的属于系统的sysaux表空间为所有的不存在system表空间的辅助数据库元数据提供了集中的位置 它减少了创建摩尔表空间的数目 无论是种子数据库还是用户定义的数据库 dbca现在自动的配置默认的闪回区 这是为需要恢复的文件和数据库活动的统一存储位置 oem资料库 作业 事件子系统现在都是自动的配置 减少了人工安装的需要 以个新的嵌入和完全自我管理的资料库捕捉工作负载信息和与性能有关的统计 这样减少了管理成本 dbca配置的新目录减少了使用网络api配置ldap ora的需要 简化种子数据库 简化初始化参数 减小大小 样本schema的可选安装为磁盘存储的自动存储管理ASM现在oracle数据库的配置更容易 dba只需要注意少量几个初始化参数 参数现在分成两组 基本的和高级的参数 在大多数情况下 为了得到合理的性能 你之需要设置或修改基本参数 他们大概有 个 你现在可以时候dbca配置a 为oracle数据库文件建立的和文件系统和卷管乐器的综向集成 为了常规和rac环境 使用数据库控制器进行管理在这个dbca屏幕上 你可以设置你的数据库使用grid控制器还是数据库控制器 当你运行dbca的时候 它要确定oracle管理代理已经在这个计算机上安装了 如果有 你就可以从下拉框选择oracle管理服务和grid control选项来进行中央化管理 当你完成安装的时候 这个服务作为被管理的目标是自动启动的 如果你不中央管理你的oracle环境 你仍然可以使用em来管理你的数据库 em database control在你数据库安装的时候 自动安装了 你可以使用db control提供的基于web的特性来监控 管理你安装的单实例或集群数据库 你也可以配em为sy an用户接受电子邮件通知 当metric到了一定严重或警告的时候 当你选择db control的时候 你还可以配置每天备份到闪回区 SYSAUX和dbcadbca支持强制创建sysaux表空间 在数据库存储页 sysaux是tablespace文件夹必要的原始 你可以通过单击 存储标签或在datafile文件夹相应的sysaux入口来改变sysaux的数据库文件和存储参数 数据文件和存储参数有默认的值 但你单击finish的时候 dbca就会和其它的数据库创建事件一起创建sysaux表空间和它的schema 所有的种子数据库都有sysaux表空间 使用企业管理器启动控制台os> emctl start dbconsole访问数据库控制器 //hostname: /em要提供sys/passwd as sysdba;你要从一个客户端浏览器访问em 数据库控制器 必须要运行dbconsole进程 安装之后 dbconsole进程是自动会启动的 然后 如果这个集成没有启动 你可以向下面的命令行手工的启动它: 到$ORACLE_HOME/bin目录下 执行下面的命令: emctl start dbconsole这样你就可以打开web浏览器 输入下面的url ortnumber/em TARGET=//hostnameortnumber/em来访问em db control host那么是你的计算机的名字或地址 portnumber是em db control 的端口号 这是在安装的时候指定的 默认的是 你可以在$ORACLE_HOME/install/portlist ini文件中找到这个值 如果实例启动了 EM就会显示db control登录页 你必须使用授权访问db control的用户登录到数据库 一开始是sys用户 使用在安装的时候你确定的sys用户的密码 从connect as 下拉框选sysdba 然后点登录 这样就会出现db control的主页 数据库克隆在你成功的配置调整和测试新的实例之后 你也许需要克隆数据库到一个已有的oracle home 你可以使用em clone database向导来完成克隆 要克隆一个数据库 你可以到要克隆的数据库的维护页 然后在deployment区点击clone 数据库 克隆数据库工具有下列特性:克隆数据库可以从 或后来的版本可以在源数据库打开的时候进行克隆备份数据文件 把它copy到指定的oracle home下 然后通过备份的数据库文件和归档恢复数据库来创建新的数据库 新的数据库跟到备份开始的源数据库一模一样 在指定的oracle home下创建新的数据库实例 密码文件 设置网络文件 根据源实例配置创建初始化参数文件和spfile 然后启动新的实例到open模式 clone database工具是使用rman来完成数据库克隆的 metalink的集成oem G 通过内置的metalink集成大大简化了安装补丁 em会自动的警告你关键更新和系统需要指定补丁的标注 你可以使用em patch向导来看哪些临时补丁可以安装 你还可以使用patch向导来选择补丁和查看你的系统是否需要这个补丁 你可以直接从em看到补丁的详细信息已经readme 按照下面的步骤访问补丁向导 在db control主页选maintenance标签 在deployments区下面 lishixinzhi/Article/program/Oracle/201311/17212
数据查询 是数据库 *** 作中最主要的功能之一;有时候数据库查询性能的好坏 直接关系到数据库的运行效率 关系到数据库的选型 下面笔者不谈大道理 只是对其中对一些平时大家容易忽略的查询小技巧做一些总结 或许大家可能正在为此犯愁呢
第一个技巧 利用连接符连接多个字段
如在员工基本信息表中 有员工姓名 员工职位 出身日期等等 如果现在视图中这三个字段显示在同一个字段中 并且中间有分割符 如我现在想显示的结果为 经理Victor出身于 年 月 日 这该如何处理呢其实 这是比较简单的 我们可以在Select查询语句中 利用连接符把这些字段连接起来
如可以这么写查询语句
SELECT员工职位 || ||员工姓名|| 出身于 ||出身日期 as 员工出身信息 FROM 员工基本信息表;
通过这条语句就可以实现如上的需求 也就是说 我们在平时查询中 可以利用||连接符把一些相关的字段连接起来 这在报表视图中非常的有用 如笔者以前在设计图书馆管理系统的时候 在书的基本信息处有图书的出版社 出版序列号等等内容 但是 有时会在打印报表的时候 需要把这些字段合并成一个字段打印 为此 就需要利用这个连接符把这些字段连接起来 而且 利用连接符还可以在字段中间加入一些说明性的文字 以方便大家阅读 如上面我在员工职位与员工姓名之间加入了空格;并且在员工姓名与出身日期之间加入了出身于几个注释性的文字 这些功能看起来比较小 但是却可以大大的提高内容的可读性 这也是我们在数据库设计过程中需要关注的一个内容
总之 令后采用连接符 可以提高我们报表的可读性于灵活性
第二个技巧 取消重复的行
如在人事管理系统中 有员工基本信息基本表 在这张表中 可能会有部门 职位 员工姓名 身份z件号码等字段 若查询这些内容 可能不会有重复的行 但是 我若想知道 在公司内部设置了哪些部门与职位的时候 并且这些部门与职位配置了相关人员 此时 又该如何查询呢
若我现在直接查询部门表 其可以知道系统中具体设置了哪些部门与职位 但是 很有可能这些部门或者职位由于人事变动的关系 现在已经没有人了 所以 这里查询出来的是所有的部门与职位信息 而不能够保证这个部门或者职位一定有职员存在 也就是说 这不能够满足于我们上面的要求
若我现在直接从员工信息表中查询 虽然可以保证所查询出来的部门与职位信息 一定有员工信息的存在 但是 此时查询出来的部门与职位信息会有重复的行 如采购部门分工合作 可能会有采购采购小组长 此时 在查询出来的部门与职位的信息中 就会有三条重复的记录
所以 以上两种处理方式 都不能够百分之百的满足企业用户的需求 此时 我们其实可以利用一个DISTINCT函数 来消除其中查询出来的重复行
如我们可以利用SELECT DISTINCT 部门信息 职位信息 FROM 员工基本信息表 通过这条加了DISTINCT约束的查询语句 不但可以查询出所有有员工的职位与部门信息 而且 会把重复的记录过滤掉 从而提高可阅读性
所以 在数据库设计过程中 特别是在查询语句的使用中 这个函数特别有用
第三个技巧 勤用WHERE语句
我们都知道 数据库查询效率高不高 是我们评价数据库设计好坏的一个重要标准 毋庸置疑 在数据库查询中勤用Where条件语句 是提高数据库查询性能的一个很重要的手段之一 特别是在设计到比较大的表中查询符合条件的记录过程中 利用WHERE条件语句加以限制 可以大幅度的提高查询的响应速度
如在图书馆管理系统中 现在有人想查询 注册会计师 辅导用书的时候 虽然不在书的类别或者名称中输入 注册会计师 先查询出全部的纪录 然后再一条条的看是否有相关的书籍信息 也是可行的 但是 这么处理的话 一方面系统响应的速度会非常的慢 因为里面记录很多 另一方面 查询的结果看起来也会非常的头疼
其实 我们只需要在查询中加入一些查询的参数 利用Where条件语句加以限制 则即可以提高数据库响应的速度 也可以找出最符合用户需求的数据
另外 我也接触过一些在Oracle数据库上设计的平台型管理软件 他们可以自定义相关的报表 在报表设计中 只要用户在前台设计平台中 选中 大表查询 的话 则这个平台会在生成报表的时候 自动应用Where条件语句 以提高前台系统从数据库查询数据的效率
所以 笔者认为在Oracle数据库系统设计中 要勤于使用Where语句 利用Where语句来提高数据库查询的效率
第四个技巧 灵活使用COUNT函数
在查询处理的时候 COUNT函数可以说是我们应用的比较多的函数之一 如我们有时候需要统计员工的人数 统计图书的种类数的时候 都需要使用到这个函数 不过 这个函数很多人可能会用 但是到灵活应用的地步 还是有一点差距
下面笔者就COUNT函数的一些应用技巧谈谈自己的心得
一是要灵活放置COUNT函数的位置 因为利用COUNT函数统计记录数的时候 是会考虑空行的记录的 如在数据表中一般有序列字段与其它的有意义字段两类 有时候可能序列字段中有内容而其它字段中没有内容 则在利用COUNT函数统计记录数量的时候 会把这个空记录也考虑进去 很明显 则就会发生统计的错误 所以 这个COUNT函数该放在哪个位置上 还是比较讲究的 一般的话 笔者试建议不要放在序列号字段上 而要放在一些关键的实体字段中 如统计员工人数的时候 则就可以放在员工姓名或者编号上等等
二是灵活跟其它函数搭配使用 如在上面的例子中 笔者谈到有时候用户需要知道现在有员工编制的部门与职位有哪一些 我们可以利用DISTINCT函数来找出具体的部门 但是 我现在只想知道有编制的部门与职位具体有多少 此时 我们也可以利用COUNT 与DISTINCT函数结合应用 找出我们所需要的数据 在COUNT函数中 可以指定ALL与DISTINCT选项 默认的情况下 是ALL选项 表示统计所有的行 其中也包括重复的行 而DISTINCT就表示只统计不重复的行 可见 COUNT函数跟其它函数搭配使用的话 可以简化我们的查询语句 提高查询效率
第五个技巧 只查询时必须的字段
有时候 用户不同的查询需求都要用到同一张表 如在员工信息表中包含了很多内容 有时候用户想要知道正式员工有多少;管理层员工有多少;生产线员工又有哪些;或者想知道合同即将到期的员工有哪些 为此 就遇到一个问题 因为这些内容基本上都是在同一张表中 那是在同一个视图中实现 而是根据需求不同 设计不同的视图呢
若单从技术上考虑 两这都是可以实现的 不会有多大的难度 但是 若是从数据库性能上考虑在 则还是采用不同的视图来实现不同的需求为好
一方面 若从安全方面讲 则可以根据不同的视图来控制相关的访问权限 可见 把视图细化 在权限控制上则会更加的灵活
lishixinzhi/Article/program/Oracle/201311/17049
1、 ORACLE 实例――包括内存结构与后台进程 2、 ORACLE 数据库――物理 *** 作系统文件的集合 3、 了解内存结构的组成 4、 了解后台进程的作用
1、 Oracle 实例――包括内存结构与后台进程
2、 Oracle 数据库――物理 *** 作系统文件的集合
3、 了解内存结构的组成
4、 了解后台进程的作用
5、 了解数据库的物理文件
6、 解释各种逻辑结构
一、Oracle实例
1、Oracle 实例
System Global Area(SGA) 和 Background Process 称为数据库的实例。
2、Oracle 数据库
一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)
3、系统全局共享区System Global Area(SGA)
System Global Area 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被Oracle的各个进程共用。其大小可以通过如下语句查看:
SQL> select from v$sga;
NAME VALUE
-------------------- ---------
Fixed Size 39816
Variable Size 259812784
Database Buffers 1049E+09
Redo Buffers 327680
更详细的信息可以参考V$sgastat、V$buffer_pool
主要包括以下几个部分:
a、 共享池(Shared pool)
共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:
SQL语句缓冲(Library Cache)
当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Shared pool的Library Cache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。
( )SQLPLUS编程用户的规范·存储结构的规范考虑到用SQLPLUS编程可实现各行各业 各公司 各部门多种多样的应用需求 我们的SQLPLUS编程用户也应该朝这个方向规范:不同种类的应用必须有不同的用户;不同种类的应用必须有不同的存储位置 包括物理文件 缺省表空间 临时表空间的创建和规划:当准备编写某一较大规模(从ORACLE数据量和面向用户量考虑)应用程序时 首先应该创建一个逻辑的存储位置 表空间 同时定义物理文件的存放路径和所占硬盘的大小 ① 物理文件缺省的存放路径在/oracle_home/dbs下 在命令行下用UNIX指令df k 可查看硬盘资源分区的使用情况 如果oracle_home使用率达 ‰以上 而且有一个或多个较为空闲的硬盘资源分区可以利用 我们最好把物理文件缺省的存放路径改到较为空闲的硬盘资源分区路径下 在此路径下我们可以这样规划资源物理文件的存储:xxx表空间xxx行业/ xxx公司/ xxx 部门/ xxx 服务 dbfDEMO表空间default_datafile_home /col /elec/sys /demo dbfdefault_datafile_home /col /elec/sys /demo dbf公司系统四部摹拟演示系统物理文件HUMAN表空间default_datafile_home /col/elec/human/human dbf公司人事部人事管理系统物理文件BOOK表空间default_datafile_home /col/elec/book/book dbf公司资料室图书管理系统物理文件QUESTION表空间default_datafile_home /col/elec/client/question dbf公司客户服务部问题库系统物理文件PC表空间default_datafile_home /col/chaoxun/client/pc dbf公司PC机售后服务系统物理文件……表空间default_datafile_home /……………………………等等说明:其中default_datafile_home 指oracle_home/dbs;default_datafile_home 指较为空闲的硬盘资源分区路径 ② 物理文件的大小根据应用系统的数据量 数据对象 程序包的多少来定 一般用于摹拟演示的小系统 表空间初始的物理文件为 M即能满足要求 如果信息量满 还可以增加物理文件 扩充表空间(每次扩充大小也可暂定为 M);一般实际运行的应用系统可适当增加表空间初始的物理文件大小 但也不要一次分配太大(因为不易回收空间 却易扩充空间) 这也需要根据具体情况具体分析:信息量大 需长时间保存的应用在条件允许情况下 表空间可以大到几百M甚至上G;信息量小 短期经常刷新的应用 表空间可以控制在 M以下 ③ 表空间的名称应该采用同系统应用相似的英文字符或字符缩写 表空间所对应的一个或多个物理文件名也应有相关性 不同用户所处的缺省表空间不同 存储的信息就不能互相访问 这比把所有用户信息都储存在系统表空间 安全性大大提高了 如果用ORACLE WEB SERVER管理端口创建的用户 其缺省和临时表空间一定是系统表空间 DBA切记要改变用户的缺省表空间 临时表空间存放临时数据段 处理一些排序 合并等中间 *** 作 根据实际应用的需求可以把它们放在专门创建的表空间里;如果系统表空间大 也可以把它们放在系统表空间 用户创建的数据索引最好和数据文件分开存放在不同表空间 以减少数据争用和提高响应速度 ·密码和用户名的规范有相当数量的ORACLE用户名和密码一致 这是个很不安全的因素 我们建议ORACLE用户名和密码一定不要一样 密码最好在五 六位字符以上 不同用户间不应该使用相同的密码 用户名的定义可根据实际应用的英文名来设 而依据编程人员的姓名定义的用户名实际上不规范 可在日后的工作中结合上述有关存储结构规范的说明逐步改进 ( )特殊要求用户的规范在ORACLE数据库使用过程中 还会遇到一些有特殊要求的用户:非编程人员需要对某个表有查询 增加 删除 修改的权利 DBA应创建一个这样的用户 先确定用户名和密码 再规定相关应用所在缺省表空间(包含某个表)和临时表空间 最后TABLE属主给其授权:赋予CONNECT角色SELECT INSERT DELETE UPDATE ON THE TABLE的对象级权限 这可根据实际需求自由取舍 举例:●给新用户授于对象级权限(命令行方式):假设新用户NEW 需要有查询 删除 修改DCD用户的表EMP %svrmgrlSVRMGR>connect internal; 以系统管理员登录SVRMGR>create user new identified by new default tablespace app;SVRMGR>connect dcd/dcdpwd; 以dcd用户登录SVRMGR>grant connect to new ;SVRMGR>grant select on emp to new ;SVRMGR>grant delete on emp to new ;SVRMGR>grant update on emp to new ;说了这么多关于用户的问题 那么接下来我们就详细得说一下关于密码文件的使用以及维护 在Oracle数据库系统中 用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与 *** 作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证 因此 管理好密码文件 对于控制授权用户从远端或本机登录Oracle数据库系统 执行数据库管理工作 具有重要的意义 Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令 它一般存放在ORACLE_HOME\DATABASE目录下 ·密码文件的创建:在使用Oracle Instance Manager创建一数据库实例的时侯 在ORACLE_HOME\DATABASE目录下还自动创建了一个与之对应的密码文件 文件名为PWDSID ORA 其中SID代表相应的Oracle数据库系统标识符 此密码文件是进行初始数据库管理工作的基础 在此之后 管理员也可以根据需要 使用工具ORAPWD EXE手工创建密码文件 命令格式如下:C:\ >ORAPWD FILE=< FILENAME > PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >各命令参数的含义为:FILENAME:密码文件名;PASSWORD:设置INTERNAL/SYS帐号的口令;MAX_USERS:密码文件中可以存放的最大用户数 对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数 由于在以后的维护中 若用户数超出了此限制 则需要重建密码文件 所以此参数可以根据需要设置得大一些 有了密码文件之后 需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态 ·设置初始化参数REMOTE_LOGIN_PASSWORDFILE:在Oracle数据库实例的初始化参数文件中 此参数控制着密码文件的使用及其状态 它可以有以下几个选项:NONE:指示Oracle系统不使用密码文件 特权用户的登录通过 *** 作系统进行身份验证;EXCLUSIVE:指示只有一个数据库实例可以使用此密码文件 只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息 即允许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户 SHARED:指示可有多个数据库实例可以使用此密码文件 在此设置下只有INTERNAL/SYS帐号能被密码文件识别 即使文件中存有其他用户的信息 也不允许他们以SYSOPER/SYSDBA的权限登录 此设置为缺省值 在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE SHARED情况下 Oracle系统搜索密码文件的次序为:在系统注册库中查找ORA_SID_PWFILE参数值(它为密码文件的全路径名);若未找到 则查找ORA_PWFILE参数值;若仍未找到 则使用缺省值ORACLE_HOME\DATABASE\PWDSID ORA;其中的SID代表相应的Oracle数据库系统标识符 ·向密码文件中增加 删除用户:当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时 系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统 执行数据库管理工作;这些用户名必须存在于密码文件中 系统才能识别他们 由于不管是在创建数据库实例时自动创建的密码文件 还是使用工具ORAPWD EXE手工创建的密码文件 都只包含INTERNAL/SYS用户的信息;为此 在实际 *** 作中 可能需要向密码文件添加或删除其他用户帐号 由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中 所以当向某一用户授予或收回SYSOPER/SYSDBA系统权限时 他们的帐号也将相应地被加入到密码文件或从密码文件中删除 由此 向密码文件中增加或删除某一用户 实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限 要进行此项授权 *** 作 需使用SYSDBA权限(或INTERNAL帐号)连入数据库 且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE 具体 *** 作步骤如下:创建相应的密码文件;设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;使用SYSDBA权限登录: CONNECT SYS/internal_user_passsword AS SYSDBA;启动数据库实例并打开数据库;创建相应用户帐号 对其授权(包括SYSOPER和SYSDBA): 授予权限:GRANT SYSDBA TO user_name;收回权限:REVOKE SYSDBA FROM user_name;现在这些用户可以以管理员身份登录数据库系统了;·使用密码文件登录:有了密码文件后 用户就可以使用密码文件以SYSOPER/SY lishixinzhi/Article/program/Oracle/201311/17833
数据库安全性问题一直是围绕着数据库管理员的恶梦 数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪 本文围绕数据库的安全性问题提出了一些安全性策略 希望对数据库管理员有所帮助 不再夜夜恶梦 数据库安全性问题应包括两个部分 一 数据库数据的安全它应能确保当数据库系统DownTime时 当数据库数据存储媒体被破坏时以及当数据库用户误 *** 作时 数据库数据信息不至于丢失 二 数据库系统不被非法用户侵入它应尽可能地堵住潜在的各种漏洞 防止非法用户利用它们侵入数据库系统 对于数据库数据的安全问题 数据库管理员可以参考有关系统双机热备份功能以及数据库的备份和恢复的资料 以下就数据库系统不被非法用户侵入这个问题作进一步的阐述 组和安全性在 *** 作系统下建立用户组也是保证数据库安全性的一种有效方法 Oracle程序为了安全性目的一般分为两类 一类所有的用户都可执行 另一类只DBA可执行 在Unix环境下组设置的配置文件是/etc/group 关于这个文件如何配置 请参阅Unix的有关手册 以下是保证安全性的几种方法 ( ) 在安装Oracle Server前 创建数据库管理员组(DBA)而且分配root和Oracle软件拥有者的用户ID给这个组 DBA能执行的程序只有 权限 在安装过程中SQLDBA系统权限命令被自动分配给DBA组 ( ) 允许一部分Unix用户有限制地访问Oracle服务器系统 增加一个由授权用户组成的Oracle组 确保给Oracle服务器实用例程Oracle组ID 公用的可执行程序 比如SQLPlus SQLForms等 应该可被这组执行 然后该这个实用例程的权限为 它将允许同组的用户执行 而其他用户不能 ( ) 改那些不会影响数据库安全性的程序的权限为 注 在我们的系统中为了安装和调试的方便 Oracle数据库中的两个具有DBA权限的用户Sys和System的缺省密码是manager 为了您数据库系统的安全 我们强烈建议您该掉这两个用户的密码 具体 *** 作如下 在SQLDBA下键入 alter user sys indentified by password;alter user system indentified by password;其中password为您为用户设置的密码 Oracle服务器实用例程的安全性以下是保护Oracle服务器不被非法用户使用的几条建议 ( ) 确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle软件拥有者所有 ( ) 给所有用户实用便程(sqiplus sqiforms exp imp等) 权限 使服务器上所有的用户都可访问Oracle服务器 ( ) 给所有的DBA实用例程(比如SQLDBA) 权限 Oracle服务器和Unix组当访问本地的服务器时 您可以通过在 *** 作系统下把Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服务器的安全性 这种方法适应于本地访问 在Unix中指定Oracle服务器角色的格式如下 ora_sid_role[_dla]其中sid 是您Oracle数据库的oracle_sid role是Oracle服务器中角色的名字 d(可选)表示这个角色是缺省值 a(可选)表示这个角色带有WITH ADMIN选项 您只可以把这个角色 授予其他角色 不能是其他用户 以下是在/etc/group文件中设置的例子 ora_test_osoper_d:NONE: :jim narry scottora_test_osdba_a:NONE: :patora_test_role :NONE: :bob jane tom mary jimbin:NONE: :root oracle dbaroot:NONE: :root词组 ora_test_osoper_d 表示组的名字 词组 NONE 表示这个组的密码 数字 表示这个组的ID 接下来的是这个组的成员 前两行是Oracle服务器角色的例子 使用test作为sid osoper和osdba作为Oracle服务器角色的名字 osoper是分配给用户的缺省角色 osdba带有WITH ADMIN选项 为了使这些数据库角色起作用 您必须shutdown您的数据库系统 设置Oracle数据库参数文件initORACLE_SID ora中os_roles参数为True 然后重新启动您的数据库 如果您想让这些角色有connect internal权限 运行orapwd为这些角色设置密码 当您尝试connect internal时 您键入的密码表示了角色所对应的权限 SQLDBA命令的安全性如果您没有SQLPLUS应用程序 您也可以使用SQLDBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户 因为这些命令被授予了特殊的系统权限 ( ) startup( ) shutdown( ) connect internal数据库文件的安全性Oracle软件的拥有者应该这些数据库文件($ORACLE_HOME/dbs/ dbf)设置这些文件的使用权限为 文件的拥有者可读可写 同组的和其他组的用户没有写的权限 Oracle软件的拥有者应该拥有包含数据库文件的目录 为了增加安全性 建议收回同组和其他组用户对这些文件的可读权限 网络安全性当处理网络安全性时 以下是额外要考虑的几个问题 ( ) 在网络上使用密码在网上的远端用户可以通过加密或不加密方式键入密码 当您用不加密方式键入密码时 您的密码很有可能被非法用户截获 导致破坏了系统的安全性 ( ) 网络上的DBA权限控制您可以通过下列两种方式对网络上的DBA权限进行控制 A 设置成拒绝远程DBA访问 B 通过orapwd给DBA设置特殊的密码 建立安全性策略系统安全性策略( ) 管理数据库用户数据库用户是访问Oracle数据库信息的途径 因此 应该很好地维护管理数据库用户的安全性 按照数据库系统的大小和管理数据库用户所需的工作量 数据库安全性管理者可能只是拥有create alter 或drop数据库用户的一个特殊用户 或者是拥有这些权限的一组用户 应注意的是 只有那些值得信任的个人才应该有管理数据库用户的权限 ( ) 用户身份确认数据库用户可以通过 *** 作系统 网络服务 或数据库进行身份确认 通过主机 *** 作系统进行用户身份认证的优点有 A 用户能更快 更方便地联入数据库 B 通过 *** 作系统对用户身份确认进行集中控制 如果 *** 作系统与数据库用户信息一致 那么Oracle无须存储和管理用户名以及密码 C 用户进入数据库和 *** 作系统审计信息一致 ( ) *** 作系统安全性A 数据库管理员必须有create和delete文件的 *** 作系统权限 B 一般数据库用户不应该有create或delete与数据库相关文件的 *** 作系统权限 C 如果 *** 作系统能为数据库用户分配角色 那么安全性管理者必须有修改 *** 作系统帐户安全性区域的 *** 作系统权限 数据的安全性策略数据的生考虑应基于数据的重要性 如果数据不是很重要 那么数据的安全性策略可以稍稍放松一些 然而 如果数据很重要 那么应该有一谨慎的安全性策略 用它来维护对数据对象访问的有效控制 用户安全性策略( ) 一般用户的安全性A 密码的安全性如果用户是通过数据库进行用户身份的确认 那么建议使用密码加密的方式与数据库进行连接 这种方式的设置方法如下 在客户端的oracle ini文件中设置ora_encrypt_login数为true 在服务器端的initORACLE_SID ora文件中设置dbling_encypt_login参数为true B 权限管理对于那些用户很多 应用程序和数据对象很丰富的数据库 应充分利用 角色 这个机制所带的方便性对权限进行有效管理 对于复杂的系统环境 角色 能大大地简化权限的管理 ( ) 终端用户的安全性您必须针对终端用户制定安全性策略 例如 对于一个有很多用户的大规模数据库 安全性管理者可以决定用户组分类 为这些用户组创建用户角色 把所需的权限和应用程序角色授予每一个用户角色 以及为用户分配相应的用户角色 当处理特殊的应用要求时 安全性管理者也必须明确地把一些特定的权限要求授予给用户 您可以使用 角色 对终端用户进行权限管理 数据库管理者安全性策略( ) 保护作为sys和system用户的连接当数据库创建好以后 立即更改有管理权限的sys和system用户的密码 防止非法用户访问数据库 当作为sys和system用户连入数据库后 用户有强大的权限用各种方式对数据库进行改动 改动sys和system用户的密码的方法 可参看前面的相关部分 ( ) 保护管理者与数据库的连接应该只有数据库管理者能用管理权限连入数据库 当以sysdba或startup shutdown 和recover或数据库对象(例如create drop 和delete等)进行没有任何限制的 *** 作 ( ) 使用角色对管理者权限进行管理应用程序开发者的安全性策略( ) 应用程序开发者和他们的权限数据库应用程序开发者是唯一一类需要特殊权限组完成自己工作的数据库用户 开发者需要诸如create table create procedure等系统权限 然而 为了限制开发者对数据库的 *** 作 只应该把一些特定的系统权限授予开发者 ( ) 应用程序开发者的环境A 程序开发者不应与终端用户竞争数据库资源 B 用程序开发者不能损害数据库其他应用产品 ( ) free和controlled应用程序开发应用程序开发者有一下两种权限 A free development应用程序开发者允许创建新的模式对象 包括table index procedure package等 它允许应用程序开发者开发独立于其他对象的应用程序 B controlled development应用程序开发者不允许创建新的模式对象 所有需要table indes procedure等都由数据库管理者创建 它保证了数据库管理者能完全控制数据空间的使用以及访问数据库信息的途径 但有时应用程序开发者也需这两种权限的混和 ( ) 应用程序开发者的角色和权限 lishixinzhi/Article/program/Oracle/201311/16746
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
特点
1、完整的数据管理功能:[2]
1)数据的大量性
2)数据的保存的持久性
3)数据的共享性
4)数据的可靠性
2、完备关系的产品:
1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;
2)保证访问的准则
3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
4)数据物理性和逻辑性独立准则
3、分布式处理功能:
ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。
4、用ORACLE能轻松的实现数据仓库的 *** 作。
这是一个技术发展的趋势,不在这里讨论。
优点
■ 可用性强
■ 可扩展性强
■ 数据安全性强
■ 稳定性强
以上就是关于数据库是什么Oracle又是啥玩意全部的内容,包括:数据库是什么Oracle又是啥玩意、oracle 10g 新特性中文笔记一、Oracle进行数据库查询的小技巧等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)