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';
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表空间
撤销表空间,存储撤销信息的表空间
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;
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;
3.2控制文件
1.通过查询v$controlfile数据字典来查看oracle系统的控制文件信息,具体代码如下
col name format a60; select name from v$controlfile;
.ctl就是control的缩写
3.3日志文件
1重做日志文件
记录数据库所有发生过的更改信息及由oracle内部行为而引发的数据库变化
查询v$controlfile视图来实现
col member for a50; select name from v$controlfile;
2 归档日志文件
通过查询v$database 视图来查看当前oracle系统是否采用归档模式,代码如下
col name format a30; select dbid,name,log_mode from v$database;
未开启
查询归档日志文件的所在路径,代码如下
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)修改
直接在值列修改
(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';
随着时间的推移,警告文件会越来越大,数据库管理员应该定期删除警告文件。
3.跟踪文件
在v$parameter 视图中查看当前实例的用户跟踪文件的路径,代码及运行结果如下。
select value from v$parameter where name='user_dump_dest';
修改oracle共享池的内存空间大小30MB
show parameter shared_pool_size; alter system set shared_pool_size=30m; show parameter shared_pool_size;
修改oracle大型池的缓存区大小为16MB,代码及运行结果如下:
alter system set large_pool_size = 16m; show parameter large_pool_size;
显示当前用户进程的PGA信息,代码及运行结果如下:(PGA:程序全局区)
show parameter pga;
从V$BGPROCESS 数据字典中查询当前实例进程信息
set pagesize 50; select name,description from v$bgprocess;
实验二:
2.2
(1)使用V$TABLESPACE视图查看表空间信息
select * from V$TABLESPACE;
(2)查看所有表空间的属性和在线状态信息
set linesize 250;
select * from dba_tablespaces;
(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;
(4)查看回滚段的名称列表;查看回滚段的统计信息;
set linesize 500;
select * from dba_rollback_segs;
(5)查看表空间中的空闲区间信息
所有表空间的空闲区间信息:
select * from dba_free_space;
用户表空间的空闲区间信息:
select * from user_free_space;
3.查看物理体系结构中的各部分内容,给出截图,并文字说明
(1) show parameter sga; 系统全局区:所有用户进程共享的一块内存区域,也即SGA中的数据资源可以被多个用户进程共同使用。共享池包括:高速数据缓冲区、共享池、重做日志缓存区、java池和大型池等内存结构
其他理解:oracle数据库使用物理内存的一些操作
eg: lock_sga置为true,保证整个sga被锁定在物理内存中,这样可以防止sga 被换出到swap
show parameter sga;
(2)show parameter pga;
显示当前用户进程的PGA信息
pga即程序全局区:也可称为用户进程全局区、它的内存区在进程私有区而不是共享区中。
PGA_AGGREGATE_TARGET-此参数用来指定所有session总计可以使用最大PGA内存。这个参数可以被动态的更改,取值范围从10M -- (4096G-1 )bytes。
(3)show parameter shared_pool_size;
查看oracle共享池大小
共享池是SGA保留的内存区域,用于缓存SQL语句、PL/SQL语句、数据字典、资源锁、字符集以及其他控制结构等。共享池包括库高速缓冲区和字典高速缓冲区
(4)show parameter db_cache_size;数据缓冲池
查看数据缓冲区大小
类似cpu的高速缓存,dbc中存放oracle系统最近访问过的数据块,接受请求时,先到高速数据缓冲区(dbc)中读取并返回给用户,命中失败再去读指定文件。
此处我的电脑并未设置缓冲区
(5)show parameter log_buffer;日志缓冲区
重做日志缓冲区用于存放对数据库进行修改操作时产生的日志信息,检查点发生或者重做日志缓冲区中信息量达到一定峰值时,最后由日志写入(LGWR)将此缓冲区的内容写到重做日志文件
4.控制文件
(1)从视图v$controlfile中查询控制文件的名称列表
col name for a60;
select * from v$controlfile;
col name for a60;
select name from v$controlfile;
(2)从视图v$controlfile_record_section中查询到控制文件中保存数据的记录类型、记录大小、记录总数量、使用
记录数量等信息
select * from v$controlfile_record_section;
5.数据文件
(1)查看数据文件信息
set linesize 300;
col file_name for a50;
col tablespace_name for a15;
select * from dba_data_files;
(2)从视图v$datafile中查看数据文件的信息
col name for a50;
col aux_name for a10;
set linesize 520;
select * from v$datafile;
(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;
3.2)向表空间mytabs中添加一个数据文件MyDataFile02.DBF,大小为50MB
alter tablespace MyTbs add datafile 'E:/APP/ADMINISTRATOR/ORADATA/ORCL/MyDataFile02.dbf' size 50m;
检查创建结果:
select * from dba_data_files where TABLESPACE_NAME = 'MYTBS'; --必须单引号
6.日志文件
(1)查询视图v$logfile,显示重做日志文件的成员文件
col member for a50;
set linesize 100;
select * from v$logfile order by group#;
(2)查询视图V$LOG,显示控制文件中重做日志组的信息
set linesize 200;
select * from v$log;