- 浏览: 223964 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wsj0051:
很好,一致纠结图片路径问题
Spring 发送普通邮件、夹带附件的邮件、嵌入网页或图片的邮件 使用方法 -
ejinxian:
值得学习,
ExtJS+FusionCharts(转) -
niewj:
不知道都是哪里来的。
111
一、基本术语
1.区分数据库实例(instance)和数据库(database)
数据库实例:
ORACLE实例 = 进程 + 进程所使用的内存(SGA),表示数据库当时的状态!
System Global Area(SGA) 和 Background Process 称为数据库的实例。当数据库关闭,实例就不存在了!
数据库:
固定的,包含数据文件,控制文件,日志文件,参数文件和归档日志文件等
2.数据库服务器(database Server)
包含数据库软件部分(SqlPlus,OEM,EXP/IMP等),数据库和实例组成!
1.表空间和数据文件
表空间:用于存储数据库表,索引和回滚段等对象的磁盘逻辑空间
表空间类型:
SYSTEM 表空间
用于存储Oracle内部表和数据字典的数据,如表名,列名,用户名等。
SYSAUX表空间
这个是在11G中新增加的,主要存储Oracle系统内部常用的样例用户对象。这个表空间由 oracle系统内部自动维护
Undo Tablespace
撤销表空间(Undo Tablespace) 用于存储撤销信息的表空间,当对数据库表进行修改(insert,update,delete等操作),oracle系统自动的使用这个撤销表空间来临时的存放修改钱的数据(Before Image)。当修改操作完成并提交(commit)后,oracle系统可根据需要保留修改前得数据时间长短来释放撤销表空间的部分空间。
User 表空间
这个是用户自己建立的表空间,可在这个表空间上建立各种对象,如表,索引等。
2.数据文件
数据文件(Data File)用于保存用户对应数据和Oracle系统数据的文件。每个表空间可以包含一个或多个数据文件。
系统数据:
管理用户数据和Oracle系统本身的数据,如用户建立的表的名称,列的名称已经字段类型等属于用户数据,这些都自动的存放在系统表空间的 XXX.dbf 文件中
用户数据:
用户系统的数据,可使用SQL语句查询当前数据库的表空间和数据文件。
临时表空间和临时文件:
Temporary Tablespace 当在操作中需要进行排序等操作时,oracle系统就将排序的数据临时的存放在该空间中,当排序完成后释放排序所用到的空间。
3.Oracle 存储结构
oracle 创建表看空间时至少要创建一个以上的数据文件,Oracle创建数据文件时实际上将磁盘的操作系统块重格式化成Oracle数据块,并且每个数据库都有唯一的标识。一般Oracle数据库是操作系统块得倍数。如操作系统的系统大小为2048KB,而Oracle数据块得大小为8192KB(DB_BLOCK_SIZE=8192),这表示oracle数据块由4个操作系统块构成!
一般在设计数据库结构时,需要将表,索引或簇(cluster)存储到一个已存在的表空间中,而表,索引或簇都是占用空间的对象。
Oracle把占空间的对象统一称为:段(Segment),
而段由多个区间(Extent)组成的,
区间又由多个连续的(块得编号地址临近的)Oracle数据库组成!
所以在Oracle系统中,数据库是一个基本的处理单位!
4.控制文件
控制文件一般在oracle安装时自动创建,控制文件存放路径由服务器参数文件SPFILEsid.ora的coltrol_files参数值来确定。
当oracle实例在正常启动时,系统先访问的是初始化参数文件SPFILE,然后Oracle为系统全局区(SGA)分配内存,这时oracle实例处于安装状态,控制文件处于打开状态,然后Oracle自动读出控制文件中的所有数据文件中的所有数据文件和日志文件信息,并打开所有数据文件和所有日志文件信息以便所有的用户都可以访问。
为了安全,Oracle一般创建2-3个控制文件。如果某个控制文件损坏了,Oracle自动使用另外的一个控制文件,当所有的都损坏时,系统将停止工作。
查询控制文件信息:
5.日志文件:
Oracle 日志文件分为重做日志文件(Redo Log File)和归档日志文件。
重做日志文件:
又称为联机重做日志文件(Online Redo Log File),用来记录在数据库中发生过交易(Transaction)的所有信息,以及由Oracle内部行为而引起的数据库变化的信息。在数据库恢复时可以从该日志文件中读出原来的交易的数据!对表或者整个表空间设定NOLOGGING属性时,基于表或者表空间中所有的表的DML操作都不能生成日志,因此也就减少了日志信息的产生!
从V$logfile中查询日志信息
Oracle在运行时产生日志信息,首先被记录在SGA的日志缓冲区中,当发生COMMIT命令时。LGWR进程将所有能用的日志文件都使用一遍后,将再次到第一个日志文件中重新写入。Oracle会在警告日志文件(alter_sid.log)记录相应的信息。
归档日志:
归档模式-->在各个日志文件(成员)都记录满员而即将被覆盖钱,由归档进程(ARCH)吧即将被覆盖的日志文件中的日志信息读出并写到归档日志当中,以便恢复操作时查找。
非归档模式-->在系统运行期间将所产生的日志信息不断的记录到各个日志文件中,当所有重做日志组被记录满后,又重新的从第一个日志组开始记录。
默认的oracle不采用归档模式。
6.其他文件
服务器参数文件: SPFILE,密码文件,跟踪文件,告警日志
二、数据库体系结构
从图中可以看出:参数文件(Parameter File),口令文件(Password File),归档日志文件(Archive Log File)是一般文件;
数据文件(Data File),控制文件(Control File),联机重做文件(Redo Log File)是必须文件。这3中文件时通过DBWR,LGWR等进程操作的,也就是说使用Oracle的时候只能用SQL语句来操作!
系统全局区(SGA System Global Area)
由数据缓冲区,日志缓冲区,共享池构成
1.数据高速缓冲区
这里存放的用户最近使用的数据,如果要的数据不在这里,那么就在磁盘中读取!
三种类型
脏区(Dirty Buffer) 已经改变并需要写回到数据文件的数据库。
自由区(Free Buffer) 不包含任何数据,并可以再写入的区。Oracle可以将数据放在这里。
保留区(Pinend Buffer) 包含正在处理或明确保留的区。
Oracle 将缓冲池分为3个区。
Keep Buffer Pool :在内存中保留的数据块,在内存中不会被挤掉。
RECYCLE 缓冲池:循环使用的缓冲池,表示不再需要清除的内存块
DEFAULT 缓冲池:包含已经分配的块。
2.重做日志缓冲区
写入日志文件之前的日志信息保留在这里,当检查点(CKPT,一个Oracle后台进程)或日志到达一定块数时,由LGWR写入重做日志文件。
3.共享池(Shared Pool)
共享池是SGA的保留区,用来存储SQL,PL/SQL 存储过程,数据字典,包,安全属性等信息。
库高速缓冲区(Library Cache)。
字典高速缓冲区(Data Dictionary Cache):用于存储Oracle系统管理自身的所有信息,包括登录的信息,用户对象和权限等。
4.大池(Large Pool)
5.后台进程
oracle的后台进程有很多,DBWR,CKPT。。。
查询进程:
三、数据字典
前缀 范围
USER 用户视图(用户模式相关的)
ALL 扩展用户视图(用户可以访问的)
DBA 数据库管理员的视图(针对所有用户模式的)
注意:
USER前缀的视图通常不包含OWNER列。这一列隐含在对这个USER视图提交查询的用户上。
某些DBA视图包含对管理员有用的一些额外列信息
1.USER前缀的视图
典型数据库用户关心的视图就是前缀为USER的视图。这些视图:
指向用户自己的私有数据库环境,包含用户创建的模式对象信息、用户创建的权限等等。
只显示用户相关行
和其他视图的列类似,除了不包含隐含的OWNER列之外
返回ALL视图的一部分信息
可以有简单的PUBLIC同义词来方便使用
2.ALL前缀视图
ALL前缀视图指向用户的数据库整个透视图。这个视图除了返回用户拥有的模式对象信息之外,还返回通过公开的或者隐含的分配给这个用户的权限和角色而能够访问的模式对象信息。
3.DBA前缀视图
DBA前缀视图显示整个数据库的全景视图。这些视图不能创建同义词,因为DBA前缀视图只能被数据库管理员访问。因此,为查询DBA前缀视图,管理员必须在视图名字前加上它的所有者SYS。
Oracle推荐你通过阻止用户在数据字典上拥有系统访问权限来保护数据字典。如果你启动了数据字典保护(07_DICTIONARY_ACCESSIBILITY为false),然后访问SYS模式对象(数据字典)被限制为拥有SYS模式的用户。这些用户是SYS和以SYSDBA方式连接的用户。(似乎不是这样子,system也可以访问,拥有DBA权限就可以,因为DBA权限包含了SELECT ANY DICTIONARY权限)
4.DUAL表
DUAL表是数据字典中的一个小表,Oracle和用户写的程序可以引用它来确保一个已知结果。这个表包含一列叫DUMMY,包含一行值为X。
这里记录的是我的读书笔记,如果有错误的请指出。。。
1.区分数据库实例(instance)和数据库(database)
数据库实例:
ORACLE实例 = 进程 + 进程所使用的内存(SGA),表示数据库当时的状态!
System Global Area(SGA) 和 Background Process 称为数据库的实例。当数据库关闭,实例就不存在了!
数据库:
固定的,包含数据文件,控制文件,日志文件,参数文件和归档日志文件等
2.数据库服务器(database Server)
包含数据库软件部分(SqlPlus,OEM,EXP/IMP等),数据库和实例组成!
1.表空间和数据文件
表空间:用于存储数据库表,索引和回滚段等对象的磁盘逻辑空间
表空间类型:
SYSTEM 表空间
用于存储Oracle内部表和数据字典的数据,如表名,列名,用户名等。
SYSAUX表空间
这个是在11G中新增加的,主要存储Oracle系统内部常用的样例用户对象。这个表空间由 oracle系统内部自动维护
Undo Tablespace
撤销表空间(Undo Tablespace) 用于存储撤销信息的表空间,当对数据库表进行修改(insert,update,delete等操作),oracle系统自动的使用这个撤销表空间来临时的存放修改钱的数据(Before Image)。当修改操作完成并提交(commit)后,oracle系统可根据需要保留修改前得数据时间长短来释放撤销表空间的部分空间。
User 表空间
这个是用户自己建立的表空间,可在这个表空间上建立各种对象,如表,索引等。
2.数据文件
数据文件(Data File)用于保存用户对应数据和Oracle系统数据的文件。每个表空间可以包含一个或多个数据文件。
系统数据:
管理用户数据和Oracle系统本身的数据,如用户建立的表的名称,列的名称已经字段类型等属于用户数据,这些都自动的存放在系统表空间的 XXX.dbf 文件中
用户数据:
用户系统的数据,可使用SQL语句查询当前数据库的表空间和数据文件。
SQL> col file_name for a40; SQL> set linesize 140; SQL> select file_name ,tablespace_name,(bytes/1024)as M from dba_data_files; FILE_NAME TABLESPACE_NAME M D:\ORACLE\ORADATA\C_DB\SYSTEM01.DBF SYSTEM 409600 D:\ORACLE\ORADATA\C_DB\UNDOTBS01.DBF UNDOTBS1 204800
临时表空间和临时文件:
Temporary Tablespace 当在操作中需要进行排序等操作时,oracle系统就将排序的数据临时的存放在该空间中,当排序完成后释放排序所用到的空间。
SQL> col file_name for a35; SQL> set linesize 120; SQL> select tablespace_name,file_name from dba_temp_files; TABLESPACE_NAME FILE_NAME TEMP D:\ORACLE\ORADATA\C_DB\TEMP01.DBF
3.Oracle 存储结构
oracle 创建表看空间时至少要创建一个以上的数据文件,Oracle创建数据文件时实际上将磁盘的操作系统块重格式化成Oracle数据块,并且每个数据库都有唯一的标识。一般Oracle数据库是操作系统块得倍数。如操作系统的系统大小为2048KB,而Oracle数据块得大小为8192KB(DB_BLOCK_SIZE=8192),这表示oracle数据块由4个操作系统块构成!
一般在设计数据库结构时,需要将表,索引或簇(cluster)存储到一个已存在的表空间中,而表,索引或簇都是占用空间的对象。
Oracle把占空间的对象统一称为:段(Segment),
而段由多个区间(Extent)组成的,
区间又由多个连续的(块得编号地址临近的)Oracle数据库组成!
所以在Oracle系统中,数据库是一个基本的处理单位!
4.控制文件
控制文件一般在oracle安装时自动创建,控制文件存放路径由服务器参数文件SPFILEsid.ora的coltrol_files参数值来确定。
当oracle实例在正常启动时,系统先访问的是初始化参数文件SPFILE,然后Oracle为系统全局区(SGA)分配内存,这时oracle实例处于安装状态,控制文件处于打开状态,然后Oracle自动读出控制文件中的所有数据文件中的所有数据文件和日志文件信息,并打开所有数据文件和所有日志文件信息以便所有的用户都可以访问。
为了安全,Oracle一般创建2-3个控制文件。如果某个控制文件损坏了,Oracle自动使用另外的一个控制文件,当所有的都损坏时,系统将停止工作。
查询控制文件信息:
SQL> desc v$controlfile; 名称 是否为空? 类型 STATUS VARCHAR2(7) NAME VARCHAR2(513) SQL> select name , status from v$controlfile; NAME STATUS D:\ORACLE\ORADATA\C_DB\CONTROL01.CTL D:\ORACLE\ORADATA\C_DB\CONTROL02.CTL D:\ORACLE\ORADATA\C_DB\CONTROL03.CTL
5.日志文件:
Oracle 日志文件分为重做日志文件(Redo Log File)和归档日志文件。
重做日志文件:
又称为联机重做日志文件(Online Redo Log File),用来记录在数据库中发生过交易(Transaction)的所有信息,以及由Oracle内部行为而引起的数据库变化的信息。在数据库恢复时可以从该日志文件中读出原来的交易的数据!对表或者整个表空间设定NOLOGGING属性时,基于表或者表空间中所有的表的DML操作都不能生成日志,因此也就减少了日志信息的产生!
从V$logfile中查询日志信息
SQL> col member for a50; SQL> select group#,status,member from v$logfile; GROUP# STATUS MEMBER 3 STALE D:\ORACLE\ORADATA\C_DB\REDO03.LOG 2 STALE D:\ORACLE\ORADATA\C_DB\REDO02.LOG 1 D:\ORACLE\ORADATA\C_DB\REDO01.LOG
Oracle在运行时产生日志信息,首先被记录在SGA的日志缓冲区中,当发生COMMIT命令时。LGWR进程将所有能用的日志文件都使用一遍后,将再次到第一个日志文件中重新写入。Oracle会在警告日志文件(alter_sid.log)记录相应的信息。
归档日志:
归档模式-->在各个日志文件(成员)都记录满员而即将被覆盖钱,由归档进程(ARCH)吧即将被覆盖的日志文件中的日志信息读出并写到归档日志当中,以便恢复操作时查找。
非归档模式-->在系统运行期间将所产生的日志信息不断的记录到各个日志文件中,当所有重做日志组被记录满后,又重新的从第一个日志组开始记录。
默认的oracle不采用归档模式。
<!-- 查看数据库是否使用归档模式:--> SQL> select dbid,name,log_mode from v$database; DBID NAME LOG_MODE ---------- --------- ------------ 1917702319 C_DB NOARCHIVELOG
6.其他文件
服务器参数文件: SPFILE,密码文件,跟踪文件,告警日志
二、数据库体系结构
从图中可以看出:参数文件(Parameter File),口令文件(Password File),归档日志文件(Archive Log File)是一般文件;
数据文件(Data File),控制文件(Control File),联机重做文件(Redo Log File)是必须文件。这3中文件时通过DBWR,LGWR等进程操作的,也就是说使用Oracle的时候只能用SQL语句来操作!
系统全局区(SGA System Global Area)
由数据缓冲区,日志缓冲区,共享池构成
1.数据高速缓冲区
这里存放的用户最近使用的数据,如果要的数据不在这里,那么就在磁盘中读取!
三种类型
脏区(Dirty Buffer) 已经改变并需要写回到数据文件的数据库。
自由区(Free Buffer) 不包含任何数据,并可以再写入的区。Oracle可以将数据放在这里。
保留区(Pinend Buffer) 包含正在处理或明确保留的区。
Oracle 将缓冲池分为3个区。
Keep Buffer Pool :在内存中保留的数据块,在内存中不会被挤掉。
RECYCLE 缓冲池:循环使用的缓冲池,表示不再需要清除的内存块
DEFAULT 缓冲池:包含已经分配的块。
2.重做日志缓冲区
写入日志文件之前的日志信息保留在这里,当检查点(CKPT,一个Oracle后台进程)或日志到达一定块数时,由LGWR写入重做日志文件。
3.共享池(Shared Pool)
共享池是SGA的保留区,用来存储SQL,PL/SQL 存储过程,数据字典,包,安全属性等信息。
库高速缓冲区(Library Cache)。
字典高速缓冲区(Data Dictionary Cache):用于存储Oracle系统管理自身的所有信息,包括登录的信息,用户对象和权限等。
4.大池(Large Pool)
5.后台进程
oracle的后台进程有很多,DBWR,CKPT。。。
查询进程:
SQL> select name,description from v$bgprocess;
三、数据字典
前缀 范围
USER 用户视图(用户模式相关的)
ALL 扩展用户视图(用户可以访问的)
DBA 数据库管理员的视图(针对所有用户模式的)
注意:
USER前缀的视图通常不包含OWNER列。这一列隐含在对这个USER视图提交查询的用户上。
某些DBA视图包含对管理员有用的一些额外列信息
1.USER前缀的视图
典型数据库用户关心的视图就是前缀为USER的视图。这些视图:
指向用户自己的私有数据库环境,包含用户创建的模式对象信息、用户创建的权限等等。
只显示用户相关行
和其他视图的列类似,除了不包含隐含的OWNER列之外
返回ALL视图的一部分信息
可以有简单的PUBLIC同义词来方便使用
查询返回了你的模式中包含的所有对象: SQL>SELECT object_name,object_type FROM USER_OBJECTS;
2.ALL前缀视图
ALL前缀视图指向用户的数据库整个透视图。这个视图除了返回用户拥有的模式对象信息之外,还返回通过公开的或者隐含的分配给这个用户的权限和角色而能够访问的模式对象信息。
查询返回你有权限访问的所有对象信息: SELECT owner,object_name,object_type FROM ALL_OBJECTS;
3.DBA前缀视图
DBA前缀视图显示整个数据库的全景视图。这些视图不能创建同义词,因为DBA前缀视图只能被数据库管理员访问。因此,为查询DBA前缀视图,管理员必须在视图名字前加上它的所有者SYS。
SELECT owner,object_name,object_type FROM SYS.DBA_OBJECTS;
Oracle推荐你通过阻止用户在数据字典上拥有系统访问权限来保护数据字典。如果你启动了数据字典保护(07_DICTIONARY_ACCESSIBILITY为false),然后访问SYS模式对象(数据字典)被限制为拥有SYS模式的用户。这些用户是SYS和以SYSDBA方式连接的用户。(似乎不是这样子,system也可以访问,拥有DBA权限就可以,因为DBA权限包含了SELECT ANY DICTIONARY权限)
4.DUAL表
DUAL表是数据字典中的一个小表,Oracle和用户写的程序可以引用它来确保一个已知结果。这个表包含一列叫DUMMY,包含一行值为X。
SQL> desc dual; 名称 是否为空 类型 DUMMY VARCHAR2(1) SQL> select * from dual; D - X
这里记录的是我的读书笔记,如果有错误的请指出。。。
发表评论
-
ora-00904 username 标识符无效
2013-03-13 15:42 1133我想将表里的列删除掉,但是报如下错误。 ALTER TABLE ... -
oracle 导出 序列
2012-10-31 15:31 862第一步:在原数据库上执行如下语句 select 'c ... -
8、数据完整和约束
2011-04-13 22:28 778222222222222 -
11、SQL语句优化
2011-04-13 22:26 792FlashBackFlashBackFlashBackFlas ... -
7、闪回 FlashBack
2011-04-13 22:24 769FlashBackFlashBack -
10、数据导入导出
2011-04-13 22:22 743impexp、 -
9、数据备份RMAN
2011-04-13 22:22 796RMANRMANRMANRMAN -
6、用户管理和安全
2011-04-13 22:19 8371111111111111111111111111 -
5、表分区和索引分区
2011-04-13 22:18 76711122222222 -
4、模式对象管理 (table,index,seq)
2011-04-13 22:17 1189这里说的模式对象:表,索引,约束,视图,同义词,序列。 模式是 ... -
3、管理表空间和数据文件
2011-04-13 22:15 1070一、表空间查询 1.在DBA_DATA_FILES数据字典中查 ... -
2、控制文件和日志文件
2011-04-11 22:33 973一、控制文件 1.查看控制文件信息 SQL> sel ... -
ORA-12560:TNS:协议适配器错误解决方法
2011-04-08 16:26 1677网络上说有3中情况: 1.监听服务没有起起来。windows平 ... -
创建数据库
2011-04-08 16:20 0在Oracle中建库,通常有两种方法。一是使用Oracle的建 ... -
深深深
2011-04-06 20:25 879import java.sql.Connection; im ... -
oracle10g 基础信息
2010-08-06 23:42 921以下的 J2EE 应用程序已经配置, 并且可用下面列出的 UR ... -
临时表空间过大的处理
2010-06-30 17:31 1348Oracle临时表空间主要是用来做查询和存放一些缓存的数据的, ... -
重构SEQUENCE的值
2010-06-30 17:14 13621.oracle版本 CREATE OR REPLACE ... -
ORACLE 行列转换之拼成字符串
2010-06-30 10:05 1644前段时间使用ORACLE,同事提出一个需求,要求将有相同COD ... -
ORACLE表解锁(9i,10G)
2010-06-25 16:05 3855今日某人将数据库表锁了。。全世界的人乱叫。。。我疯。。。后用O ...
相关推荐
Oracle数据库体系结构( 中文详细版)
OracleDB2Doc V2.0(Oracle数据库表结构导出器)是一套用来完成将Oracle数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。 软件采用Word中VBA开发完成,软件使用Word中的菜单操作,与Word完全集成...
2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; ...
Oracle数据库表结构导出工具Excel
Oracle数据库表结构导出器是一套用来完成将Oracle数据库中的表结构导出成Word文档,并输出标准的打印报表格式的软件。亲测oracle绝对好使 ,另附有链接信息,请先看好说明再操作.不会的加我qq87611894
实验2 Oracle数据库体系结构.doc
Oracle数据库表结构导出成Word文档工具(带源码下载) 修改了一下数据库的连接方式:由于我安装的是win764位+office64+oracle client 32位,用MSDAORA.1无法连接,所以将MSDAORA.1换为OraOleDb.Oracle.1,换后正常连接...
如何备份还原oracle数据库
可以把Oracle数据库表结构导出到excel里面的工具
c# 导出oracle数据库下所有表结构 c# 导出oracle数据库下所有表结构
搜集整理的Oracle数据库安装与配置方法...5、Oracle数据库体系结构。6、ORACLE数据类型。7、c#通过oledb连接Oracle。8、一个C#操作Oracle的通用类。9、另一个C#操作Oracle数据库的通用类。10、C# Oracle连接 操作类。
1、本程序用来对Oracle数据库进行结构比较,支持在线数据库比较和 离线数据库比较方式; 2、连接数据库无须在本地配置数据库连接,直接通过IP和端口以及相 应的数据库名称进行连接; 3、纯绿色软件,无须安装,...
实验2Oracle数据库物理存储结构管理.docx
ORACLE 数据库服务器的结构概述 ORACLE 数据库服务器的结构概述 ORACLE 数据库服务器的结构概述
本文档讲的是Oracle数据库管理系统的体系结构
Oracle数据库结构诠释。只需要输入连接的Oracle数据库的url,用户名、密码,就可以查看该登陆的数据库的所有表、视图、索引结构详情。
Oracle数据库的体系结构,适合期末复习使用
oracle数据库的存储结构-.pdforacle数据库的存储结构-.pdforacle数据库的存储结构-.pdforacle数据库的存储结构-.pdforacle数据库的存储结构-.pdf
支持sqlserver ,oracle的数据库结构比较,列出表,视图,存储过程等对象的不同。方便数据库升级。
ORACLE数据库比对工具 delphi编写有源码