oracle 数据表 表空间迁移
2014-01-11 12:02
169 查看
数据库经常会由于规划不好或者一些其他原因导致用户的表建在system表空间的情况,这样会导致system表空间急剧膨胀而且无法缩小,并引发性能上的问题。因此建议对客户的所有数据库进行检查,并把数据表都挪到别的表空间。已经膨胀很大的system表空间的客户,建议重做数据库,并检查代码创建表的时候必须建在指定的表空间下。这样的好处是以后可以统一管理数据库表空间,并可以对数据库索引进行重建,以后也可以按类似的方法定期重建数据库索引,具体操作步骤如下:
1. 在做调整之前,一定要做完整的数据库备份。
2. 登陆系统所使用用户,用下面的语句检查数据库表所使用的表空间:
select*from user_all_tables;
tablespace_name列显示的是所使用的表空间的名称
3. 筛选出使用system表空间的表名
select*from user_all_tables wheretablespace_name =’SYSTEM’;
4. 复制table_name列到UltraEdit,使用列编辑模式,编辑命名,保存成sql脚本
然后切换至列模式
选中整列,编辑命令alter table tablename
move tablespace tablespacename;
另存为1.sql
5. 用语句检查索引使用的表空间;
select index_name,table_owner,table_name,tablespace_name
from user_indexes;
tablespace_name列显示的是所使用的表空间的名称
6. 参照第3步,复制index_name列UltraEdit,使用列编辑模式,编辑命名,保存成sql脚本
alter index inde_name rebuild tablespace tablespace_name;
7. 使用sqlplus登陆oracle数据库,按顺序执行脚本
C:\>sqlplususername/password@SID
SQLPLUS>@d:\1.sql
小机环境类似,使用oracle安装用户登陆,将脚本文件复制到/home/oracle目录
#/home/oracle>sqlplus username/password@SID
SQLPLUS>@1.sql
注:脚本文件过大,可能存在上万行,所以不建议在plsql中执行,可能会没响应。
8. 再次检查表使用的表空间,索引使用的表空间;
select*from user_all_tables;
select index_name,table_owner,table_name,tablespace_name
from user_indexes;
9. 遇到有使用clob等大对象的表,由于索引的rebuil语句无法执行,可以先将原表更名,创建新表指定表空间,将原有数据导入新表,删除旧表;
alter table tablenameArename tablenameB;
create table tablenameA
tablespace tablespacename as select * fromtablenameB;
drop table tablenameB;
1. 在做调整之前,一定要做完整的数据库备份。
2. 登陆系统所使用用户,用下面的语句检查数据库表所使用的表空间:
select*from user_all_tables;
tablespace_name列显示的是所使用的表空间的名称
3. 筛选出使用system表空间的表名
select*from user_all_tables wheretablespace_name =’SYSTEM’;
4. 复制table_name列到UltraEdit,使用列编辑模式,编辑命名,保存成sql脚本
然后切换至列模式
选中整列,编辑命令alter table tablename
move tablespace tablespacename;
另存为1.sql
5. 用语句检查索引使用的表空间;
select index_name,table_owner,table_name,tablespace_name
from user_indexes;
tablespace_name列显示的是所使用的表空间的名称
6. 参照第3步,复制index_name列UltraEdit,使用列编辑模式,编辑命名,保存成sql脚本
alter index inde_name rebuild tablespace tablespace_name;
7. 使用sqlplus登陆oracle数据库,按顺序执行脚本
C:\>sqlplususername/password@SID
SQLPLUS>@d:\1.sql
小机环境类似,使用oracle安装用户登陆,将脚本文件复制到/home/oracle目录
#/home/oracle>sqlplus username/password@SID
SQLPLUS>@1.sql
注:脚本文件过大,可能存在上万行,所以不建议在plsql中执行,可能会没响应。
8. 再次检查表使用的表空间,索引使用的表空间;
select*from user_all_tables;
select index_name,table_owner,table_name,tablespace_name
from user_indexes;
9. 遇到有使用clob等大对象的表,由于索引的rebuil语句无法执行,可以先将原表更名,创建新表指定表空间,将原有数据导入新表,删除旧表;
alter table tablenameArename tablenameB;
create table tablenameA
tablespace tablespacename as select * fromtablenameB;
drop table tablenameB;
相关文章推荐
- oracle迁移表空间数据文件
- oracle 不同表空间的数据迁移
- 00070.Oracle迁移数据字典和本地管理的表空间
- Oracle 表空间数据文件迁移图解
- oracle 数据泵迁移不同表空间数据
- Oracle 表空间数据文件迁移
- 新手学习oracle之迁移数据表空间
- ORACLE与SQL之间的数据迁移
- 用squldr2进行Oracle到MySQL的数据迁移
- Oracle利用传输表空间导出导入数据的步骤
- Oracle插入数据时出现ORA-01950:对象空间‘XXX’无权限问题
- 查看oracle中哪些SQL语句在执行和给定表空间数据量增长
- Oracle 传输表空间(Transportable Tablespaces) 示例(二) -- 跨操作系统迁移表空间(endianness格式不同)
- oracle管理表空间和数据文件
- oracle创建表空间及用户,导出导入数据备份
- oracle数据文件(表空间文件)被rm掉了。表空间如何删除
- Oracle安装盘空间不足,对.DBF文件进行迁移
- Oracle中表空间和数据文件的理解--so easy,妈妈再也不用担心我的学习!
- Oracle 表空间数据文件移动的方法
- Oracle 表空间与数据文件