sql缺少高级数据操作的过程结构,在pl/sql中可以嵌入sql调用,因此pl/sql应用程序可以使用sql来检索数据库中的一行或多行数据,根据其内容可以进行很多操作。然后发出更多的sql将行写回数据库。
java也有类似的作用。
使用c语言或其他过程语言编写的应用程序使用ORCALE CALL INTERFACE来建立与orcale数据库的会话,这些库是orcale所特有的,廋java按照标准定义虚拟数据库,允许运行它的容器将虚拟数据库映射到orcale数据库,
一些用户不愿意使用3GL来开发数据库应用程序,于是orcale公司开发了Orcale Developer Suite.
Orcale DataBase Server 是又实例和数据库共同组成,实例组件是在启动时初始化一些操作系统进程及内存结构,而数据库组件是用于数据存储和数据库操作的物理文件,
单实例数据库,实例由进程和内存结构组成,关闭后将消失。构成数据库物理结构的是数据文件、重做日志和控制文件。Orcale体系结构确保将逻辑结构从物理文件中抽象出来,编程人员只负责与逻辑数据打交道(比如表)。只有数据库管理员才有权了解物理结构和数据结构。物理结构和逻辑结构的之间的关联在数据字典中维护和记录,数据字典用来描述整个数据库的元数据,
通过查询数据字典中的某些视图,数据库管理员可以准确的找到每个表每一部分的位置。数据词典是存储在数据库中的一组表。
数据库的标准要求就是数据不丢失,于是这意味着必须做好备份。同时备份中间的所做的任何变动都能够按某种方式捕获,orcale所做的重做日志实现了此功能。
分布式体系结构,包含实时应用集群(RAC),流(多个数据库直接的传播事物),数据保护(主数据库更新备用数据库)。
select parallel from v
instance;如果是单实例就返回NOselectprotectionlevelfromv
database; 查看是否有备用数据库
select * from dba_streams_administrator 判断是否配置流
实例的内存机构
是由系统全局(SGA)的共享内存和大量的后台进程组成,SGA主要包含数据缓存区缓存,日志缓存区,共享池,大池,java池,流池。。以及用户会话不共享的PGA。
数据缓存区是orcale执行Sql的工作区域,用户会话不会直接更新磁盘上的数据,更新的是缓存区的数据。
实例的进程结构 包含很多进程
Orcale通过表空间的方式,将逻辑存储从物理存储中抽象出来,表空间在逻辑上是一段或几段的集合,在物理上就是一个或多个数据文件的集合,一个数据文件有可能分布在多个表空间,通过在在段和文件之间插入表空间实体,解决多对多的问题。
在创建数据库时必须创建很多段,这些事数据词典的段,这些段在两个命名空间中SYSTEM和SYSAUX表空间中,
只有找到SYSTEM表空间,实例才能访问数据字典,才可能打开数据库
SQL总是引用数据字典中定义的对象,要针对表的简单的查询,orcale服务器必须首先查询数据字典,看表是否存在,此后,必须找到表的具体位置,
总结
单实例体系结构
oracle服务器是连接数据库的实例
实例包含共享内存块以及一组后台进程
数据库是磁盘上的一组文件
用户会话是连接到服务器的用户进程
实例内存结构
实例共享内存是系统全局区
会话的专用区域是程序全局区
实例进程结构
当用户连接时,将根据需要启动会话服务器进程
后台进程在实例启动时启动,在关闭实例前一直存在
服务器进程从数据库读取,后台进程对数据库执行写操作
某些后台进程始终存在
数据库存储结构
一个段包含多个区间,一个区间包含多个ORACLE块,一个块包含多个操作系统块
一个段可以包含位于多个数据文件的区间
启动和关闭数据库的多个阶段
Oracle建议的启动顺序,一般情况下是这样
1、启动Database Control(用于管理数据库的工具)
2、启动数据库监听器
3、启动数据库
Database Control与实例一一对应,有多个实例,就有多个Database Control,在ORACLE_HOME/bin下可emctl程序,需要使用web浏览器连接到Database Control
mctl status dbconsole
emctl start dbconsole
emctl stop dbconsole
https://localhost:1158/em
启动数据库监听器,在ORACLE_HOME/bin下
lsnrctl status [LISTENER]
lsnrctl start [LISTENER]
sqlplus是一款简单的向数据库发送sql命令的客户端 ,可以使用sqlplus /nolog连接
启动/关闭数据库(准确的说是启动/关闭实例)
使用适当的身份进行连接 connect / as sysdba
其中 sysoper 有权发出如下命令
STARTUP
SHUTDOWN
ALTER DATABASE [MOUNT|OPEN|CLOSE|DIMOUNT]
ALTER [DATABASE|TABLESPACE] [BEGIN|END] BACKUP
RECOVER
其中sysdba具有sysoper的所以权限,此外还可以创建数据库,执行恢复,创建其他用户
因此,只要以SYSDBA角色登陆的用户,拥有最大的权限。
注意实例和数据库是独立的,当实例停止时,没有任何内存结构和数据库存在,但数据库依然存在并工作,因此当某一实例停止后,其他实例照样可以连接数据库
数据库启动时共包含以下四种状态,只要执行startup命令,会一次完成以下四种状态
SHUTDOWN --关闭与数据库相关的所以文件,同时实例不存在
NOMOUNT --实例已构建在内存中,但没有连接任何数据库
MOUNT --实例定位并读取数据库的控制文件
OPEN --定位并打开所有数据库文件,终端用户此时可以使用数据库
关闭状态有如下几种,前三种是干净的,一致的,有序的,后一种是无序的操作状态
SHUTDOWN [NOMAL|TRANSACTIONAL|IMMEDIATE|ABORT]
nomal --默认状态 不允许任何新的用户连接,但允许当前用户继续连接,只有所有当前用户自愿退出,数据库才真正的关闭
transactional --不允许任何新的用户连接,不存在某个事务中的会话都会被停止,允许事务中的会话完成之后,一旦所以会话完成,数据库才真正关闭
immediate --不允许任何新用户连接,当前连接的所有都被终止,任何活动的事务都被回滚,之后数据库关闭
abort --相当于断电,实例立即终止,不会将任何数据写入磁盘,也不会按照某种次序依次完成许多未完成的过程。