主题一: 体系结构
数据库很复杂---》体系结构很复杂---》为什么体系结构很复杂? 因为稀有资源不足,所以oracle引入复杂的内存、外存有效的管理稀有资源。 什么是稀有资源?(引入人类历史) 1.Oracle的数据保存在什么地方? 硬盘(机械速度 读取磁盘的速度) 2.Oracle的数据在什么地方更新? 内存(90%)(电子速度 计算机的配置) 所以Oracle的稀有资源是什么?(硬盘、内存) 举一个场景 数据库断电(事务执行一半断电,再次启动时要恢复已经写入得数据) oracle体系结构设计的初衷是什么? 不是为了处理SQL,而是为了以后可以方便改进系统的效率和数据的恢复
数据库由两分组成 实例(instance):内存和后台进程的集合 SGA:系统全局区 { 共享池(shared pool): { 库缓存(library cache): { 作用:共享sql、plsql代码 } 数据字典缓存(data dict cache): { 作用:保存数据字典和用户的权限信息 } } 数据库高速区:产生脏数据的场所。 重做日志缓冲区:操作ddl和dml时必须先写入重做日志缓冲区 } PGA:程序全局区 排序信息、游标信息、会话信息 后台进程:smon、dbwr、pmon、lgwr、ckpt 数据库(database):由一系列数据库文件组成 控制文件: 数据文件: 日志文件: 参数文件: 口令文件: 归档日志文件:
一条sql语句是如何执行的? 编译 1.库缓存检查是否存在 2.检查语法是否正确 3.查询数据字段检查表和列的定义 4.加编译锁(sql语句在编译过程中涉及的对象不能被改变) 5.查询引用对象的用户权限 6.生成执行计划、装入sql共享区 执行 7.服务器进程执行Sql语句 提取数据 8.服务器进程返回数据集合,必要的时候要进行排序
主题二: 存储结构 1.Oracle为什么要引入那么复杂的逻辑结构? 可移植性强、不依赖操作系统文件 2.引入表空间(Tablespace)、段(Segment)、区(Extent)、块(Oracle block)的概念(看图说话) 3.如何查询当前数据库的现有表空间? select * from dba_tablespaces 4.表空间分类 数据表空间 固定段 还原表空间 回滚段 临时表空间 临时段 固定段:表、索引 回滚段:需要回滚数据 临时段:临时的排序信息、临时表 5.创建用户时要选择默认表空间和临时表空间 默认表空间:创建表的时候如果不指定表存放的表空间则保存在当前用户的默认表空间 临时表空间:为当前用户指定临时表空间,如果不指定会使用数据库的默认临时表空间 (打开user.sql进行讲解) 如何查看数据库的默认临时表空间? select * from DataBase_properties where property_name like 'DEFAULT%'; 6.表空间段管理的两种方式 数据字典方式(9i中已经被废弃) Create TableSpace lession_db_data DataFile 'E:\tablespace\lession_db_data.dbf' Size 5M MINIMUM EXTENT 50k EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0); n-2 next*(1+PCTINCREASE/100) 从第三次开始 本地创建方式 Create TableSpace lession_data DataFile 'E:\tablespace\lession_data.dbf' Size 5M Extent Management Local uniform size 1M; 7.如果创建表空间?从语法进行介绍 Create TableSpace lession_index DataFile 'E:\tablespace\lession_index.dbf' Size 5M Extent Management Local uniform size 1M;
如何查看数据文件? select file_id,file_name,tablespace_name,bytes/(1024*1024)MB from dba_data_files;
如何创建临时表空间? Create TEMPORARY TableSpace lession_temp Tempfile 'E:\tablespace\lession_temp.dbf' Size 5M Extent Management Local uniform size 1M; 查看临时表空间文件的方式? select * from v$tempfile 8.删除表空间的问题 删除表空间的语法 drop tablespace LESSION_DATA including contents and datafiles; 注 默认临时表空间不允许删除
更新一个临时表空间为默认临时表空间 alter database default temporary tablespace lession_temp;
9.表空间不足了怎么办? 1.增加文件 alter tablespace LESSION_INDEX add datafile 'E:\TABLESPACE\LESSION_INDEX02.DBF' size 5M; 2.扩充文件 alter database datafile 'E:\TABLESPACE\LESSION_INDEX.DBF' resize 10M;
准备工作 还原数据库最初的结构 模拟我们现实开发中的跑库流程
|