3.oracle表空间管理-永久表空间

前言

一、永久表空间

二、实验

1.查询当前数据块的大小
SQL> show parameter db_block_size;

在这里插入图片描述

2.创建一张表
CREATE TABLE testemp AS SELECT * FROM emp;
3.查询testemp表段相关的逻辑结构
SELECT t.segment_name,
       t.tablespace_name,
       t.extents,
       t.initial_extent,
       t.next_extent,
       t.max_extents,
       t.blocks
  FROM User_Segments t
 WHERE t.segment_name = 'TESTEMP';

在这里插入图片描述

表段分配了1个区段extents;
初始区段的大小为65536比特;
下一个区段的大小为1048576;
max_extents说明该表段的最大区段比特;
表段的数据块数量为8。
4.segement管理方式
4.1.段空间手动管理
pctfree:表示数据块里剩余的可用空间占数据块总空间的百分比,该参数默认为10
pctused:表示已经使用的空间占数据块总空间的百分比,该参数默认为40

4.2.段空间的自动管理
段空间的自动管理主要是利用了BMB(Bitmap Block),Oracle分配了很多的BMB块,这些BMB块组织成了层次状的索引结构。

解决的问题:
   1.多个BMB来管理,而不是一个链表,解决了单链表管理的争用问题。
   2.多个进程可以同时使用多个BMB进行并行的插入,避免了对seg header的争用。
5.在创建表空间时,segment的管理方式最好使用AUTO   
create smallfile tablespace satbs 
datafile '/opt/oracle/app/oradata/orcl/satbs01.dbf' size 100m 
autoextend on next 1m maxsize unlimited logging 
segment space management auto 
extent management local uniform size 1m;
6.通过dba_tablespaces来验证satbs的相关参数
select tablespace_name,
       status,
       logging,
       segment_space_management,
       extent_management
  from dba_tablespaces t
 WHERE tablespace_name = 'SATBS';

在这里插入图片描述

7.表空间的分类以及创建表空间
表空间分为两类:系统表空间和非系统表空间
create tablespace user_data 
datafile '/opt/oracle/app/oradata/orcl/userdata01.dbf' size 100m;
8.查看表空间是否创建
select tablespace_name,
       status,
       logging,
       segment_space_management,
       t.EXTENT_MANAGEMENT
  from dba_tablespaces t
 WHERE tablespace_name = 'USER_DATA';

在这里插入图片描述

9.查看表空间user_data对应的数据文件
select file_id,
       file_name,
       tablespace_name,
       status
  from dba_data_files
 where tablespace_name = 'USER_DATA';

在这里插入图片描述

10.表空间磁盘管理的两种方案
1.数据字典管理的表空间磁盘管理
2.本地管理的表空间磁盘管理
11.表空间的分类
1.永久表空间
2.临时表空间
3.还原表空间
12.通过数据字典查询表空间的类型
select distinct (contents) from dba_tablespaces;

在这里插入图片描述

13.查询当前数据库的默认永久表空间
SELECT t.property_value
  FROM Database_Properties t
 WHERE t.property_name = 'DEFAULT_PERMANENT_TABLESPACE';

在这里插入图片描述

14.修改默认的永久表空间
alter database default tablespace users;
15.查询当前的默认临时表空间
select property_value
  from database_properties t
 where t.property_name = 'DEFAULT_TEMP_TABLESPACE';

在这里插入图片描述

16.创建表空间
创建数据字典管理的表空间
create tablespace tianjin_data
datafile '/opt/oracle/app/oradata/orcl/tianjindata01.dbf' size 100m
minimum extent 20k
extent management dictionary
default storage
(initial 20k next 20k maxextents 500 pctincrease 0)
 
create tablespace tianjin_data
*
ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace

问题:
ORA-12913 Cannot create dictionary managed tablespace
Cause: An attempt was made to create a dictionary managed tablespace in a database whose SYSTEM tablespace is locally managed.
Action: Create a locally managed tablespace.
该信息告诉我们只能在SYSTEM表空间为字典管理时才能用以上语句创建字典管理的表空间。

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL

execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('SYSTEM');
也不行的。

结论:
如果你想在SYSTEM为本地管理表空间的数据库上建立字典管理的表空间,那么答案是 no way!!!
17.验证创建表空间
select tablespace_name,
       extent_management,
       status
  from dba_tablespaces;

在这里插入图片描述

19.验证表空间的区段管理方式
select tablespace_name,
       extent_management,
       status,
       block_size
  from dba_tablespaces
  where tablespace_name = 'BEIJING_DATA';

在这里插入图片描述

20.验证表空间的数据文件信息
select tablespace_name,
       file_name,
       status
  from dba_data_files
 where tablespace_name = 'BEIJING_DATA';

在这里插入图片描述

21.查看本地管理的表空间的存储参数信息
select tablespace_name,
       block_size,
       initial_extent,
       next_extent,
       max_extents,
       pct_increase
  from dba_tablespaces t
 where tablespace_name = 'BEIJING_DATA';

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值