Oracle逻辑体系:数据文件黑盒的内在洞天
select username,session_num,tablespace from v$sort_usage;
Block:
- 块的组成
- Header:包含数据块的概要信息:块地址,块属于哪个段,还有段的类型
- 表目录:数据所属的表的信息。
- 行目录:插入行的逻辑地址
- 预留的空余空间:
- 行数据区:
- 获取关于块的信息:
show parameter db_block_size
select block_size from dba_tablespaces where tablespace_name='SYSTEM'; - 块大小的调整:一般来说是8k,必须在建库以后指定,现在允许在不同的表空间可以有不同块大小。
show parameter cache_size
alter system set db_16k_cache_size=100m; --16k的设置生效
CREATE TABLESPACE tb16k BLOCKSIZE 16K DATAFILE '/path/to/datafile' size 100m autoextend on extent management local segment space management auto;
对比查看两个表空间:
select tablespace_name, block_size from dba_tablespaces where tablespace_name in ('TB16K','SWAT'); - 块剩余空间:PCTFREE
- 用途:用于避免行迁移。
- 使用范围:全局有一个10,具体针对不同的表(segment)的特性(如经常更新的表和只读的表就不一样)可以设不同的值。
Extent:
- 数据字典表user_extents包含的内容:
- 上级信息:段名(和类型),分区名,表空间名,
- 自身信息:区id,字节数,块数。
- 区的大小设置:
- 一般oracle是自动分配,可以是8个块64k,也可以是128个块1m.
- 在创建表空间的时候可以在extent管理后面加上uniform size 10m 来手工指定。
create tablespace tbs_ex10m datafile '/path/to/datafile.dbf' size 100m extent management local uniform size 10m segment space management auto;
create table t2(id int) tablespace tbs_ex10m;
Segment: 表和索引是分开的segment
Tablespace:
- 表空间分类
- 系统表空间
- 临时表空间
- 回滚表空间
- 用户表空间
- 创建表空间
- 普通表空间
CREATE TABLESPACE name
DATAFILE '/path/to/datafile.dbf' SIZE 100M
EXTENT MANAGEMENT local
SEGMENT SPACE MANAGEMENT auto; - 临时表空间
CREATE TEMPORARY TABLESPACE name
TEMPFILE '/path/to/datafile.dbf' SIZE 100M; - 回滚段表空间
CREATE UNDO TABLESPACE name
DATAFILE '/path/to/datafile.dbf' SIZE 100M;
- 普通表空间
- 查看表空间相关的参数
- 数据字典dba_data_files:
- 数据库操作系统文件信息:文件名,文件号,
- 对应的表空间:表空间名,字节数,块数,状态,相关文件号,自动加区,最大字节,最大块数,加区增量,用户字节,用户块数,在线状态
- 没有all/user_data_files
- 查阅普通表空间的文件名
COL FILE_NAME FORMAT A50
SET LINESIZE 1000
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE,BYTES
FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='tablesapcename'ORDER BY SUBSTR(FILE_NAME,-12); - 查阅临时表空间的文件名
SELECT FILE_NAME, AUTOEXTENSIBLE,BYTES
FROM DBA_TEMP_FILES WHERE TABLESPACE_NAME='tablesapcename'
ORDER BY SUBSTR(FILE_NAME,-12); - 查看所有表空间
SELECT TABLESPACE_NAME,FILE_NAME, AUTOEXTENSIBLE,BYTES FROM DBA_DATA_FILES;
SELECT TABLESPACE_NAME,FILE_NAME, AUTOEXTENSIBLE,BYTES FROM DBA_TEMP_FILES; - 查看永久空间类型
SELECT TABLESPACE_NAME,CONTENTS FROM DBA_TABLESPACES;
- 创建用户时指定默认表空间
CREATE USER username IDENTIFIED BY passwd DEFAULT TABLESPACE name TEMPORARY TABLESPACE name;
- 在默认表空间内查EXTENT相关信息
col TAB format a10
col TS format a10
select segment_name TAB,extent_id,tablespace_name TS, bytes/1024 K, blocks from user_extents where rownum<100;
- 查看SEGMENT相关信息:哪个表空间?占用多少资源:块,区,字节?使用那个共享池buffer_pool?
select segment_name,segment_type,tablespace_name,blocks,extents,bytes/1024/1024 M from user_segments where segment_name='T5C';
- 查看表空间剩余多少:从DBA_FREE_SPACE里面查
select sum(bytes)/1024/1024 from dba_free_space where tablespace_name='SWAT';
- 查看表空间有多少空间:从DBA_DATA_FILES里面查
select SUM(BYTES)/1024/1024 from dba_DATA_FILES where tablespace_name='SWAT';
- 表空间不足有两种方法:1.对表空间加数据文件。2.对数据库的数据文件打开自动扩展。
ALTER TABLESPACE TBS_XX ADD DATAFILE '/path/to/datafilexxx.dbf' size 100m;
ALTER DATABASE DATAFILE '/path/to/datafilexxx.dbf' autoextend on; - 删除表空间,创建可自动增长的表空间:
drop tablespace tb16k including contents and datafiles;
create tablespace tbs_xxx datafile '/path/to/datafilexxx.dbf' size 100m autoextend on next 64k maxsize 5G; - 回滚段表空间:undo表空间可以多个,当前只能使用1个(RAC环境例外)
show parameter undo
select tablespace_name, status from dba_tablespaces where contents='UNDO';
alter system set undo_tablespace=undotbs2 scope=both; - 建用户时可以指定表空间和临时表空间
SELECT DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME='SWAT';
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp02;
- 临时表空间组:dba_tablespace_groups为同一个用户在不同的session配不同的临时表空间,减少IO竞争,分配时自动分配空间给特定session。
create temporary tablespace temp1_1 tempfile '/tmp/temp01.dbf' size 10m tablespace group tmpgrp1;
create temporary tablespace temp1_2 tempfile '/tmp/temp02.dbf' size 10m tablespace group tmpgrp1;select * from dba_tablespace_groups;
create temporary tablespace temp1_3 tempfile '/tmp/temp03.dbf' size 10m;
alter tablespace temp1_3 tablespace group tempgrp1;
alter user SWAT temporary tablespace tmpgrp1;
select username,session_num,tablespace from v$sort_usage;
Oracle逻辑体系:数据文件黑盒的内在洞天的更多相关文章
- Oracle 逻辑体系
Oracle 逻辑体系 主题 Oracle 逻辑体系 参考资料 Oracle 逻辑体系 表空间.模式.用户.段.区.块 Oracle中的数据逻辑上存储于表空间,物理上则存储于属于表空间tabl ...
- oracle 11g dbf数据文件从C盘迁移到D盘
服务器系统为 windows 2008 R2 64位,由于C盘空间将满,要将C盘的oracle的DBF数据文件迁移到D盘下,步骤如下: 1.输入cmd,启动 cmd.exe窗口 2.输入 sqlplu ...
- 浅谈Oracle中物理结构(数据文件等。。。)与逻辑结构(表空间等。。。。。)
初始Oracle时很难理解其中的物理结构和逻辑结构,不明白内存中和硬盘中文件的区别和联系,我也是初学Oracle,这里就简单的谈谈我我看法. 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作 ...
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
1.创建一个实验用的表空间并在此表空间上创建表 create tablespace blocktest datafile '/u01/oradata/bys1/blocktest.dbf' size ...
- oracle数据库单个数据文件的大小限制
之前没有仔细想过这个问题,因为总是不会用到,也没有犯过类似错误. 顺便提一下学习方法吧. 卤肉的学习方法是:常用知识点,熟悉理论并反复做实验,深入理解:不常用的知识点,相关内容都了解大概,遇到问题时想 ...
- Oracle 10g DG 数据文件迁移
背景:某客户Oracle 10g 的DG由于空间不足,之前将部分数据文件迁移到其他目录,如今原目录扩容成功,要将之前迁移的数据文件再次迁移回来. 环境:Oracle 10.2.0.5 DG 单机 首先 ...
- Oracle OMF管理数据文件
1.什么是OMF? Oracle managed file的缩写,简单的理解,就是oracle自己管理自己的文件,可以是dbf,redolog 等等,具体可以参考官方文档Adiministrator中 ...
- oracle数据库丢失数据文件、控制文件、重做日志文件、初始化文件恢复方法
rman target/ list backup; 查看是否已备份,如果没有,那就不知道了 模拟故障,删除/u01/app/oracle/oradata/ORCL文件夹下的所有文件 sqlplus ...
- Linux环境下利用句柄恢复Oracle误删除的数据文件
在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件.下面模拟恢复过程. (一)环境 OS版本:redha ...
随机推荐
- PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
这篇文章主要介绍了PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法,是在进行PHP数据库程序开发中常会遇 ...
- MYSQL关于表的一些操作
mysqldump -u username -p dbname > dbname.sql 清空表数据 delete from xxxx; 插入一条数据 insert into tablename ...
- 社区APP “钱途”漫漫
花样年曾宣称:2013年“彩生活”物业品牌收入1.85亿,毛利率超过40%:万科万客会APP.龙湖物业APP……大量房地产企业依托物业企业,纷纷瞄准移动互联网.云计算.物联网等高新科技为基础的物业服务 ...
- html+css--水平居中总结(不定宽块状元素方法)(一)
来源:http://www.imooc.com/code/6363 在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度 ...
- 【转载】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及 ...
- PHP和CS的引用传值
PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...
- Android Studio使用OpenCV后,使APP不安装OpenCV Manager即可运行
转载自http://www.cnblogs.com/tail/p/4618790.html 采用静态初始化的方法,可以戳下边的链接查看官方的文档介绍 http://docs.opencv.org/do ...
- Android OpenGL ES(三)----编程框架
首先当然是创建Android项目,你可以选择最新的Android Studio也可以选择eclipse都是一样的.我们重点讲解开发OpenGL ES的流程 1.定义顶点着色器和片段着色器 第一节我们讲 ...
- 虚拟机中Linux安装Tools
1. 插入光盘后将文件拷贝到常用放置软件的目录 2. 解压文件 3. 然后进入解压后的文件夹里找到安装文件进行安装(注意使用root权限安装) 4. 安装时也是一个交互的过程 5. 完成安装
- iOS开发那些事-iOS应用本地化-资源文件本地化
资源文件包括:图片文件.音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布.但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因 ...