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、system和sysaux表空间只能有一个;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) :表空间名字除了system和sysaux其他表空间名字可以自己定义用户表空间从广义上来讲是存放用户数据的;从狭义上来讲,特指user表空间,用于存放系统表数据;建库完成后,自动创建users表空间,该表空间用于存sys用户/system用户等系统表,我们称users表空间为用户表空间,其他用户创建的表空间也是用户表空间;(3) :数据文件路径: fs(文件系统)raw(裸设备)ASM fs 数据文件在文件系统路径 raw 字符设备文件路径(去映射文件里找) asm+dg_name (4) :指的是刚刚定义的数据文件大小 (初始化大小) 两种写法:格式1:size 固定大小--》没有办法再扩展 size 20m格式2:size 固定大小 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 writeoffline 离线readonly 只读命令:selectTABLESPACE_NAME,STATUS from dba_tablespaces;TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM ONLINESYSAUX ONLINEUNDOTBS1 ONLINETEMP ONLINE2)查看表空间文件状态(与表空间状态一致)两种状态:AVAILABLE--onlineINAVAILABLE--offlineselect 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;selectTABLESPACE_NAME, BLOCK_SIZe,INITIAL_EXTENT,NEXT_EXTENT,MAX_SIZE,STATUS from dba_tablespaces;2)操作系统验证fs-->cd到/oradata/fsdbasm-->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_idFROM DBA_EXTENTS WHERE OWNER IN('U1','U2','U3') order by owner,extent_ID;观察结果:区分配策略手动,默认是1m,自动策略前面是64k,最后一个区自动分1m
页:
[1]