1概述:

3个重要概念:
    1.实例:实例指一组oracle后台进程以及在服务器中分配的共享内存区域
    2.数据库:数据库是由存储在磁盘上的数据文件、控制文件、日志文件、参数文件、归档日志文件等组成的物理文件集合
    3.数据库服务器:数据库服务器是指管理数据库的各种软件工具(例如:sqlplus、OEM等)和实例及数据库3个部分

    关系:实例用于管理和控制数据库,数据库为实例提供数据。
          一个数据库可以被多个实例装载和打开,而一个实例在其生存期内只能装载和打开一个数据库

 

2.逻辑存储结构

2.1数据块

oracle逻辑存储结构中的最小逻辑单位,也是执行数据库输入输出操作的最小存储单位

数据块大小被写入初始化参数DB_BLOCK_SIZE中

查看标准块大小: 先调整每个字符字段(name和value)所占长度,否则输出格式很乱,一行一个

col name format a30; col value format a20; select name,value from v$parameter where name='db_block_size';

oracle 11g 体系结构_oracle

2.2数据区

数据区又叫拓展区,是由一组连续的oracle数据块所构成的oracle存储结构,一个或多个数据块组成一个数据区(一个或多个数据区再组成一个断)

数据区是oracle存储分配的最小单位   (存储空间的拓展以区为单位,也即是一拓展就拓展几个区)

2.3段

段(segment)由一个或者多个数据区构成,不是一个存储空间的分配单位,而是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象。

一个oracle数据库通常有以下四种类型的段:

(1)数据段:保存表中数据记录
(2)索引段:包含用于提高系统性能的索引
(3)回滚段:也叫撤销段,保存回滚条目
(4)临时段:执行创建索引、查询等操作时,oracle可能会使用一些临时存储空间,暂时保存解析过的语句或排序过程中的临时数据

 

2.4表空间

表空间->文件夹
数据文件->文件夹中的文件

表空间是数据库的最大逻辑划分区域

 

2.4.1.system表空间

    系统表空间,存放oracle系统内部表和数据字典的数据,eg:表名、列名、用户名

通过dict查看数据库中的数据字典的信息

set pagesize 50; set pause on; --set pause '按enter继续'; col table_name for a30; col comments for a30; select * from dict;

太长了,看不完

 

set pause on; set linesize 200; col view_name format a40; col view_defefinition format a40; select * from v$fixed_view_definition;

乱码,格式不好调,不调了  一行文本太多,无法调,直接竖着看吧

 

 

2.4.2 sysaux表空间

oracle 11g新增,不存储用户的数据,减压用,系统自动维护

 

2.4.3 UNDO表空间

撤销表空间,存储撤销信息的表空间

oracle 11g 体系结构_数据库_02

 

2.4.4 USERS表空间

用户表空间,是oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象,如表、索引、用户等数据对象

scott对象就存放在USERS表空间中

 

 

3.物理存储结构

多种物理文件组成,主要有数据文件,控制文件、重做日志文件、归档日志文件、参数文件、口令文件、警告日志文件等等

3.1数据文件

1.查询dba_data_files或v$datafile数据字典来了解oracle系统的数据文件信息(表空间与对应的物理文件)

col file_name for a50; set linesize 100; select file_name,tablespace_name from dba_data_files;

oracle 11g 体系结构_表空间_03

oracle 11g 体系结构_oracle_04

 

2.查询dba_temp_files或v$tempfile数据字典来查看临时文件的信息   temp临时缓存

col file_name format a50; col tablespace_name format a20; select file_name,tablespace_name from dba_temp_files;

oracle 11g 体系结构_表空间_05

 

3.2控制文件

1.通过查询v$controlfile数据字典来查看oracle系统的控制文件信息,具体代码如下  

col name format a60; select name from v$controlfile;

oracle 11g 体系结构_oracle_06

.ctl就是control的缩写

 

3.3日志文件

1重做日志文件

记录数据库所有发生过的更改信息及由oracle内部行为而引发的数据库变化

查询v$controlfile视图来实现

col member for a50; select name from v$controlfile;

oracle 11g 体系结构_oracle_07

2 归档日志文件

通过查询v$database 视图来查看当前oracle系统是否采用归档模式,代码如下

col name format a30; select dbid,name,log_mode from v$database;

oracle 11g 体系结构_数据库_08

未开启

 

查询归档日志文件的所在路径,代码如下

set pagesize 30; show parameter log_archive_dest;

 

 

3.4 服务器参数文件

1.查看服务器参数

(1).查询视图v$Parameter,可利用该动态性能视图来确定参数的默认值是否被修改过,以及是否可以用alter system和alter session命令修改

col name format a30; col value for a30; select name,value,ismodified from v$parameter;

(2)通过使用SQL*Plus的show parameter命令显示服务器的参数

show parameter;

 

 

2.修改服务器参数

主要通过企业管理器(OEM)或者alter system 命令来实现

(1)通过企业管理器(OEM)修改

oracle 11g 体系结构_oracle_09

直接在值列修改

oracle 11g 体系结构_数据库_10

(2)使用alter system命令修改服务器参数

eg:修改标准数据块大小为4096字节

alter system set db_block_size=4096;

 

 

3.5密码文件、警告文件和跟踪文件

1.密码文件

2.警告文件

在v$parameter视图中查看当前实例的警告文件的路径,代码及运行结果如下

col name for a20; col value for a50; select name,value from v$parameter where name='background_dump_dest';

oracle 11g 体系结构_表空间_11

oracle 11g 体系结构_数据库_12

随着时间的推移,警告文件会越来越大,数据库管理员应该定期删除警告文件。

 

3.跟踪文件

在v$parameter 视图中查看当前实例的用户跟踪文件的路径,代码及运行结果如下。

select value from v$parameter where name='user_dump_dest';

oracle 11g 体系结构_表空间_13

 

 

修改oracle共享池的内存空间大小30MB

show parameter shared_pool_size; alter system set shared_pool_size=30m; show parameter shared_pool_size;

oracle 11g 体系结构_oracle_14

 

 

 

修改oracle大型池的缓存区大小为16MB,代码及运行结果如下:

alter system set large_pool_size = 16m; show parameter large_pool_size;

oracle 11g 体系结构_数据库_15

 

显示当前用户进程的PGA信息,代码及运行结果如下:(PGA:程序全局区)

show parameter pga;

oracle 11g 体系结构_表空间_16

 

从V$BGPROCESS 数据字典中查询当前实例进程信息

set pagesize 50; select name,description from v$bgprocess;

oracle 11g 体系结构_数据库_17

 

 

 

 

实验二:

2.2

(1)使用V$TABLESPACE视图查看表空间信息

         select * from V$TABLESPACE;

oracle 11g 体系结构_表空间_18

 

(2)查看所有表空间的属性和在线状态信息

         set linesize 250;

         select * from dba_tablespaces;

oracle 11g 体系结构_oracle_19

 

(3)查看表空间中所包含的段信息dba_segments(所有表空间中的区间信息)

         set linesize 500;

         col tablespace_name for a10;

         col segment_type for a13;

         col segment_name for a27;

         col owner for a6;

         col segment_name for a10;

         col partition_name for a10;

         select * from dba_segments;

 

oracle 11g 体系结构_oracle_20

(4)查看回滚段的名称列表;查看回滚段的统计信息;

         set linesize 500;

         select * from dba_rollback_segs;

oracle 11g 体系结构_数据库_21

 

(5)查看表空间中的空闲区间信息

所有表空间的空闲区间信息:

         select * from dba_free_space;

oracle 11g 体系结构_表空间_22

用户表空间的空闲区间信息:

         select * from user_free_space;

oracle 11g 体系结构_数据库_23

 

 

3.查看物理体系结构中的各部分内容,给出截图,并文字说明

(1) show parameter sga;  系统全局区:所有用户进程共享的一块内存区域,也即SGA中的数据资源可以被多个用户进程共同使用。共享池包括:高速数据缓冲区、共享池、重做日志缓存区、java池和大型池等内存结构

其他理解:oracle数据库使用物理内存的一些操作

            eg: lock_sga置为true,保证整个sga被锁定在物理内存中,这样可以防止sga              被换出到swap

 

 

         show parameter sga;

oracle 11g 体系结构_表空间_24

 

(2)show parameter pga;

显示当前用户进程的PGA信息

pga即程序全局区:也可称为用户进程全局区、它的内存区在进程私有区而不是共享区中。

PGA_AGGREGATE_TARGET-此参数用来指定所有session总计可以使用最大PGA内存。这个参数可以被动态的更改,取值范围从10M -- (4096G-1 )bytes。

oracle 11g 体系结构_表空间_25

 

(3)show parameter shared_pool_size;

查看oracle共享池大小

共享池是SGA保留的内存区域,用于缓存SQL语句、PL/SQL语句、数据字典、资源锁、字符集以及其他控制结构等。共享池包括库高速缓冲区和字典高速缓冲区

oracle 11g 体系结构_表空间_26

 

(4)show parameter db_cache_size;数据缓冲池

oracle 11g 体系结构_表空间_27

查看数据缓冲区大小

类似cpu的高速缓存,dbc中存放oracle系统最近访问过的数据块,接受请求时,先到高速数据缓冲区(dbc)中读取并返回给用户,命中失败再去读指定文件。

此处我的电脑并未设置缓冲区

 

(5)show parameter log_buffer;日志缓冲区

重做日志缓冲区用于存放对数据库进行修改操作时产生的日志信息,检查点发生或者重做日志缓冲区中信息量达到一定峰值时,最后由日志写入(LGWR)将此缓冲区的内容写到重做日志文件

oracle 11g 体系结构_数据库_28

4.控制文件

(1)从视图v$controlfile中查询控制文件的名称列表

         col name for a60;

         select * from v$controlfile;

oracle 11g 体系结构_数据库_29

         col name for a60;

         select name from v$controlfile;

oracle 11g 体系结构_oracle_30

 

(2)从视图v$controlfile_record_section中查询到控制文件中保存数据的记录类型、记录大小、记录总数量、使用

记录数量等信息

select * from v$controlfile_record_section;

oracle 11g 体系结构_表空间_31

 

5.数据文件

(1)查看数据文件信息

set linesize 300;

col file_name for a50;

col tablespace_name for a15;

select * from dba_data_files;

oracle 11g 体系结构_表空间_32

(2)从视图v$datafile中查看数据文件的信息

col name for a50;

col aux_name for a10;

set linesize 520;

select * from v$datafile;

oracle 11g 体系结构_oracle_33

 

(3)创建数据文件

 

由(1)查询结果可知当前已有的表空间的数据文件路径为:

select file_name from dba_data_files;

E:\APP\ADMINISTRATOR\ORADATA\ORCL\

于是也创建到此目录

 

3.1)创建表空间MyTbs,同时创建一个50MB的数据文件。

create tablespace MyTbs    datafile 'E:/APP/ADMINISTRATOR/ORADATA/ORCL/MyDataFile01.dbf'    size 50m;

oracle 11g 体系结构_oracle_34

 

3.2)向表空间mytabs中添加一个数据文件MyDataFile02.DBF,大小为50MB

alter tablespace MyTbs add datafile 'E:/APP/ADMINISTRATOR/ORADATA/ORCL/MyDataFile02.dbf' size 50m;

oracle 11g 体系结构_表空间_35

检查创建结果:

oracle 11g 体系结构_表空间_36

select * from dba_data_files where TABLESPACE_NAME = 'MYTBS';  --必须单引号

oracle 11g 体系结构_表空间_37

 

 

6.日志文件

(1)查询视图v$logfile,显示重做日志文件的成员文件

col member for a50;

set linesize 100;

select * from v$logfile order by group#;

oracle 11g 体系结构_表空间_38

 

(2)查询视图V$LOG,显示控制文件中重做日志组的信息

set linesize 200;

select * from v$log;

oracle 11g 体系结构_表空间_39