Oracle体系结构与组件
Oracle体系结构和组件
系统的体系结构决定了数据库如何使用内存、硬件和网络,以及哪个进程或程序运行在哪台机器上。Oracle数据库服务器有两个主要的组成部分:数据库和实例(instance)。Oracle数据库用于存储和检索信息,是数据的集合。Oracle实例是指数据库服务器的内存及相关处理程序。
图示并解释Oracle体系结构和组件Oracle体系结构如下图所示:
物理结构一个Oracle数据库的物理结构,是由为数据库信息提供真实屋物理存储的操作系统文件决定的。
控制文件
数据文件
重做日志文件
内存结构Oracle内存结构由两个存储区域组成:
系统全局区(System Global Area,SGA):在实例启动时被分配,是Oracle实例的一个基本组件
程序全局区(Program Global Area,PGA):在服务器进程启动时分配
系统全局区
SGA(系统全局区)包括共享池、数据库缓冲区高速缓存、重做日志缓冲区、Java池、大型共享池等(锁管理、统计数据)。
SGA能配置两个可选存储结构:大池和Java池
SGA是可变大小的,使用SGA_MAX_ ...
Oracle存储结构
Oracle存储结构存储结构数据库的主要功能是保存数据,所以可以将数据库看成是保存数据的容器。数据库的存储结构也就是数据库存储数据的结构或方式、方法、方案等。
oracle 数据库的存储结构分为物理存储结构和逻辑存储结构两种。
物理存储结构主要用于描述在 oracle 数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关。
逻辑存储结构主要描述oracle 数据库内部数据的组织和管理方式,即在数据库管理系统的层面中如何组织和管理数据,与操作系统没有关系。
两者的关系 oracle 数据库的物理存储结构与逻辑存储结构既相互独立又相互联系,如下图:
从上面图中可以看出数据库物理存储结构和逻辑存储结构的基本关系:
一个数据库在物理上包含多个数据文件,在逻辑上包含多个表空间
一个表空间包含一个或多个数据文件,一个数据文件只能从属于某个表空间
数据库的逻辑块由一个或多个操作系统块组成
一个逻辑区只能从属于一个数据文件,而一个数据文件可包括一个或多个逻辑区
逻辑存储结构
是从逻辑的角度定义数据库的构成,比物理存储结构更高一层,许多初始化参数都是针对逻辑 ...
Oracle数据库的启动过程和关闭模式
Oracle数据库的启动过程和关闭模式。一 启动数据库Oracle启动过程涉及几种模式,这些模式涉及不同的文件,每个状态下数据库做不同的事情,同时这些模式适用于不同的维护需求,主要的模式有三种:NOMOUNT、MOUNT、OPEN。
NOMOUNT:启动数据库实例, 此时读取参数文件,但是不加载数据库;
MOUNT:启动数据库实例,加载数据库,但是数据库处于关闭状态;
OPEN: 启动数据库实例,加载并打开数据库;
FORCE: 终止实例并重启数据库,这种模式在数据库关闭或者启动遇到问题时使用,这种方式不到万不得已时不要使用,会有数据丢失;
1 NOMOUNT 启动例程
在启动例程时,这些内存结构和服务进程得到分配、初始化和启动,以便Oracle能够管理数据库
此时的例程还没有与一个确定的数据库相联系,或者说数据库是否存在对例程的启动并没有影响,即还没有装载数据库
若初始化参数文件设置有误,则无法启动例程
这种模式只会创建实例(创建Oracle实例的各种内存结构与服务进程,其中有5个进程必须启动, DBWR、LGWR、SMON、PMON、CKPT),并不加载数据库,也不会打开 ...
C++连接Oracle
C++连接Oracle常见的几种连接Oracle的方式
ODAC,通过 COM 的形式调用 Oracle,缺点是需要装 ODAC 客户端,而且体积不小
OCCI,通过动态库调用 Oracle, 不需要安装客户端,只需要几个 DLL 即可,问题是 Oracle 12.2 开始支持 VS2015,但不支持 XP
OCI,C语言的 API,调用起来稍显复杂
ODPI-C,也是C语言的 API,在 OCI 基础上做了一层封装,对比前两者,仍然不够简洁
cx_Oracle,Python 的第三方库,各方面都满足要求,但是甲方禁止使用 Python
ODBC,效率估计最低了吧
Pro*C,个人比较反感这种方案,不多说了
OTL,基于模板和流的 C++ 库,依赖 OCI
而使用C/C++操作Oracle数据库的方法有以下几种种:
pro*C:易入门,但程序代码繁琐;
OCI:Oracle Call Interface,功能强大,性能卓越,但难以驾驭;
OCI是Oracle提供的C语言函数库,如果不对OCI进行封装,C程序员对Oracle的开发比较困难。
freecplu ...
数据库主键外键
一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键 。
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
比如,A表中的一个字段,是B表的主键,那他就可以是 ...
初识VUE
VUE学习之路
前端样式整理
span list 12345678910111213141516171819202122231<span class="fas faa-ring animated-hover" style="border-bottom:3px solid green">《半小时漫画中国哲学史》</span>2<span style="text-align:center;font-size:20px;font:30px 书体坊兰亭体;color:blueviolent;word-spacing:30px;">“ 既许一人以偏爱,愿尽余生之慷慨 ”</span>3<span style="class: faa-bounce animated-hover;border-bottom: 5px solid #8F81EF;">[data.json文件链接](https://pan.baidu.com/s/1omzU65YMpJr0jPPFItZ7SA )</ ...
HTML和Markdown设置下换线
HTML以及编辑的Markdown如何设置下划线样式本篇文章就给大家介绍css添加文字下划线样式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
常规办法1<u>这里是常规办法添加下划线</u>
效果如下:
这里是常规办法添加下划线
text-decoration属性1<span style="text-decoration:underline">这是text-decoration属性设置的下划线。</span>
效果如下:
这是text-decoration属性设置的下划线。
border-bottom属性border-bottom属性使用起来比较灵活,并且可以设置线的格式,因此能满足你一篇文章的不同需求~~~
12345<p>这是第实线样式,<span style="border-bottom: 1px solid #000000;">Mming‘s Blog</span>! </p> <p>这是变粗的实线,&l ...