2.1 Oracle 11g 体系结构概述
实例 Instance:一组Oracle后台进程以及在服务器中分配的共享内存区域
数据库 Datebase:基于磁盘的数据文件,控制文件,日志文件,参数文件和归档日志文件等物理文件集合
数据库服务器 Datebase Server:
运行在局域网中的一台或多台 计算机
和 数据库管理系统 软件
共同构成了数据库服务器
数据库存储数据的方式通常称为存储结构
存储结构分为逻辑存储结构和物理存储结构
2.2 逻辑存储结构
2.2.1 数据块(data blocks)
逻辑存储结构中最小的逻辑单位,数据库输入输出操作的最小存储单位
数据块大小 DB_BLOCK_SIZE
可以使用多种数据块
查询标准数据块大小
SQL> col name format a30
SQL> col value format a20
SQL> select name,value from v$parameter where name='db_block_size';
NAME VALUE
------------------------------ --------------------
db_block_size 8192
数据库的组成:
表头,表目录,行目录组成头部信息区
空余空间,行数据组成存储区
2.2.2 数据区(extent)
由一组连续的oracle数据块构成,是存储分配的最小单位,是表中数据增大的基本单位。
2.2.3 段(segment)
由数据区构成,是独立的逻辑存储结构。
段是为特定的数据对象分配的一系列数据区。
4中类型的段:
(1)数据段,创建表时自动创建以表名字命名的数据段
(2)索引段,
创建索引时自动创建以索引名字命名的索引段
(3)回滚段
(4)临时段
2.2.4 表空间(tablespace)
表空间是数据库的最大逻辑划分区域,用来存放表,索引,回滚段等数据对象
任何数据对象在创建时都必须指定存储在某个表空间中。
表空间与数据文件相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。
oracle 11g默认创建的主要表空间:
(1)system表空间
SQL>select * from dict; --查看数据字典信息
SQL>select * from v$fixed_view_definition; --查看数据库内部系统表的信息
(2)sysaux表空间
(3)undo表空间
(4)users表空间
2.3 物理存储结构
2.3.1 数据文件
创建表空间的同时创建数据文件
SQL> col file_name for a50;
SQL> set linesize 100;
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
/ora/app/oracle/oradata/stone1/users01.dbf USERS
/ora/app/oracle/oradata/stone1/undotbs01.dbf UNDOTBS1
/ora/app/oracle/oradata/stone1/sysaux01.dbf SYSAUX
/ora/app/oracle/oradata/stone1/system01.dbf SYSTEM
/ora/app/oracle/oradata/stone1/example01.dbf EXAMPLE
系统数据文件:system01.dbf,sysaux01.dbf,存放“特殊”的用户数据和Oracle系统本身的数据
撤销数据文件:undotbs01.dbf,隶属于撤销表空间
用户数据文件:users01.dbf,存放用户应用系统的数据
SQL> select file_name,tablespace_name from dba_temp_files;
FILE_NAME TABLESPACE_NAME
-------------------------------------------------- --------------------
/ora/app/oracle/oradata/stone1/temp01.dbf TEMP
临时数据文件:temp01.dbf
2.3.2 控制文件
控制文件是一个二进制文件,记录数据库的物理结构,包括数据库名,数据文件与日志文件的名字等。
系统安装或者创建数据库是自动创建,存放路径由spfileorcl.ora的control_files指定。
如果所有的控制文件损坏,系统将无法工作。
SQL> select name from v$controlfile;
NAME
------------------------------------------------------------
/ora/app/oracle/oradata/stone1/control01.ctl
/ora/app/oracle/oradata/stone1/control02.ctl
2.3.3 日志文件
重做日志文件(redo log file),归档日志文件(archive log file)
SQL> col member for a50;
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------
/ora/app/oracle/oradata/stone1/redo03.log
/ora/app/oracle/oradata/stone1/redo02.log
/ora/app/oracle/oradata/stone1/redo01.log
数据库的两种运行模式:归档模式与非归档模式
默认采用非归档模式
SQL> select dbid,name,log_mode from v$database;
DBID NAME LOG_MODE
---------- ------------------------------ ------------
2830852830 STONE1 NOARCHIVELOG
spfile的log_archive_dest参数指定归档日志文件的路径
2.3.4 服务器参数文件spfile(server parameter file)
1、查看服务器参数
两种方式
(1)查询视图v$parameter
SQL> col name for a30;
SQL> col value for a30;
SQL> select name,value,ismodified from v$parameter;
NAME VALUE ISMODIFIED
------------------------------ ------------------------------ ----------
lock_name_space FALSE
processes 150 FALSE
sessions 247 FALSE
timed_statistics TRUE FALSE
timed_os_statistics 0 FALSE
resource_limit FALSE FALSE
license_max_sessions 0 FALSE
license_sessions_warning 0 FALSE
cpu_count 1 FALSE
instance_groups FALSE
event FALSE
sga_max_size 343932928 FALSE
pre_page_sga FALSE FALSE
shared_memory_address 0 FALSE
hi_shared_memory_address 0 FALSE
use_indirect_data_buffers FALSE FALSE
lock_sga FALSE FALSE
shared_pool_size 0 FALSE
large_pool_size 0 FALSE
java_pool_size 0 FALSE
streams_pool_size 0 FALSE
shared_pool_reserved_size 6501171 FALSE
java_soft_sessionspace_limit 0 FALSE
java_max_sessionspace_size 0 FALSE
spfile /ora/app/oracle/product/11.2.0 FALSE
/dbhome_1/dbs/spfilestone1.ora
(2)使用sqlplus的show parameter命令
SQL> show parameter;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean FALSE
active_instance_count integer
aq_tm_processes integer 0
archive_lag_target integer 0
asm_diskgroups string
asm_diskstring string
asm_power_limit integer 1
asm_preferred_read_failure_groups string
audit_file_dest string /ora/app/oracle/admin/stone1/a
dump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string DB
background_core_dump string partial
background_dump_dest string /ora/app/oracle/diag/rdbms/sto
ne1/stone1/trace
backup_tape_io_slaves boolean FALSE
bitmap_merge_area_size integer 1048576
blank_trimming boolean FALSE
buffer_pool_keep string
buffer_pool_recycle string
cell_offload_compaction string ADAPTIVE
cell_offload_decryption boolean TRUE
cell_offload_parameters string
cell_offload_plan_display string AUTO
cell_offload_processing boolean TRUE
cell_partition_large_extents string DEFAULT
2、修改服务器参数
(1)通过企业管理器(OEM)修改
使用system用户登陆后修改
(2)使用alter system命令修改
2.3.5 密码文件、警告文件和跟踪文件
1、密码文件
2、警告文件
警告文件的路径由
background_dump_dest设定
SQL> col name for a20;
SQL> col value for a50;
SQL> select name,value from v$parameter where name='background_dump_dest';
NAME VALUE
-------------------- --------------------------------------------------
background_dump_dest /ora/app/oracle/diag/rdbms/stone1/stone1/trace
3、跟踪文件
(1)后台进程跟踪文件
磁盘位置由background_dump_dest参数确定
命名格式为<sid>_<processname>_<spid>.trc
(2)用户进程跟踪文件
位置由user_dump_dest确定
命名格式为<sid>_ora_<spid>.trc
SQL> select value from v$parameter where name='user_dump_dest';
VALUE
--------------------------------------------------
/ora/app/oracle/diag/rdbms/stone1/stone1/trace
每个后台进程都有对应的跟踪文件。
2.4 Oracle 11g服务器结构
Oracle服务器由实例、数据库、程序全局区和前台进程组成。
实例包括系统全局区(SGA)和后台进程。
数据库包括数据文件,控制文件,重做日志文件。
前台进程包括用户进程和服务器进程。
2.4.1 系统全局区(SGA)
是所有用户进程共享的一块内存区域
包括共享池、数据缓冲区,重做日志缓冲区,java池,大型池等。
数据缓冲区分为脏数据区、空闲区和保留区。
重做日志缓冲区的大小由LOG_BUFFER参数指定。
共享池包括库缓存数据字典缓存。大小由参数shared_pool_size指定
SQL> alter system set shared_pool_size=30m;
System altered.
large pool大小由参数large_pool_size指定
java pool大小由参数java_pool_size指定
2.4.2 程序全局区(PGA)
PGA区由私有SQL区和会话区组成
2.4.3 前台进程
1、用户进程
连接和会话
2、服务器进程
专业服务器模式和共享服务器模式
2.4.4 后台进程
必须正常启动的后台进程:
SMON,PMON,DBWR,LGWR,CKPT
1、DBWR
由spfile的DB_WRITER_PROCESSES指定DBWR进程的数量,数量不超过系统处理器的数量
2、CKPT
指定CHECKPOINT_PROCESS参数为true启动检查点进程。
SQL> set pagesize 50;
SQL> select name,description from v$bgprocess;
NAME DESCRIPTION
-------------------- ----------------------------------------------------------------
PMON process cleanup
VKTM Virtual Keeper of TiMe process
GEN0 generic0
DIAG diagnosibility process
DBRM DataBase Resource Manager
VKRM Virtual sKeduler for Resource Manager
RSMN Remote Slave Monitor
PING interconnect latency measurement
FMON File Mapping Monitor Process
PSP0 process spawner 0
ACMS Atomic Controlfile to Memory Server
2.5 数据字典
2.5.1 Oracle数据字典概述
数据字典前缀含义:
dba:数据库实例的所有对象信息
v$:当前实例的动态视图
user:用户的对象信息
gv:分布式环境下所有实例的动态视图
2.5.2 Oracle常用数据字典
一、Oracle数据字典主要由一下几种视图构成:
1.USER视图
以USER_为前缀,用来记录用户对象的信息
2,ALL视图
以ALL_为前缀,用来记录用户对象的信息及被授权访问的对象信息
3.DBA视图
以DBA_为前缀,用来记录数据库实例的所有对象的信息
4.V$视图
以V$为前缀,用来记录与数据库活动相关的性能统计动态信息
5.GV$视图
以GV$为前缀,用来记录分布式环境下所有实例的动态信息
二、Oracle常用的数据字典
1.基本数据字典
字典名称 |
说明 |
DBA_TABLES |
所有用户的所有表信息 |
DBA_TAB_COLUMNS |
所有用户的表的字段信息 |
DBA_VIEWS |
所有用户的所有视图信息 |
DBA_SYNONYMS |
所有用户的所有同义词信息 |
DBA_SEQUENCES |
所有用户的所有序列信息 |
DBA_CONSTRAINTS |
所有用户的表的约束信息 |
DBA_IND_COLUMNS |
所有用户的表的索引的字段信息 |
DBA_TRIGGERS |
所有用户的触发器信息 |
DBA_SOURCES |
所有用户的存储过程信息 |
DBA_SEGMENTS |
所有用户的段的使用空间信息 |
DBA_EXTENTS |
所有用户的段的扩展信息 |
DBA_OBJECTS |
所有用户对象的基本信息 |
CAT |
当前用户可以访问的所有基表 |
TAB |
但前用户创建的所有基表、视图、同义词等 |
DICT |
构成数据字典的所有表的信息 |
2.与数据库组件相关的数据字典
数据库组件 |
数据字典中的表或视图 |
说明 |
数据库 |
V$DATAFILE |
记录系统的运行情况 |
表空间 |
DBA_TABLESPACES |
记录系统表空间的基本信息 |
|
DBA_FREE_SPACE |
记录系统表空间的空闲空间信息 |
控制文件 |
V$CONTROLFILE |
记录系统控制文件的基本信息 |
|
V$CONTROL_RECORD_SECTION |
记录系统控制文件中记录文档段的信息 |
|
V$PARAMETER |
记录系统个参数的基本信息 |
数据文件 |
DBA_DATA_FILES |
记录系统数据文件及表空间的基本信息 |
|
V$FILESTAT |
记录来自控制文件的数据文件信息 |
|
V$DATAFILE_HEADER |
记录数据文件头部的基本信息 |
段 |
DBA_SEGMENTS |
记录段的基本信息 |
区 |
DBA_EXTENTS |
记录数据区的基本信息 |
日志 |
V$THREAD |
记录日志线程的基本信息 |
|
V$LOG |
记录日志文件的基本信息 |
|
V$LOGFILE |
记录日志文件的概要信息 |
归档 |
V$ARCHIVED_LOG |
记录归档日志文件的基本信息 |
|
V$ARCHIVED_DEST |
记录归档日志文件的路径信息 |
数据库实例 |
V$INSTANCE |
记录实例的基本信息 |
|
V$SYSTEM_PARAMETER |
记录实例当前有效的参数信息 |
内存结构 |
V$SGA |
记录SGA区的信息 |
|
V$SGASTAT |
记录SGA的详细信息 |
|
V$DB_OBJECT_CACHE |
记录对象缓存的大小信息 |
|
V$SQL |
记录SQL语句的详细信息 |
|
V$SQLTEXT |
记录SQL语句的语句信息 |
|
V$SQLAREA |
记录SQL区的SQL基本信息 |
后台进程 |
V$BGPROCESS |
显示后台进程信息 |
|
V$SESSION |
显示当前会话信息 |
3.常用动态性能视图
视图名称 |
说明 |
V$FIXED_TABLE |
显示当前发行的固定对象的说明 |
V$INSTANCE |
显示当前实例的信息 |
V$LATCH |
显示锁存器的统计数据 |
V$LIBRARYCACHE |
显示有关库缓存性能的统计数据 |
V$ROLLSTAT |
显示联机的回滚段的名字 |
V$ROWCACHE |
显示活动数据字典的统计 |
V$SAG |
记录SGA区的信息 |
V$SGASTAT |
记录SGA的详细信息 |
V$SORT_USAGE |
显示临时段的大小及会话 |
V$SQLTEXT |
记录SQL语句的语句信息 |
V$SQLAREA |
记录SQL区的SQL基本信息 |
V$STSSTAT |
显示基本的实例统计信息 |
V$SYSTEM_EVENT |
显示一个事件的总计等待时间 |
V$WAITSTAT |
显示块竞争统计数据 |