6月7号,又是一个高考日,首先最帅dba小崔,祝全国975万考生考试顺利,金榜题名。而我也真诚的希望,我的公众号能够帮助到日后选择计算机专业的学生,一起加油,一起努力。
今天为大家带来的是表空间的管理,虽然基础但是十分重要。我们下面开始说正题。
表空间存在多个状态:
Online
Offline
Read Write
Read Only
默认情况下为read write / online
selectb.tablespace_name,a.file#,a.status,a.ENABLED
fromv$datafile a ,dba_data_files bwherea.file#=b.file_idorderbya.file#;
关联显示数据库表空间的使用情况
更改表空间的状态
alter tablespace name read write;
可以完成数据的备份:
alter tablespace users offline; 这个offline的操作将会触发CKPT进程,进行写操作。
有时候在offline之后online表空间会导致数据库需要介质恢复
注意:
system 表空间不能offline 必须为read write
sysaux 表空间可以offline 不能read only
undo表空间不能offline 不能read only
其他自定义表空间都可以offline
OFFLINE之后:DML语句不能操作
DDL语句可以DQL语句可以
表空间设置read only 只有如下几种可行的情况
表空间必须为online
表空间中不能有归档模式
表空间中不能有回滚段
表空间改名
alter tablespace t1 rename to dd;
system、sysaux表空间不能改名
在database_properties定义的表空间均不可以改名 ---------》users -------------->temp --------------->undo
表空间属性:
自扩展 auto extend on
create tablespace aa datafile '/u01/oracle/oradata/orcl/t1.dbf' autoextend on next 100M maxsize 5G;
alter teblespace aa filename '/u01/oracle/oradata/orcl/t1.dbf' autoextend on; 在这里注意的是不能直接修改表空间信息;
修改表空间的大小方法:
重新修改
alter tablespace name resize 100M;
添加数据文件
alter tablespace name add dafile '/u01/oracle/oradata/orcl/t2.dbf' size 100M;
自扩展
alter tablespace aa filename '/u01/oracle/oradata/orcl/t1.dbf' autoextend on;
这里要注意的是如果通过增加数据文件来扩展表空间则CKPT进程的代价会增加。
数据文件做条带化的话会有优势,而且增加数据文件的时候io的情况也会优化。io的情况和数据库的并行度有关
数据文件的重命名和重定位
1.可以offline 的数据文件
offline数据文件
os层面改名
alter tablespace name rename datafile '/u01/oracle/oradata/t1.dbf' to '/u02/oracle/oradta/t2.dbf';
将表空间online
可能存在介质恢复recover
2.不可以offline的数据文件
那么需要将数据库启动到mount状态下进行修改。
os层面改名
alter tablespace name rename datafile '/u01/oracle/oradata/t1.dbf' to '/u02/oracle/oradta/t2.dbf';
mount不存在offline的状态
删除表空间
删除了表空间是将数据全部清空
system 不可以
sysaux 不可以
undo 不可以
temp 不可以
drop tablespace name including contents and datafiles ;
including contents 表示删除表空间的同时删除表空间上的所有段。物理文件不会被删除。
including contents and datafiles 删除表空间,数据文件以及表空间上的段的信息。同时删除os当中的数据信息。
如果including contents
那么想要重用之前的datafile那么就使用
create tablespace t1 datafile '/u01/oracle/oradata/orcl/t1.dbf' reuse;
创建非标准块表空间
alter system set db_16k_cache_size=16m scope=spfile;
create tablespace tbs_test datafile '/u01/oracle/oradata/orcl/t1.dbf' size 500M
autoextend on next 4m maxsize unlimited
blocksize 16k
extent management local autoallocate
segment space management auto;
这里必须先定义这里的blocksize 16k的大小否则在数据库中创建非标准块(8k)的时候会出现ora-29339:表空间大小16384大小不匹配。
领取专属 10元无门槛券
私享最新 技术干货