Oracle表空间操作[紧在11G中进行验证]:
注:确认Oracle数据版本[select * from v $ version;]
提前准备:
修改表空间状态[离线/在线]至离线;
数据库管理员可以在数据库处于开启(打开)状态时令除SYSTEM表空间(tablespace)之外的任何表空间联机(online)(可访问)或脱机(offline)(不可访问)。
1.表空间状态修改:
1.1查看表空间状态的命令:
从dba_tablespaces中选择tablespace_name,status;
1.2状态修改:
alter tablespace tablespace_name脱机参数; - 脱机(本次使用)
1.2.1参数 - 脱机表空间选项
正常
如果表空间所有数据文件都没有错误,表空间可以正常脱机。写入错误导致表空间所有数据文件都不能脱机。当指定OFFLINE NORMAL时,Oracle对所有数据文件一边进行检查一边将他们脱机。
临时
表空间能临时脱机,即使表空间的一个或多个数据文件有错误。当指定OFFLINE TEMPORARY选项时,Oracle将还没脱机的数据文件脱机,同时对他们进行检查。如果没有数据文件脱机,然后用临时选项脱机,当联机表空间时不需要介质恢复。但是,如果有表空间的文件因写入错误脱机,然后将表空间临时脱机,在将表空间联机之前需要介质恢复。
即时
表空间能立即脱机,不等Oracle对任何数据文件做检查。在指定OFFLINE IMMEDIATE的情况下,当联机表空间需要介质恢复。如果数据库运行在NOARCHIVELOG模式下,表空间不能立即脱机。
为了恢复
将在恢复集中的数据库表空间脱机,以便进行时间点恢复。
alter tablespace tablespace_name online; - 联机
alter tablespace tablespace_name只读; - 只读
将表空间的状态修改为只读之前,需要注意如下的事项:
1.表空间必须处于在线状态
2.表空间不能包含任何事务的回退段
3.表空间不能正处于在线的数据库备份期间
alter tablespace tablespace_name read write; - 读写
修改表空间的状态为读写,也需要保证表空间处于在线状态。
2.修改表空间中数据文件的状态。数据文件的状态有三种:online / offline / offline drop。
alter database datafile file_name online | offline | offline drop
网上表示联机状态,此时数据文件可用;
离线表示脱机状态,此时数据文件不可用;
离线删除这会删除数据文件,与离线一样用于设置数据文件不可用,但是它用于数据库运行在非归档模式下的情况。
将数据文件设置为脱机状态时,不会影响到表空间的状态;但是表空间设置为脱机状态时,属于该表空间的的所有数据文件都被设置为脱机状态
2.甲骨文表空间中的数据文件进行移动[调整表空间为脱机状态]
数据文件是存储在磁盘中的物理文件,它的的大小收到磁盘大小的限制。如果数据文件所在的磁盘空间不够,则需要将该文件移动到新的磁盘中保存。
2.1将该需要移动的数据文件拷贝移动到新的磁盘中,此时可以对数据文件重命名;
2.2将移动的数据文件文件的新路径,指示个表空间:
alter tablespace tablespace_name rename datafile'old_directoy_name'to'new_directory_name';
2.3验证语句:
从dba_data_files中选择tablespace_name,file_name,其中tablespace_name ='tablespace_name';
2.表空间重命名[表空间状态为offline]:
alter tablespace tablespace_name rename to new_tablespace_name;
3.修改表的空间
alter table TABLE_NAME move tablespace TABLESPACENAME;
alter table TABLE_NAME将move lob(lob_item1,lob_item2,lob_item2,...)存储为(tablespace users);
更详细的参见: http://mp.blog.youkuaiyun.com/postedit/79146953
查询当前用户下的所有表
从user_tables中选择table_name;
注意:选择'alter table'||table_name ||' 移动表空间tablespacename;'来自user_tables;
4.修改索引的空间
改变索引INDEX_NAME重建表空间TABLESPACENAME
查询当前用户下的所有索引
从user_indexes中选择index_name;
根据oracle的体系结构(表,段,区,块),一张表就是一个或多个段;
查看用户表,索引,分区表占用空间
选择segment_name,sum(bytes)/ 1024/1024 ||'M'从user_segments组中删除MBbytese by segment_name order by 2 desc;
表占用空间
select segment_name,sum(bytes)/ 1024/1024 ||'M'Mbytese from user_segments where segment_type ='TABLE'group by segment_name order by 2 desc;
索引占用空间
select segment_name,sum(bytes)/ 1024/1024 || user_segments || M'where segment_type ='INDEX'by segment_name by order by 2 desc;
分区表TABLE PARTITION占用空间
select segment_name,sum(bytes)/ 1024/1024 ||'M'从user_segments开始Mbytes where segment_type ='TABLE PARTITION'group by segment_name order by 2 desc;
表空间大小使用情况
查看数据文件大小
从dba_data_files中选择tablespace_name,file_name,bytes / 1024/1024 ||'M'ssize大小为1;
查看表空间大小
select tablespace_name,sum(bytes)/ 1024/1024 || from'd'data_files group''M'msize by tablespace_name order by 1;
4. 删除表空间(需要使用drop tablespace语句)
删除表空间tablespace_name[包括内容[和数据文件]]
一个。包括内容表示删除时,删除表空间中所有数据库对象。如果删除的表空间中有数据库对象,则必须使用此选项。
湾和datafiles表示删除表空间的同时,删除表空间中的数据文件。如果不使用此选项,则删除表空间实际上仅仅是从数据字典和控制文件中将这该表空间的有关信息删除,而不会删除操作系统中与该表空间相对于的数据文件。
删除语句详见如下:
删除空的表空间,但是不包含物理文件
删除表空间tablespace_name;
删除非空表空间,但是不包含物理文件
删除表空间tablespace_name包括内容;
删除空表空间,包含物理文件
删除包含数据文件的表空间tablespace_name;
删除非空表空间,包含物理文件
删除表空间tablespace_name包括内容和数据文件;
如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
删除表空间tablespace_name包括内容和数据文件CASCADE CONSTRAINTS;
注:确认Oracle数据版本[select * from v $ version;]
提前准备:
修改表空间状态[离线/在线]至离线;
数据库管理员可以在数据库处于开启(打开)状态时令除SYSTEM表空间(tablespace)之外的任何表空间联机(online)(可访问)或脱机(offline)(不可访问)。
1.表空间状态修改:
1.1查看表空间状态的命令:
从dba_tablespaces中选择tablespace_name,status;
1.2状态修改:
alter tablespace tablespace_name脱机参数; - 脱机(本次使用)
1.2.1参数 - 脱机表空间选项
正常
如果表空间所有数据文件都没有错误,表空间可以正常脱机。写入错误导致表空间所有数据文件都不能脱机。当指定OFFLINE NORMAL时,Oracle对所有数据文件一边进行检查一边将他们脱机。
临时
表空间能临时脱机,即使表空间的一个或多个数据文件有错误。当指定OFFLINE TEMPORARY选项时,Oracle将还没脱机的数据文件脱机,同时对他们进行检查。如果没有数据文件脱机,然后用临时选项脱机,当联机表空间时不需要介质恢复。但是,如果有表空间的文件因写入错误脱机,然后将表空间临时脱机,在将表空间联机之前需要介质恢复。
即时
表空间能立即脱机,不等Oracle对任何数据文件做检查。在指定OFFLINE IMMEDIATE的情况下,当联机表空间需要介质恢复。如果数据库运行在NOARCHIVELOG模式下,表空间不能立即脱机。
为了恢复
将在恢复集中的数据库表空间脱机,以便进行时间点恢复。
alter tablespace tablespace_name online; - 联机
alter tablespace tablespace_name只读; - 只读
将表空间的状态修改为只读之前,需要注意如下的事项:
1.表空间必须处于在线状态
2.表空间不能包含任何事务的回退段
3.表空间不能正处于在线的数据库备份期间
alter tablespace tablespace_name read write; - 读写
修改表空间的状态为读写,也需要保证表空间处于在线状态。
2.修改表空间中数据文件的状态。数据文件的状态有三种:online / offline / offline drop。
alter database datafile file_name online | offline | offline drop
网上表示联机状态,此时数据文件可用;
离线表示脱机状态,此时数据文件不可用;
离线删除这会删除数据文件,与离线一样用于设置数据文件不可用,但是它用于数据库运行在非归档模式下的情况。
将数据文件设置为脱机状态时,不会影响到表空间的状态;但是表空间设置为脱机状态时,属于该表空间的的所有数据文件都被设置为脱机状态
2.甲骨文表空间中的数据文件进行移动[调整表空间为脱机状态]
数据文件是存储在磁盘中的物理文件,它的的大小收到磁盘大小的限制。如果数据文件所在的磁盘空间不够,则需要将该文件移动到新的磁盘中保存。
2.1将该需要移动的数据文件拷贝移动到新的磁盘中,此时可以对数据文件重命名;
2.2将移动的数据文件文件的新路径,指示个表空间:
alter tablespace tablespace_name rename datafile'old_directoy_name'to'new_directory_name';
2.3验证语句:
从dba_data_files中选择tablespace_name,file_name,其中tablespace_name ='tablespace_name';
2.表空间重命名[表空间状态为offline]:
alter tablespace tablespace_name rename to new_tablespace_name;
3.修改表的空间
alter table TABLE_NAME move tablespace TABLESPACENAME;
alter table TABLE_NAME将move lob(lob_item1,lob_item2,lob_item2,...)存储为(tablespace users);
更详细的参见: http://mp.blog.youkuaiyun.com/postedit/79146953
查询当前用户下的所有表
从user_tables中选择table_name;
注意:选择'alter table'||table_name ||' 移动表空间tablespacename;'来自user_tables;
4.修改索引的空间
改变索引INDEX_NAME重建表空间TABLESPACENAME
查询当前用户下的所有索引
从user_indexes中选择index_name;
注释:选择'改变索引' ||index_name ||'重建表空间tablespacename;'来自user_indexes;
3.Oracle表空间使用情况:
查看表或索引占用空间大小:根据oracle的体系结构(表,段,区,块),一张表就是一个或多个段;
查看用户表,索引,分区表占用空间
选择segment_name,sum(bytes)/ 1024/1024 ||'M'从user_segments组中删除MBbytese by segment_name order by 2 desc;
表占用空间
select segment_name,sum(bytes)/ 1024/1024 ||'M'Mbytese from user_segments where segment_type ='TABLE'group by segment_name order by 2 desc;
索引占用空间
select segment_name,sum(bytes)/ 1024/1024 || user_segments || M'where segment_type ='INDEX'by segment_name by order by 2 desc;
分区表TABLE PARTITION占用空间
select segment_name,sum(bytes)/ 1024/1024 ||'M'从user_segments开始Mbytes where segment_type ='TABLE PARTITION'group by segment_name order by 2 desc;
表空间大小使用情况
查看数据文件大小
从dba_data_files中选择tablespace_name,file_name,bytes / 1024/1024 ||'M'ssize大小为1;
查看表空间大小
select tablespace_name,sum(bytes)/ 1024/1024 || from'd'data_files group''M'msize by tablespace_name order by 1;
4. 删除表空间(需要使用drop tablespace语句)
删除表空间tablespace_name[包括内容[和数据文件]]
一个。包括内容表示删除时,删除表空间中所有数据库对象。如果删除的表空间中有数据库对象,则必须使用此选项。
湾和datafiles表示删除表空间的同时,删除表空间中的数据文件。如果不使用此选项,则删除表空间实际上仅仅是从数据字典和控制文件中将这该表空间的有关信息删除,而不会删除操作系统中与该表空间相对于的数据文件。
删除语句详见如下:
删除空的表空间,但是不包含物理文件
删除表空间tablespace_name;
删除非空表空间,但是不包含物理文件
删除表空间tablespace_name包括内容;
删除空表空间,包含物理文件
删除包含数据文件的表空间tablespace_name;
删除非空表空间,包含物理文件
删除表空间tablespace_name包括内容和数据文件;
如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
删除表空间tablespace_name包括内容和数据文件CASCADE CONSTRAINTS;