经常会有人问我数据库是干啥的,其实一开始我是拒绝回答的,因为我也不能做到通俗易懂的表达出来,毕竟我接触这个概念也没有多长时间,但随着问的人多了,我觉得是时候脑补一下我的第一堂课了,万一哪天冒出来个货跟你掰扯这事儿,你没分分钟给他说清,最后弄个丢里儿丢面儿,好尴尬呀。
数据库,说白了就是按照数据结构来组织、存储和管理数据的仓库,这些数据是结构化的,并可为多种应用服务。也就是说,数据库是使用计算机服务器来存储数据的,专门用来提供各种数据服务。可以这样想像,过去一个公司的所有财务数据都是放在保险柜里面,而现在我们就可以针对这些财务数据搭建一个数据库放在某台计算机或服务器上面;再比如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。最常见的数据库有:银行储蓄系统、手机话费系统、美容美发会员系统、超市会员积分系统、水电费系统、机票或火车票系统等,这些都需要后台数据库基础设施的支撑。举了这么多例子,应该是把数据库说明白了,至少能在大脑里面有个概念,知道这个东西是干啥的。
现在大数据被炒的红得发紫,而大数据的基础也是数据,由此可见,数据是一个企业的核心资源,说它是企业的立身之本、发展之基都不为过,因此,维护数据库的数据库管理员(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今天就介绍这么多,有兴趣的可以继续深挖,希望我的介绍能让你对数据库有一个更深入的认识。如果有志于在这方面发展的话,就让我们一起跟往事干杯从头再来。
成功安装Oracle g数据库后 你会发现自己电脑运行速度会变慢 配置较低的电脑甚至出现非常卡的状况 通过禁止非必须开启的Oracle服务可以提升电脑的运行速度 那么 具体该怎么做呢
按照win 位环境下Oracle g R 安装详解中的方法成功安装Oracle g后 共有 个服务 分别为Oracle ORCL VSS Writer Service OracleDBConsoleorcl OracleJobSchedulerORCL
OracleMTSRecoveryService OracleOraDb g_home ClrAgent OracleOraDb g_home TNSListener OracleServiceORCL 其中OracleDBConsoleorcl
OracleMTSRecoveryService OracleOraDb g_home TNSListener OracleServiceORCL是默认自动启动的 OracleJobSchedulerORCL是默认自动禁止的 其余的默认为手动 *** 作 假设您的全局数据库名为orcl 则您的Oracle服务应该和上面的一样 如下图所示
这七个服务的含义分别为
Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务 VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘 阵列等)创建高保真的时间点映像 即映射拷贝(shadow copy) 它可以在多卷或者单个卷上创建映射拷贝 同时不会影响到系统的系统能 (非必须启动)
OracleDBConsoleorcl Oracle数据库控制台服务 orcl是Oracle的实例标识 默认的实例为orcl 在运行Enterprise Manager(企业管理器OEM)的时候 需要启动这个服务 (非必须启动)
OracleJobSchedulerORCL Oracle作业调度(定时器)服务 ORCL是Oracle实例标识 (非必须启动)
OracleMTSRecoveryService 服务端控制 该服务允许数据库充当一个微软事务服务器MTS /+对象和分布式环境下的事务的资源管理器 (非必须启动)
OracleOraDb g_home ClrAgent Oracle数据库 NET扩展服务的一部分 (非必须启动)
OracleOraDb g_home TNSListener 监听器服务 服务只有在数据库需要远程访问的时候才需要 (非必须启动 下面会有详细详解)
OracleServiceORCL 数据库服务(数据库实例) 是Oracle核心服务该服务 是数据库启动的基础 只有该服务启动 Oracle数据库才能正常启动 (必须启动)
那么在开发的时候到底需要启动哪些服务呢
对新手来说 要是只用Oracle自带的sqlplus的话 只要启动OracleServiceORCL即可 要是使用PL/SQL Developer等第三方工具的话 OracleOraDb g_home TNSListener服务也要开启 OracleDBConsoleorcl是进入基于web的EM必须开启的 其余服务很少用
lishixinzhi/Article/program/Oracle/201311/19119
Oracle 发布了 PL/SQL 和 Java 应用编程接口 (API) 后 市场上才会推出可利用这一新发布的 API 的点击工具或构建器 这一般是最好的做法 利用这一实践 开发人员可将新功能即刻融入其应用程序中以使其企业从中获益
然而 开发可利用新发布 API 的专门工具需要投入大量精力 因此 理想情况下 从 API 发布直至推出利用该 API 的直观最终用户工具 至少需要数个月 而实际上 这一滞后时间通常为一年或两年 同时 利用 API 可能需要企业使用自己的工具 或更为常见的是利用即席解决方案 例如在报表生成器和电子表格中嵌入对 API 的调用
一种常用方法是将 API 包装在数个脚本中 然后使用自定义按钮和菜单从电子表格访问这些脚本 但是 这一方法的主要缺点在于如今的电子表格是将单个单元格中的文本和数字作为值来进行处理的 因此它通常不是处理新功能的合适工具
本文将介绍如何快速将分析和其他 API 整合至一个最终用户可从其中轻松访问新代码的电子表格平台 作为指导性示例 其中还将阐释了如何将Oracle 数据挖掘(PL/SQL) API 重新打包为 Java API 以及如何从电子表格调用的 J Cells 访问该 API J Cells 完全以 Oracle JDeveloper 编写 它不仅可以将文本和数字作为单元格的值 而且还可将 Java 对象作为值进行处理 并可从其单元格直接访问任何 Java API 以即刻进行部署
电子表格平台
我使用的是电子表格界面 只是其中允许用户在单元格中创建任何 Java 对象以及使用基元 Java 类型 每个单元格都可用作另一个单元格的变量 用户可以选择在单元格中直接编写 Java 代码 或使用其他格式 将电子表格界面和对象(而不仅是常规电子表格中的数字和文本)使用相结合是自动进行的 J Cells 为每个适合单元格的对象计算指示值 这一指示值给予用户有关显示对象的充足线索 此外 还会实施一个完整的值系统 可根据需要(例如 当用户双击给定单元格时)以各种其他格式显示对象 即使在电子表格中 因为公式可能定义比较复杂 所以系统还需识别要创建的对象是否具有相关的向导 向导通常是一个特定于某个对象类型的图形化代码生成器 稍后本文示例将说明如何在 J Cells 中使用向导
图 显示了本文示例的电子表格界面
图 J Cells 的电子表格界面
数据挖掘 API
Oracle 支持两种兼容的 API 以访问数据库中的数据挖掘功能 第一种是 PL/SQL API 其中包括 DBMS_DATA_MINING 程序包 另一种也是 Java API 称为 Oracle 数据挖掘 Java API 因为 J Cells 目前最适合访问 Java API 所以需要以可直接从 Java 对其进行访问的方式打包 PL/SQL API 两个主要的 Oracle 数据挖掘概念是设置和模型 设置概念基本围绕带有两列(setting_name 和 setting_value)的设置表构建;其中 setting_name 是挖掘算法使用的属性名 而 setting_value 是与该属性相对应的值
DBMS_DATA_MINING 程序包包含若干过程 包括 CREATE_MODEL 和 APPLY CREATE_MODEL 过程根据设置表(作为过程的参数之一提供)中的值为给定挖掘函数和数据集创建挖掘模型 该过程简单且易于使用 实际上 由用户来为要创建的模型 要使用的挖掘函数 包含要使用的数据的表 要建模的列以及设置表提供名称 这一方法的优点在于所有不同算法都可以类似的方法调用 每种算法的微调都整合至设置表中 但在很多情况下 各种设置系数可由算法本身自动决定 设置表中条目的复杂性根据用户的专业技术背景和算法而有所不同 许多专业用户可能希望手动设置所有可能的系数 而我们中的多数人更可能乐意系统自动给出适用设置 Oracle 提供了一个要用作设置键的常量列表 以及命名为常量或数字间隔的值
表 algo_name(算法名)设置键的值
Oracle 的算法名 (algo_name) 键的常量值如上所示 对于其中的每一个值 使用了可能键和值的不同集等 以下(图 )显示了向导函数是如何将这些键映射到树结构 并允许用户通过 *** 纵该设置树定义设置表的
作为 Oracle 数据库中创建的挖掘模型 DBMS_DATA_MINING APPLY 过程用于将该模型应用到新数据集 而且 这是一个易于使用的过程 要求只输入挖掘模型名 包含新数据集的表名 用于识别新数据集中行的列以及结果数据集名 Java 类 OracleMiningModel (below) 在调用预测 评分或 apply 方法时 都会利用该 APPLY 过程 此外 DBMS_DATA_MINING 程序包包含若干根据类型将各个模型详细信息作为结果集或以 XML 格式返回的函数 这些细节函数也可通过使用 OracleMiningModel 类的实例(代表数据库中的不同模型)进行访问
此处可通过创建一个称为 OracleModelSettings 的 Java 类以 Java 打包 (PL/SQL) 设置概念 该类具有灵活的构造函数和各种签名 包括
public OracleModelSettings ( String modelSettingsName
Connection databaseConnection
String[] keyToValueStringMap)
throws SQLException
keyToValueStringMap 只是表单 > 的字符串数组 该数组详细说明了设置表的行 以及负责在数据库中维护设置表的类
类似地 此处也可通过创建一个称为 OracleMiningModel 的 Java 类以 Java 打包模型概念 该类具有构造函数和各种签名 包括
public OracleMiningModel ( String modelName
OracleModelSettings oms
String[] keyToValueStringMap)
boolean recreate)
throws SQLException
此处使用 keyToValueMappings 数组来确定在 Oracle 数据库中创建数据挖掘模型所需的算法以及其他命名属性 该类的用途就是创建和维护数据挖掘模型 此外 OracleMiningModel 类还定义了用于检索以及将该模型应用到新数据集的方法 这些方法包括以下各项 此处只显示了一小部分
public OracleResultSet infoAprioriAssociationRules(int topn)
public OracleResultSet infoAprioriFrequentItemsets(int topn)
public OracleResultSet infoAdaptiveBayesNeork()
public OracleResultSet infoAIMinimumDescLength()
public OracleResultSet infoKMeans()
public OracleResultSet infoNaiveBayes()
public OracleResultSet infoNonnegativeMatrixFactorization()
public OracleResultSet infoOCluster()
public OracleResultSet infoSupportVectorMachines()
public XMLType infoDecisionTree()
public Object getPrediction(String[] signature double[] doubleVal)
public HashMap score(String[] signature double[] doubleVal)
public OracleResultSet apply( String dataTable
String caseID
String resultTable
String schema
boolean overwrite)
除了具有上述签名外 所有的方法可能都会引发 SQL 意外 一旦可以从两个简单类来管理数据挖掘功能后 就可调用该电子表格平台来访问任何可用的数据挖掘算法 以在 Oracle 数据库中建模数据集
数据挖掘示例
因此 来看一个在该系统中编写的小数据挖掘模型 该模型可通过访问 Oracle 数据库创建并运行 ODM (Oracle Data Mining) 回归模型 该回归模型的用途是根据输入(例如血压 高度和体重)预测心率 使用 J Cells 可直接访问 Java API 以实例化对象并在对象上调用方法 首先 连接至 Oracle 数据库 DataSource 对象可通过将以下公式
() = ~ OracleDataSource( agust agust dbVaio vaioFS );
输入到电子表格的单元格 b 中进行实例化 Tilde 符号 (~) 表示缩写符号 允许 J Cells 将(右侧)语句转换为构造函数t new cell OracleDataSource( agust agust dbVaio vaioFS ); 使系统能够以用户 agust 的身份访问服务器 vaioFS 上的数据库 dbVaio
现在 可通过在 DataSource 对象上调用正确的方法(例如在单元格 b 和 b 中分别输入以下公式) 获得数据库连接以及检查数据库中的源数据
() = b getConnection();
() = b query( select from pulse_clinical );
第一个语句将向单元格 b 中返回一个 java sql Connection 对象 第二个语句将向单元格 b 中返回一个 java sql ResultSet 对象 只需通过双击单元格 (b ) 就可检查结果集 该 *** 作会将结果表显示在表格框架中以便查看
迄今为止 我只在该电子表格中创建了几个简单的数据对象 现在 可以调用数据挖掘 API 来定义一个设置对象 然后创建一个简单的数据挖掘模型 首先 通过在单元格 b 中输入以下语句来创建一个设置对象
() = new cell odm OracleModelSettings( xyz_settings b
new String[]{
algo_name > algo_support_vector_machines
svms_kernel_function > svms_linear } );
立刻我发现该公式中的问题是最终用户友好的 因此 注册一个带有 J Cells 的向导 在提示用户后自动生成该公式 可能是个不错的办法 一般 电子表格在用户创建复杂公式时都会给予帮助 因此用户可以期望在实例化对象时获得指导
部署的向导如图 所示
图 典型的向导界面
同样 数据挖掘模型通过使用向导或输入公式来创建 在这两种情况中 结果模型都是在直接指定 API 调用的单元格 b 中进行实例化
()= new cell odm OracleMiningModel( xyz_model b
new String[]{
data_table_name > pulse_clinical
mining_function > regression
target_column_name > pulse
case_id_column_name > subject }
false );
使用该公式结果实例化数据挖掘模型将在 Oracle 数据库中生成标准的 Oracle 数据挖掘模型 该模型可通过双击单元格 b 进行查看 模型的完整值如图 所示
图 查看单元格 b 中的模型
使用上述的 OracleMiningModel 方法 可将该模型应用到 Oracle 数据库中的数据集 作为一个简单的交互式评分模型(一般适用于电子表格应用程序) 用户可能希望输入血压 高度和体重值 让数据库使用刚才定义的模型预测心率 这个在模型对象上定义的 Java API 方法 getPrediction 非常适合这一用途 在单元格 e e e 以及 e 中(以单元格 b 中签名数组指定的顺序)键入输入值后 通过输入以下公式可进行评分
() = b getPrediction(b new double[]{e e e e });
同样 该公式将直接访问 Java API 以获取并在单元格 e 中显示评分结果 如图 所示
图 将模型应用到输入值
电子表格优点
电子表格在最终用户之间的流行多少有些令人费解 一方面 当今最常用的电子表格系统长期以来令许多开发人员气馁 他们习惯于更为灵活 强大的系统 而另一方面 对于非开发人员而言 使用电子表格系统具有以下一些明显优点 无须构建图形化用户界面 单独构建和测试每个公式(代码)以及隐藏公式 看到的是更为简单的计算结果 这些优点只存在于当今流行的电子表格中 使用公式可将数字或文本返回到单元格 而许多系统主要受限于此 此处演示了如何移除这一限制并创建更为强大的工具 然后用它来直接访问 Oracle 的数据挖掘模型功能以及其他 API
结论
lishixinzhi/Article/program/Oracle/201311/17437
Oracle的数据库:
一系列物理文件的集合
包括控制文件、数据文件、联机日志文件、参数文件、密码文件等
即:Oracle Database = Controlfile + datafile + logfiel + spfile +
1控制文件(controlfile)
数据库的名字,检查点信息,数据库创建的时间戳
所有的数据文件,联机日志文件,归档日志文件信息
备份信息等
2数据文件(datafile)
包含了用户和应用程序的所有数据
--查看数据文件信息
3联机日志文件
记录了用户对数据库的所有 *** 作,一个数据库中至少要有两个日志组文件,每个日志组中至少有一个日志成员
日志组中的多个日志成员是互为镜相关系
4归档日志文件
Oracle可以运行在两种模式之中,归档模式和非归档模式。在归档模式中,为了保存用户的所有修改,
在联机日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。
用户恢复意外情况出现的数据丢失、异常等。
5参数文件(pfile和spfile)
initSIDora或initora文件,通常位于:$ORACLE_BASE/admin/<SID>/pfile
初始化文件记载了许多数据库的启动参数,如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载)
6其他文件
密码文件:用于Oracle 的具有sysdba权限用户的认证
告警日志文件:报警日志文件(alertlog或alrtora),记录数据库启动,关闭和一些重要的出错信息
查看路径:select value from v$PARAMETER where name =‘background_dump_dest’;
7数据库逻辑组织结构
表空间、段、区、块
一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库
一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间
一个数据文件由一个或多个 *** 作系统块组成,每一个 *** 作系统块只能数以一个数据文件
一个表空间可以包含一个或多个段,一个段只能属于一个表空间
一个段由一个或多个区组成,每一个区只能属于一个段
一个区由一个或多个Oracle 块组成,每一个Oracle块只能属于一个区
一个区只能属于一个数据文件,数据文件的空间可以分配到一个或多个区
一个Oracle 块由一个或多个 *** 作系统块组成,一个 *** 作系统块是一个Oracle块的一部分
oracle实例:
一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。
即:Oracle Server = Oracle Instance + Oracle Database
Oracle实例
包括了内存结构(SGA)和一系列后台进程(Background Process),两者合起来称为一个Oracle实例
即:Oracle Instance = SGA + Background Process
Oracle内存结构
包含系统全局区(SGA)和程序全局区(PGA)
即Oracle Memory Structures = SGA + PGA
SGA由服务器和后台进程共享
PGA包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA是
只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。即由服务器进程产生。
1SGA
系统全局区SGA,SGA = 数据缓冲区+ 重做日志缓冲区+ 共享池+ 大池+ Java 池+ 流池
系统全局区是动态的,由参数SGA_MAX_SIZE决定。
查看当前系统的SGA大小:show parameter sga_max_size;
要修改:alter system set sga_max_size=1200m scope=spfile;
因为实例内存的分配是在数据库启动时进行的,所以要让修改生效,要重启数据库。
ORACLE 10G 引入了ASMM(自动共享内存管理),DBA只需设置SGA_TARGET,ORACLE就会
自动的对共享池、JAVA池、大池、数据缓冲区、流池进行自动调配。取消自动调配就是
sga_target设为。
数据缓冲区(Database buffer cache):存储从数据文件中获得的数据块的镜像
大小由db_cache_size 决定
查看:show parameter db_cache_size;
设置:alter system set db_cache_size=800M;
重做日志缓冲区(Redo log buffer):对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将
它写入磁盘,大小由LOG_BUFFER决定
共享池(Shared pool):是SGA中最关键的内存片段,共享池主要由库缓存(共享SQL区和PL/SQL区)和数据
字典缓存组成,它的作用是存放频繁使用的sql,在有限的容量下,数据库系统根据一定的算法决
定何时释放共享池中的sql。
库缓存大小由shared_pool_size 决定
查看:show parameter shared_pool_size
修改:alter system set shared_pool_size=120m;
数据字典缓存:
存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息
大小由shared_pool_size 决定,不能单独指定
大池(Large pool):是一个可选的区域,用于一些大型的进程如Oracle的备份恢复 *** 作、IO服务器进程等
Java 池:该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小
流池(Stream pool):被Oracle流所使用
2PGA
是为每个用户进程连接ORACLE数据库保留的内存
进程创建时分配,进程结束时释放,只能被一个进程使用
PGA包括了以下几个结构:
()排序区
()游标状态区
()会话信息区
()堆栈区
由参数:pga_aggregate_target 决定
3几类进程:用户进程,服务器进程,后台进程,其它可选进程
用户进程
在用户连接数据库产生,请求oracle服务器连接,必须要先建立一个连接,不会直接和oracle服务器连接
服务器进程
当连接实例并建立用户会话时产生,独立服务器或者提供共享服务器都能产生
后台进程
维持物理和内存之间的联系,用来管理数据库的读写,恢复和监视等工作。
Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。
在Unix机器上,Oracle后台进程相对于 *** 作系统进程,也就是说,一个Oracle后台进程将启动一个 *** 作
系统进程。
在Windows机器上,Oracle后台进程相对于 *** 作系统线程,打开任务管理器,我们只能看到一个
ORACLEEXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。
必须要有的后台进程
DBWn -->数据库写进程
PMON -->程序监控进程
SMON -->系统监控进程
LGWr -->日志写进程
CKPT -->检查点进程
可选进程:
ARCN 归档进程
RECO
Snnn
pnnn
DBWn(数据库写进程)
负责将修改过的数据块从数据库缓冲区高速缓存写入磁盘上的数据文件中
写入条件:
发生检查点
脏缓存达到限制
没有自由的缓存
超时发生
表空间离线
表空间只读
表被删除或者截断
开始备份表空间
可以修改数据写进程的数量
alter system set db_writer_processes=3 scope=spfile;
PMON(程序监控进程)
清除失效的用户进程,释放用户进程所用的资源。
如PMON将回滚未提交的工作,释放锁,释放分配给失败进程的SGA资源。
清除失败的进程
回滚事务
释放锁
释放其他资源
SMON(系统监控进程)
检查数据库的一致性,当启动失败时完成灾难恢复等
实列恢复时,前滚所有重做日志中的文件,打开数据库为了用户能访问,回滚未提交的事务,释放临时表空间
清除临时空间,聚结空闲空间,从不可用的文件中恢复事务的活动,OPS中失败节点的实例恢复
清除OBJ$表
缩减回滚段
使回滚段脱机
LGWr(日志写进程)
将重做日志缓冲区中的更改写入在线重做日志文件
条件:
提交的时候(commit)
redo log buffer达到1/3满
每隔3秒
有大于1MB 重做日志缓冲区未被写入磁盘
DBWR需要写入的数据的SCN号大于LGWR 记录的SCN号,DBWR 触发LGWR写入
超时
在dbwr进程些之前写日志
CKPT(检查点进程)
DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一致,CKPT进程负责同步数据文件,
日志文件和控制文件
CKPT会更新数据文件/控制文件的头信息
条件:
在日志切换的时候
数据库用immediate ,transaction ,normal选项shutdown数据库的时候
根据初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的设置的数值来确定
用户触发
ARCN(归档进程)
在每次日志切换时把已满的日志组进行备份或归档
条件:
数据库以归档方式运行的时候
RECO
负责解决分布事物中的故障。Oracle可以连接远程的多个数据库,当由于网络问题,有些事物处于悬而未决的状态。
RECO进程试图建立与远程服务器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。
Server Process(服务进程)
分为专用服务进程(Dedicated Server Process)和共享服务进程(MultiTreaded Server Process)
专用服务进程:一个服务进程对应多个用户进程,轮流为用户进程服务。
用户进程(User Process)、服务进程(Server Process)、后台进程(Background Processes)的启动
用户进程: 数据库用户请求Oralce server会话时被启动
服务进程:当用户会话启动后,连接到Oracle实例时该进程被启动
后台进程:当Oracle实例被启动时,启动相关的后台进程
由oracle公司开发的,面向internet计算的,支技关系对象型的,分布式的数据库产品。是一个高度集的互联网应用平台,为企业数据数据存储提交高性能的数据管理系统。
Oracle数据库的主要特点:
1、支持多用户、大事务量的事务处理
2、数据安全性和完整性控制
3、支持分布式数据处理
4、可移植性
5、Oracle数据库基于客户端/服务器技术
以上就是关于数据库是什么Oracle又是啥玩意全部的内容,包括:数据库是什么Oracle又是啥玩意、Oracle 11g必须开启的服务及服务详细介绍、使用Oracle数据挖掘API方法详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)