9月22日表空间实验

1、建表空间
创建表空间
目的:在生产环境中,为了数据的安全和一致性,不会把业务数据放在系统默认表空间里使用,而是单独在其他存储设备里上建立表空间
create (1) tablespace (2) datafile '(3)' size (4)  autoextend (5) extent (6) segment (7) compress (8) loging(9)  blocksize (10)
特例:
create (1) tablespace (2) datafile '(3)'  reuse ........
重复使用已经存在的表空间,该表空间之前的数据会被覆盖,因此不建议使用
(1):smallfile  小文件--默认值:手动设置大小,可以创建多个表空间(1022个数据文件);
    bigfile   大文件类型:一般是128T,用于存放大文件如视频,只允许建一个
    undo   undo表空间
temporary 临时表空间
   上面类型特性:
1、systemsysaux表空间只能有一个;
2、可以同时存在多个临时表空间,并且可以同时使用;
3、可以同时存在多个undo表空间,但是只能使用一个;
4、可以同时存在多个用户表空间,并且可以同时使用;
5、smallfile灵活度比bigfile文件要高,及区别;
1)支持数据文件数量不同
  smallfile类型的表空间可以包含多个表空间文件,最多支持1022个;
  bigfile类型的表空间只能有一个表空间文件,只支持1个;
CLOB--》数据大对像,文档  BLOB--》视频、音频文件
注:生产环境中,不会直接放在数据库里,因为会占用大量的资源,一般都放在操作系统中
2)支持单文件大小不同
  smallfile
          2k                  8g    --> 最小
  数据块      8k    -->  数据文件        32g   --> 默认
          16k                 128g  --> 最大
  bigfile
          2k                  8T   --> 最小
  数据块      8k    -->  数据文件         32T   --> 默认
          16k                       128T  --> 最大
(2) :表空间名字
除了systemsysaux其他表空间名字可以自己定义
用户表空间从广义上来讲是存放用户数据的;从狭义上来讲,特指user表空间,用于存放系统表数据;
建库完成后,自动创建users表空间,该表空间用于存sys用户/system用户等系统表,我们称users表空间为用户表空间,其他用户创建的表空间也是用户表空间;
(3) :数据文件路径: fs(文件系统)  raw(裸设备)  ASM
      fs 数据文件在文件系统路径
      raw 字符设备文件路径(去映射文件里找)
      asm  +dg_name
(4) :指的是刚刚定义的数据文件大小 (初始化大小)
   两种写法:
格式1size 固定大小--》没有办法再扩展
   size 20m
格式2size 固定大小 autoextend on maxsize 大小 next 大小
     --》autoextend on  开启自动扩展功能,默认是不扩展
           maxsize   指定扩展到最大的空间,不指定默认32G(跟块大小有关)
            注:这跟设备磁盘空间大小有关系
           next  单次扩展多少空间(步长),不指定的话按区的分配大小增长
(5):文件自动扩展--autoextend(以上面内容为主)
(6):区管理两点注意事项:
管理方式 1.本地管理 --默认值
                 2.数据字典管理
        分配方式 1.自动分配 --默认值 system
                 2.指定分配       uninform
(7):段管理方式 1.自动管理 --ASM --默认值
              2.手动管理 (基本不用可以忽略)
(8):表空间存放数据时 是否需要压缩后存放 默认是NO 不压缩 --默认值
      *****严禁使用该功能,会破坏数据一致性******
(9):表空间是否被记录redo 如果不记录redo 数据库的写性能会有一定的提升 但是一致性没有保障 并且不能够支持备份 除了临时表空间 都应该记录redo
记录日志 --默认值
       注:临时表空间不开启此功能
      *****生产环境中必须开启,保证数据安全******
(10):支持创建非8K块大小的表空间
8k --默认值
   也可以通过临时修改参数实现,系统会在内存里再开个非标准空间去读非标准数据,即内存里的数据块标准必须与硬盘数据库里的数据块标准一致才能读取
2、查看表空间
1)查看表空间状态
  三种状态:
  online      在线 --read write
  offline      离线
  readonly    只读
命令:
select  TABLESPACE_NAME,STATUS from DBA_tablespaces;
TABLESPACE_NAME                STATUS
------------------------------       ---------
SYSTEM                               ONLINE
SYSAUX                               ONLINE
UNDOTBS1                       ONLINE
TEMP                               ONLINE
2)查看表空间文件状态(与表空间状态一致)
  两种状态:
  AVAILABLE--online
  INAVAILABLE  --offline
select   TABLESPACE_NAME,FILE_ID, FILE_NAME ,STATUS from dba_data_files;
3)查询段状态
select OWNER,SEGMENT_NAME,TABLESPACE_NAME,BYTES,BLOCKS from dba_segments;
4)查询区状态
select OWNER,SEGMENT_NAME,EXTENT_ID,TABLESPACE_NAME FROM dba_extents;
5) 额外补充
  a)创建用户名
          create user 用户名 identified by oracle default tablespace 表空间名;
  create user u1 identified by oracle default tablespace test1;
  b)给用户权限
   grant dba to 用户名;
  c)创建表
   ①创建空表
   create table [用户名表名称(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
create table t1   属于sys   - ->USERS表空间
create table u1.t1 属于u1   - ->test1表空间
 ②复制表
create table [用户名表名称as select * from dba_objects;
实验1  创建表空间
一、创建 smallfile表空间:
1、创建统一区大小为2M的表空间,
2、如果使用uniform但不指定size那默认是1M
3、如果不指定uniform 那默认是autoallocate SYSTEM)
asm系统
create tablespace test1 datafile '+datadg' size 20m uniform size 2m;
create tablespace test2 datafile '+datadg' size 20m uniform;
create tablespace test3 datafile '+datagf' size 20m;
fs 系统
create tablespace test1 datafile '/oradata/fsdb/test01.dbf' size 20m uniform size 2m;
create tablespace test2 datafile '/oradata/fsdb/test02.dbf' size 20m uniform;
create tablespace test3 datafile '/oradata/fsdb/test03.dbf' size 20m;
1)数据库里验证
select   TABLESPACE_NAME,FILE_ID, FILE_NAME ,STATUS from dba_data_files;
select  TABLESPACE_NAME, BLOCK_SIZe,INITIAL_EXTENT,NEXT_EXTENT,MAX_SIZE,STATUS from dba_tablespaces;
2)操作系统验证
  fs-->cd/oradata/fsdb
  asm-->asmcmdg命令到datadg里查询
3)添加用户,设置权限
create user u1 identified by oracle default tablespace test1;
create user u2 identified by oracle default tablespace test2;
create user u3 identified by oracle default tablespace test3;
grant dba to u1;
grant dba to u2;
grant dba to u3;
3)创建表,并对表加内容
create table u1.t1 as select * from dba_objects;
create table u2.t2 as select * from dba_objects;
create table u3.t3 as select * from dba_objects;
4观察下创建在三种不同区大小表空间上的表,空间扩展时,区的分配情况:
SQL>select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,BYTES,BLOCKS,block_id  FROM DBA_EXTENTS WHERE OWNER IN('U1','U2','U3') order by owner,extent_ID;
  观察结果:区分配策略手动,默认是1m,自动策略前面是64k,最后一个区自动分1m
        

标签: 暂无标签
fm98888

写了 26 篇文章,拥有财富 107,被 1 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈