数据库逻辑结构一

本文章为网络笔记,看了warehouse老师的视频受益匪浅,更是感觉自己技术太过初级,特写了本笔记,方便以后反复学习!
如有任何不妥,请发邮件至102448567@qq.com删除文章!
关于warehouse:
http://blog.itpub.net/19602/viewspace-1059211/
11gR2视频第四版 2_04_db_logical_structure1
tablespace
在这里插入图片描述
表空间在逻辑上把数据库分成了五部分,每一个表空间就是一部分
在这里插入图片描述
一个表空间对应着一个数据文件,temp表空间对应的文件是临时文件
在这里插入图片描述
在这里插入图片描述
表空间有三类:永久表空间,undo表空间,临时表空间

SQL> create tablespace test datafile '/u01/app/oradata/prod/test01.dbf' size 5M PERMANENT;

Tablespace created.

PERMANENT:永久的(可以省略)

把这个表的数据放在test表空间里

QL> create table tt(id int,name varchar2(10)) tablespace test;

Table created.

查看一个表空间里有哪些段,也就是有哪些对象
在这里插入图片描述
metadata:元数据
data:数据
描述数据的数据叫做元数据
下面这些就叫元数据

SQL> desc tt;
 Name                            Null?    Type
 ------------------------------- -------- ----------------------------
 ID                                       NUMBER(38)
 NAME                                     VARCHAR2(10)

下面是数据

SQL> insert into tt values(1,'a');

1 row created.

SQL> insert into tt values(2,'b');

1 row created.

SQL> commit;

Commit complete.

创建表时指定的表空间是指数据放在指定的表空间,而元数据永远放在system表空间中
在这里插入图片描述
在这里插入图片描述
tablesegment的关系:table是从关系型数据库的角度出发的,这个table存放的数据在Oracle中是怎么使用物理空间的这时候把这个tablesegment,站在不同的角度不同的叫法
在这里插入图片描述
在第5号数据文件上,第130号是段头块
在这里插入图片描述
128号块开始,一共占用了连续的8个块(128-135)这6553664k)的空间都分配给了tt表,当这8个块满了就会分配新的块
在这里插入图片描述
id0130是段头块
在这里插入图片描述

SQL> alter table tt modify name varchar2(30);

Table altered.

SQL> desc tt;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)
 NAME                                               VARCHAR2(30)

在这里插入图片描述
这几个extent碰巧是连续的,也有可能不是连续的,但是同一个extent中的block一定是连续的
在这里插入图片描述
数据库存储结构
组成extentblock都是连续的,所以一个extent只能属于一个data file
在这里插入图片描述
OBJECT_ID是元数据idDATA_OBJECT_ID是数据段的id,元数据id永远不会发生变化,不管元数据怎么改变,DATA_OBJECT_ID可能会发生变化
在这里插入图片描述
这个移动的是数据,元数据不会发生任何变化

SQL> alter table tt move tablespace users;

Table altered.

DATA_OBJECT_ID变了
在这里插入图片描述
如果数据库的block8k,那一个tablespace最多可以有1022datafile

SQL> alter tablespace test add datafile '/u01/app/oradata/test02.dbf' size 10M;

Tablespace altered.

SQL> alter table tt move tablespace test;

Table altered.
SQL> insert into tt select * from tt;

78233 rows created.

SQL> commit;

extent大小发生变化了,
在这里插入图片描述
表空间空间不足有三种办法
1.添加数据文件

alter tablespace test add datafile '/u01/app/oradata/test02.dbf' size 10M;

2.增加数据文件大小(增加数据文件大小到10M

SQL> alter database datafile 5 resize 10M;

Database altered.

3.改变6号数据文件为自动增长

SQL> alter database datafile 6 autoextend on;

Database altered.

下面这个sql说明INCREMENT_BY的单位是块

SQL> alter database datafile 6 autoextend on next 1M;

Database altered.

在这里插入图片描述
data segment size
[0,1M] extent 64k
(1M,64M] extent 1M 128 block
(64M,1G] extent 8M 1024 block
(1G,+∞) 1G extent 64M
上面这种方式是自动分配extent的方式(autoallocate

SQL> create tablespace tbs1 datafile '/u01/app/oradata/prod/tbs01.dbf' size 5M autoextend on next 1M maxsize unlimited autoallocate;

Tablespace created.

SQL> create tablespace tbs2 datafile '/u01/app/oradata/prod/tbs02.dbf' size 5M autoextend on next 1M maxsize unlimited uniform size 128K;

Tablespace created.

在这里插入图片描述
创建表空间时要是不指定uniform的大小默认分配extent的大小是1M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值