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 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
|