oracle笔记

来源:互联网 发布:视频加速器软件 编辑:程序博客网 时间:2024/06/11 16:22

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 vinstance;NOselectprotectionlevelfromvdatabase; 查看是否有备用数据库
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  --相当于断电,实例立即终止,不会将任何数据写入磁盘,也不会按照某种次序依次完成许多未完成的过程。
0 0
原创粉丝点击