oracle读取表空间物理文件中数据,Oracle学习笔记(6)表空间和数据文件

Oracle学习笔记(6)

表空间和数据文件

1、Database 按逻辑划分(一对多): Tablespace(逻辑区域:表空间) >

Segment(某一个特定逻辑结构所占用空间的集合:段【table/index/temp/rollback】)

> Extent(空间分配单位:分区)> Oracle

Block(Oracle使用和存储单位:块) > OS Block

Tablespace 按物理结构划分(一对多):Datafile >

OS Block

(注意:分区单位=块的整数倍。)

sql>select * from v$datafile

sql>select t1.name,t2.name from v$tablespace

t1,v$datafile t2 where t1.ts#=t2.ts#

sql>alter tablespace users add datafile

'd:\oracle\oradata\fox\users02.dbf' size 10m

2、系统表空间和非系统表空间

(SYSTEM TABLESPACE /NON-SYSTEM TABLESPACE)

system tablespace

系统表空间:数据库信息、数据字典、系统回滚段(dba_rollback_seqs)

non-system tablespace

非系统表空间:分离段(只读和读写数据分开)、方便管理每个表空间、控制用户的空间限额

sql>alter user kong quota 10m on users;

3、创建表空间:

语法:

CREATE Tablespace XXX

[datafile

'xxx']--OMF

SIZE

xxx--kb,mb

EXTENT

MANAGEMENT local/dictionary --分区管理(local 本地管理/dictionary

字典管理)

DEFAULT

STORAGE (XXX) ---默认管理方式(只用于字典管理分区):initial/next/pctincrease/min

extents/max extents...

==================================

CREATE TABLESPACE

userdata

DATAFILE '/u01/oradata/userdata01.dbf' SIZE 100M

AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

==================================

sql> create tablespace kong

datafile 'd:\oracle\oradata\fox\kong.dbf' size 5m

extent management dictionary

default storage (initial 100k next 100k

pctincrease 10)

offline

本地管理:自由空间记录在bitmap位图中(0/1)。每一个bit响应一个块或块的集合。bit值指示它是否

free 或

used。空间分配时或回收时并不需要和数据字典表打交道,不跟系统表产生资源征用,不会产生回滚数据(不需要修改数据表),不会产生递归资源的征用。

两种分配方式:UNIFORM

/ autoallocate

sql>create tablespace kong1

datafile

'd:\oracle\oradata\fox\kong1.dbf' size 5m

extent

management local

uniform size

1m

sql> create tablespace kong2

datafile 'd:\oracle\oradata\fox\kong2.dbf' size 5m

extent management local autoallocate;

字典管理:默认管理方式。自由空间记录在数据字典表中。产生回滚数据。也会产生不必要的递归空间所带来的负担。优点:可以控制表空间分配和使用情况。每个段存储在同一个表空间中可以有不同的存储参数。缺点:产生碎片,存在碎片压缩的问题。

=======================

CREATE TABLE userdata DATAFILE

'/u01/oradata/userdata01.dbf' SIZE 500M

EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE(initial 1M NEXT 1M

)=======================

字典管理方式更改存储参数设定:

ALTER TABLESPACE userdata

MINIMUM EXTENT 2M

ALTER TABLESPACE userdata DEFAULT STORAGE(INITIAL

2M NEXT 2M MAXEXTENTS 999);

sql>alter tablespace kong

minimum

extent 10m;

sql>alter tablespace kong

default

storage(initial 1m

next

1m

pctincrease

20);

4、Undo(回滚) 表空间:

用来储存Undo段(回滚段),不可以保存其他任何对象,分区使用本地管理,只能使用DATAFILE、EXTENT

MANAGEMENT 来创建回滚Undo表空间。

===================================

CREATE UNDO TABLESPACE undo1 DATAFILE

'/u01/oradata/undo01.dbf' SIZE 40m

================================

回滚Undo段:环路顺序循环使用,处理旧值。提供读一致性,允许回滚section

sql>delete kong.sales; //删除数据操作

sql>select * from kong.sales; //只要没有commit,就将旧数据保存在回滚段中。

sql>rollback; //旧数据从回滚段中恢复

sql>select * from kong.sales; //旧数据重现

sql>show parameter undo

sql>create undo tablespace kong3

datafile

'd:\oracle\oradata\fox\kong3.ora' size 5m

extent

management local

sql>create table tt1(id int) tablespace

kong3; //此时不能在撤销表空间中创建段。

5、Temporary Tablespace 临时表空间

用于排序,不可以存储任何其他永久对象。建议使用本地管理分区extends。

sql> select * from kong.sales order by qty

desc; //逻辑上的排序(数量上的代谢哦啊),Oracle尝试储存在内存区域中进行,如果内存区域不够,就使用临时段(temp

segment)来支持排序.

sql>create temporary tablespace kong4

tempfile

'd:\oracle\oradata\fox\kong4.ora' size 5m

extent

management local;

sql>create table tt1 (id int) tablespace

kong4; //不允许将永久对象存放在Temporarytablespace中。

默认(Default)临时表空间:创建用户时,允许你指定一个datase范围的一个默认的临时表空间,避免了使用一个系统的表空间存储临时数据。可以使用Create

database 和Alter database 命令来创建和修改临时表空间。默认的临时表空间是本地管理的。

sql>alter databse default

temporary tablespace kong4; //指定表空间为临时表空间。

默认临时表空间的约束限制条件:不考虑备份,不能drop删除,不能只读,不能离线,不能修改默认表空间为永久表空间。

sql>alter tablespace kong4 offline; //不允许离线

sql>alter tablespace kong4 read

only; //不允许只读

sql>drop tablespace kong4;//

不允许删除

6、OFFLINE STATUS 离线状态(可以部分的关闭数据库):

不是所有表空间都可以是离线状态。系统表空间、活动的Undo回滚段、默认临时表空间就无法处于离线状态。

sql> select * from kong.sales;

sql> alter tablespace users offline; //设置表空间离线

sql> select * from kong.sales //无法读取表数据

sql> alter tablespace users online;

//关闭离线状态打开在线状态。

7、READ

ONLY Tablespace只读状态的表空间:表空间仅仅用于读操作。数据对象能从只读表空间中删除。

建立一个只读表空间放到可移动只读媒介上(如光盘)方式:

ALTER TABLESPACE ...READ ONLY

MOVE the data file to the WORM drive

ALTER TABLESPACE..RENAME DATAFILE..;

sql>alter tablespace users read only;

sql>drop table employees;

sql>run

8、删除表空间:

从数据字典中删除表空间,表空间内容从数据字典中删除,也可以将物理数据文件一起删除。

================================

DROP TABLESPACE userdata

INCLUDING CONTENTS AND

DATAFILES;================================

sql>conn sys/admin1@fox as sysdba

sql>grant dba to kong;

sql>create table tt1 (id int) tablespace

kong1; //在表空间kong1上创建表tt1

sql>drop tablespace kong1; //删除表空间kong1

sql>input INCLUDING contents

sql>run //只删除内容

sql>drop tablespace kong2 including contents and

datafiles; //删除了表空间kong2的内容和物理数据文件。

9、扩展表空间:自动/手工(resize 改变大小 或 添加新的数据文件)

(1)自动扩展 AUTOEXTEND

===================

ALTER DATABASE DATAFILE

' /u01/oradata/userdata02.dbf' SIZE 200M

AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

========================

sql>alter database datafile

'd:\oracle\oradata\fox\kong.dbf'

2 autoextend on;

sql>del 2

sql>input resize 50m

sql>l

sql>run //DML/query访问的文件11处于脱机状态

sql>alter tablespace kong online;

//将表空间设置为在线状态。

sql>alter database datafile

'd:\oracle\oradata\fox\kong.dbf' resize 50m;

sql>alter tablespace kong

add datafile

'd:\oracle\oradata\fox\konga.dbf' size 10m;

//添加新的文件

10、移动数据文件:

ALTER

TABLESPACE 表空间必须是离线的。目标物理数据文件必须存在。

sql> alter tablespace kong

offline; 手动修改konga.dbf 改为 kong01.dbf

sql> alter tablespace kong rename

datafile 'd:\oracle\oradata\fox\konga.dbf' to

'd:\oracle\oradata\fox\kong01.dbf'

【注意】sql> alter tablespace system offline;

//数据字典内容是必须的,不能离线。

比较:ALTER DATABASE 数据库必须shutdown并且启动到mounted状态 ,目标数据文件必须存在。

ALTER DATABASE RENAME FILE '/u01/oradata/system01.dbf' TO

'/u03/oradata/system01.dbf';

11、OMF(Oralce Managed Files): Oracle管理文件机制

sql>alter system set

db_create_file_dest='d:\oracle\oralog';

sql>create tablespace omftb; //默认配置文件100MB

sql>drop tablespace omftb; //删除表空间,相应的配置文件也一起删除。

12、获得表空间信息:

表空间信息:DBA_TABLESPACES \V$TABLESPACE

数据文件信息:DBA_DATA_FILES\V$DATAFILE

临时文件信息:DBA_TEMP_FILES\V$TEMPFILE

sql>select * from dba_tablespaces;

sql>select * from v$tablespace;

sql>select * from v$datafile;

sql>select * from dba_data_files;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值