主页 > 大数据 > oracle数据库应用结构?

oracle数据库应用结构?

一、oracle数据库应用结构?

1.客户/服务器结构

客户/服务器(Client/Server,C/S)结构是两层结构,在C/S结构中,需要在前端客户机上安装应用程序,通过网络连接访问后台数据库服务器。用户信息的输入、逻辑的处理和结果的返回都在客户端完成,后台数据库服务器接收客户端对数据库的操作请求并执行。

C/S结构的优点是客户机与服务器可采用不同软、硬件系统,这样做的好处是应用与服务分离,安全性高,执行速度快;缺点是维护、升级不方便。

2.终端/服务器结构

终端/服务器结构类似于客户/服务器结构。与客户/服务器结构不同之处在于,其所有的软件安装、配置、运行、通信、数据存储等都在服务器端完成,终端只作为输入和输出的设备,直接运行服务器上的应用程序,而没有处理能力。终端把鼠标和键盘输入传递到服务器上集中处理,服务器把信息处理结果传回终端。

终端/服务器结构的优点是便于实现集中管理,系统安全性高,网络负荷低,对终端设备的要求低;缺点是对服务器性能的要求较高。

3.浏览器/服务器结构

浏览器/服务器(Browser/Server,B/S)结构是3层结构,在B/S结构中,客户端只需要安装浏览器就可以了,不需要安装具体的应用程序;中间的Web服务器层是连接前端客户机与后台数据库服务器的桥梁,所有的数据计算和应用逻辑处理都在此层实现。用户通过浏览器输入请求,传到Web服务器进行处理。如果需要,Web服务器与数据库服务器进行交互,再将处理结果返回给用户。

B/S结构的优点是通过Web服务器处理应用程序逻辑,这样方便了应用程序的维护和升级。通过增加Web服务器的数量可以增加支持客户机的数量。其缺点是增加了网络连接环节,降低了执行效率,同时也降低了系统的安全性。

4. 分布式数据库的系统结构

数据库系统按数据分布方式的不同可以分为集中式数据库和分布式数据库。集中式数据库是将数据库集中在一台数据库服务器中,而分布式数据库是由分布于计算机网络上的多个逻辑相关的数据库所组成的集合,每个数据库都具有独立的处理能力,可以执行局部应用,也可以通过网络执行全局应用

二、oracle数据库应用结构包括?

Oracle数据库的体系结构包括四个方面:数据库的物理结构、逻辑结构、内存结构及进程。

1. 物理结构

物理数据库结构是由构成数据库的操作系统文件所决定,Oracle数据库文件包括:

数据文件(Data File)

数据文件用来存储数据库中的全部数据,例如数据库表中的数据和索引数据.通常以为*.dbf格式,例如:userCIMS.dbf 。

日志文件(Redo Log File)

日志文件用于记录数据库所做的全部变更(如增加、删除、修改)、以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。

控制文件(Control File)

每个Oracle数据库都有相应的控制文件,它们是较小的二进制文件,用于记录数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。用于打开、存取数据库。名字通常为Ctrl*ctl 格式,如Ctrl1CIMS.ctl。

配置文件

配置文件记录Oracle数据库运行时的一些重要参数,如:数据块的大小,内存结构的配置等。名字通常为init*.ora 格式,如:initCIMS.ora 。

2 逻辑结构

Oracle数据库的逻辑结构描述了数据库从逻辑上如何来存储数据库中的数据。逻辑结构包括表空间、段、区、数据块和模式对象。数据库的逻辑结构将支配一个数据库如何使用系统的物理空间.模式对象及其之间的联系则描述了关系数据库之间的设计.

一个数据库从逻辑上说是由一个或多个表空间所组成,表空间是数据库中物理编组的数据仓库,每一个表空间是由段(segment)组成,一个段是由一组区(extent)所组成,一个区是由一组连续的数据库块(database block)组成,而一个数据库块对应硬盘上的一个或多个物理块。一个表空间存放一个或多个数据库的物理文件(即数据文件).一个数据库中的数据被逻辑地存储在表空间上。

表空间(tablespace)

Oracle数据库被划分为一个或多个称为表空间的逻辑结构,它包括两类表空间,System表空间和非System表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。。

一个表空间包含许多段,每个段有一些可以不连续的区组成,每个区由一组连续的数据块组成,数据块是数据库进行操作的最小单位。

每个表空间对应一个或多个数据文件,每个数据文件只能属于一个表空间。

数据库块(database block)

数据库块也称逻辑块或ORACLE块,它对应磁盘上一个或多个物理块,它的大小由初始化参数db-block-size(在文件init.ora中)决定,典型的大小是2k。Pckfree 和pctused 两个参数用来优化数据块空间的使用。

区(extent)

区是由一组连续的数据块所组成的数据库存储空间分配的逻辑单位。

段(segment)

段是一个或多个不连续的区的集合,它包括一个表空间内特定逻辑结构的所有数据,段不能跨表空间存放。Oracle数据库包括数据段、索引段、临时段、回滚段等。

模式对象(schema object)

Oracle数据库的模式对象包括表、视图、序列、同意词、索引、触发器、存储.过程等,关于它们将重点在后面章节介绍。

3.Oracle Server系统进程与内存结构

当在计算机服务器上启动Oracle数据库后,称服务器上启动了一个Oracle实例(Instance)。ORACLE 实例(Instance)是存取和控制数据库的软件机制,它包含系统全局区(SGA)和ORACLE进程两部分。SGA是系统为实例分配的一组共享内存缓冲区,用于存放数据库实例和控制信息,以实现对数据库中数据的治理和操作。

进程是操作系统中一个极为重要的概念。一个进程执行一组操作,完成一个特定的任务.对ORACLE数据库治理系统来说,进程由用户进程、服务器进程和后台进程所组成。

当用户运行一个应用程序时,系统就为它建立一个用户进程。服务器进程处理与之相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的ORACLE请求服务。

为了提高系统性能,更好地实现多用户功能,ORACLE还在系统后台启动一些后台进程,用于数据库数据操作。

系统进程的后台进程主要包括:

SMON 系统监控进程:(system monitor)负责完成自动实例恢复和回收分类(sort)表空间。

PMON 进程监控进程:(PRocess monitor)实现用户进程故障恢复、清理内存区和释放该进程所需资源等。

DBWR 数据库写进程:数据库缓冲区的治理进程。

在它的治理下,数据库缓冲区中总保持有一定数量的自由缓冲块,以确保用户进程总能找到供其使用的自由缓冲块。

LGWR 日志文件写进程:是日志缓冲区的治理进程,负责把日志缓冲区中的日志项写入磁盘中的日志文件上。每个实例只有一个LGWR进程。

ARCH 归档进程:(archiver process)把已经填满的在线日志文件拷贝到一个指定的存储设备上。仅当日志文件组开关(switch)出现时,才进行ARCH操作。ARCH不是必须的,而只有当自动归档可使用或者当手工归档请求时才发出。

RECO 恢复进程:是在具有分布式选项时使用的一个进程,主要用于解决引用分布式事务时所出现的故障。它只能在答应分布式事务的系统中出现。

LCKn 封锁进程:用于并行服务器系统,主要完成实例之间的封锁。

内存结构(SGA)

SGA是Oracle为一个实例分配的一组共享内存缓冲区,它包含该实例的数据和控制信息。SGA在实例启动时被自动分配,当实例关闭时被收回。数据库的所有数据操作都要通过SGA来进行。

SGA中内存根据存放信息的不同,可以分为如下几个区域:Buffer Cache:存放数据库中数据库块的拷贝。它是由一组缓冲块所组成,这些缓冲块为所有与该实例相链接的用户进程所共享。缓冲块的数目由初始化参数DB_BLOCK_BUFFERS确定,缓冲块的大小由初始化参数DB_BLOCK_SIZE确定。大的数据块可提高查询速度。它由DBWR操作。

b. 日志缓冲区Redo Log Buffer:存放数据操作的更改信息。它们以日志项(redo entry)的形式存放在日志缓冲区中。当需要进行数据库恢复时,日志项用于重构或回滚对数据库所做的变更。日志缓冲区的大小由初始化参数LOG_BUFFER确定。大的日志缓冲区可减少日志文件I/O的次数。后台进程LGWR将日志缓冲区中的信息写入磁盘的日志文件中,可启动ARCH后台进程进行日志信息归档。

c. 共享池Shared Pool:包含用来处理的SQL语句信息。它包含共享SQL区和数据字典存储区。共享SQL区包含执行特定的SQL语句所用的信息。数据字典区用于存放数据字典,它为所有用户进程所共享。

三、什么是oracle应用?

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

四、oracle怎么导出数据?

1、打开电脑左下角【开始菜单】,在右侧找到【运行】选项2、在弹出的运行栏输入【cmd】,点击确定3、在弹出的cmd命令行界面输入【exp】命令,点击回车4、此时进入oracle命令行界面,输入用户名和密码,点击回车5、登录成功设置导出数据参数,选择数据文件导出路径,点击回车6、参数设置完成,此时进行导出表数据操作7、操作完成找到存放的路径,可以看到此书生成一个DMP文件。

五、oracle怎样导出数据?

1、打开oracle数据库,点击登陆选项,点击文件选项,点击新建选项,最后点击sql窗口;

2、然后在sql窗口中进行编写sql语句的操作,勇sql语句进行查询出想要导出来的数值;

3、然后在查询出来数据的地方,不要选中数据,把鼠标放到空白单元格处进行鼠标右键操作,找到复制到Excel选项;

4、然后在复制到excel中选择想要保存的格式-->作为xls保存,打开后则是excel形式的数据;

5、默认的保存路径-->将鼠标放在excel名称上-->会出现路径-->根据路径打开即可。

六、oracle数据库里怎么把字体调大?

说的不太清楚

1,加大字体是在界面CSS上设置字号大小的

2,表示单个字节可以放多少个字

七、oracle查询日期最大的数据?

select * from table where 时间字段 = (select max( 时间字段) from table) 当然 时间字段 需要有索引

八、oracle怎样快速的插入数据?

谢邀。 我对oracle不是很了解,但我觉得插入三次是比78次要快的。因为插入的步骤是:

1. 去连接池去一个链接。

2. 插入操作。 假设同大小数据需要时间一样。

3. 把连接放回连接池。同样大小的数据,分更多次插入,虽然插入数据需要的时间一样,但是需要更多次的建立连接,所以时间的消耗更大。个人观点,有错请指正

九、Oracle如何查询相同的数据?

SELECT*

FROMt_infoa

WHERE((SELECTCOUNT(*)

FROMt_info

WHERETitle=a.Title)>1)

ORDERBYTitleDESC

一。查找重复记录

1。查找全部重复记录

Select*From表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)

2。过滤重复记录(只显示一条)

Select*FromHZTWhereIDIn(SelectMax(ID)FromHZTGroupByTitle)

注:此处显示ID最大一条记录

二。删除重复记录

1。删除全部重复记录(慎用)

Delete表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)

2。保留一条(这个应该是大多数人所需要的^_^)

DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)

注:此处保留ID最大一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select*frompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

deletefrompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

androwidnotin(selectmin(rowid)frompeoplegroupbypeopleIdhavingcount(peopleId)>1)

3、查找表中多余的重复记录(多个字段)

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

deletefromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

补充:

有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

selectdistinct*fromtableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

selectdistinct*into#TmpfromtableName

droptabletableName

select*intotableNamefrom#Tmp

droptable#Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

selectidentity(int,1,1)asautoID,*into#TmpfromtableName

selectmin(autoID)asautoIDinto#Tmp2from#TmpgroupbyName,autoID

select*from#TmpwhereautoIDin(selectautoIDfrom#tmp2)

十、oracle的数据引擎是什么?

oracle中不存在引擎的概念,数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

相关推荐