暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片
Oracle逻辑结构.pdf
1429
1页
51次
2023-03-07
10墨值下载
Oracle逻辑结构
结构概述
block
Oracle中最小的逻辑数据单位
默认设置为8KB,一般设置为操作系统块容量的整数倍
组成
数据块头
包含此数据块的概要信息
比如:块地址及此数据块所属的段的类型是表还是索引
表目录区 存储所插入的行数据所在表的信息
行目录区 存放所插入行的地址
可用空间
根据Oracle的PCTFREE设置所留下的空余n%
如果是表或者索引块还会存储事务条目
行数据区 具体的行的信息或者索引的信息,占用绝大部分空间
管理开销,平均在84字节到107字节之间
extent Oracle分配空间的最小单位
segment
每个段的定义中都包含了数据扩展的存储参数(storage parameter)。存储参
数适用于各种类型的段。这个参数控制着Oracle如何为段分配可用空间。
tablespace
系统表空间 存储Oracle系统的相关信息
回滚段表空间 用于暂存回滚的部分数据
临时表空间 存放临时产生而不用放入数据文件的部分数据
用户表空间 用户数据
只要segment创建成功,数据库就一定为其分配了包含若干数据块的初始数据扩
展(initial extent)
实际应用
结构与应用
block
show parameter db_block_size;
select block_size from dba_tablespaces where tablespace_name='SYSTEM';
tablespace
create tablespace TABLESPACE_NAME datafile
'/u01/app/oradata/datafile/' size 100M extent management local segment
space management auto;
create undo tablespace UNDOTBS2 datafile '/u01/app/oradata/datafile/'
size 100M;
系统表空间和用户表空间属于永久保留内容的表空间 select tablespace_name,contents from dba_tablespaces;
extent
select segment_name,extent_id,blocks,bytes/1024/1024 sum_M from
user_extents where segment_name = 'T';
segment dba_segments,user_segments
设置与调整
block的大小调整
show parameter cache_size;
alter system set db_16k_cache_size=100M;
create tablespace TABLESPACE_NAME blocksize 16k ......
PCTFREE参数的调整
PCTFREE参数决定了block中要留多少空余空间 为啥要预留空间?
为了防止数据变更导致的所需存储空间增大,如果不预留空间,万一数据变更所
需空间变大,则该数据可能会被拆分存储,反而会影响后续查找的Oracle性能
PCTFREE的默认值为10
调整
建表时直接指定 pctfree create table t(x int) pctfree 20;
后期修改某个表的 pctfree altertable t pctfree 10;
最大值
PCTFREE 的最大值要结合另一个参数 PCTUSED 使用 PCTUSED 决定一个block在被多少数据后才可以用于insert
当一个block数据占用为90时,不可再被insert,只能update,如果想重新插入
数据到该block中且此时的PCTUSED为40,则需要删除占用为51的数据才可重新
insert,即当前数据占用低于PCTUSED时才可insert
PCTFREE + PCTUSED < 90
extent的尺寸与调整
extent的分配一般通过AutoAllocate扩展自动管理
如果需要自定义指定则可以通过UNIFORM扩展管理 在建表空间时使用uniform size 1M固定该表空间的extent大小
技术与应用
表空间的大小与扩展
查看表空间总大小
select sum(bytes)/1024/1024 sum_M from dba_data_files where
tablespace_name = 'SCOTT';
查看表空间的空余空间大小
select sum(bytes)/1024/1024 sum_M from dba_free_space where
tablespace_name = 'SCOTT';
表空间使用率查看
set pagesize 800 linesize 400
select b.tablespace_name,round(sum(b.bytes)/1024/1024/1024,0) sum_GB,
round(sum(nvl(a.bytes,0))/1024/1024/1024,0) free_GB,
round((sum(b.bytes)-sum(nvl(a.bytes,0)))/sum(b.bytes),4)*100 use_precent,count(*)
from (select tablespace_name,file_id,sum(bytes) bytes from dba_free_space
group by tablespace_name,file_id ) a, dba_data_files b
where a.file_id(+)=b.file_id and a.tablespace_name(+)=b.tablespace_name
and b.tablespace_name not like '%UNDO%'
group by b.tablespace_name
having round((sum(b.bytes)-sum(nvl(a.bytes,0)))/sum(b.bytes),4)*100>=0 order by 4 desc;
表空间的扩展
增加数据文件
alter tablespace SCOTT add datafile '/u01/app/oradata/MCODB/scott02.dbf'
size 2G autoextend on maxsize unlimited;
设置为自动扩展
设置为自动扩展后可设置限制maxsize
设置unlimited一般可以扩展到32G
回滚表空间的新建与切换
查看UNDO表空间的状态 select tablespace_name,status from dba_tablespaces where contents = 'UNDO';
查看UNDO表空间的大小
select tablespace_name,sum(bytes)/1024/1024
from dba_data_files
where tablespace_name like 'UNDO%'
group by tablespace_name;
查看当前的undo表空间 show prameter undo_tablespace;
新建UNDO表空间
create undo tablespace UNDOTBS2 datafile
'/u01/app/oradata/MCODB/undotbs02.dbf' size 100M;
切换UNDO表空间 alter system set undo_tablespace=undotbs02 scope=both;
临时表空间的新建与切换
临时表空间组
特点
在数据库中可以建立多个UNDO表空间
在用的有且只有一个
特点
可以多个建立
可以被同时使用
create temporary tablespace TEMP tempfile '/u01/app/oradata/tempfile/'
size 100M;
新建
切换
alter user scott temporary tablespace TEMP_SCOTT; --切换某一用户的临
时表空间
alter database default temporary tablespace TEMP_SCOTT; --切换所有用
户的临时表空间
建立多个UNDO表空间可用于需要释放空间:切换UNDO表空间之后删除原来的
UNDO表空间即可
多个临时表空间可用于避免I/O竞争
可用于为同一用户的不同SESSION设置不同的临时表空间
查询临时表空间组
创建临时表空间组
create temporary tablespace TEMP_SCOTT tempfile
'/u01/app/oradata/tempfile/TEMP_SCOTT01.dbf' size 100M;
create temporary tablespace TEMP_SCOTT01 tempfile
'/u01/app/oradata/tempfile/TEMP_SCOTT11.dbf' size 100M tablespace
group TEMPGRP_SCOTT;
create temporary tablespace TEMP_SCOTT02 tempfile
'/u01/app/oradata/tempfile/TEMP_SCOTT21.dbf' size 100M tablespace
group TEMPGRP_SCOTT;
create temporary tablespace TEMP_SCOTT03 tempfile
'/u01/app/oradata/tempfile/TEMP_SCOTT31.dbf' size 100M tablespace
group TEMPGRP_SCOTT;
select * from dba_tablespace_groups;
将临时表空间移入临时表空间组 alter tablespace temp01 tablespace group tempgrp_scott;
更改用户的临时表空间为表空间组
alter user scott temporary tablespace tempgrp_scott;
一个小实验
实验内容:同时用scott用户登录三个SESSION,并执行排序操作
select a.table_name,b.table_name from all_tables a,all_tables b
order by a.table_name;
select username,session_num,tablespace from v$sort_usage;
@ |
of 1
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。