暂无图片
显示unable to extend table,这个是表空间不够了吗?
我来答
分享
暂无图片 匿名用户
显示unable to extend table,这个是表空间不够了吗?

表空间.jpg

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
始于脚下

是的,表空间不足了,你可以通过alter tablespace xxx add datafile ‘文件路径’ size 10G autoextend on maxsize unlimited;来给表空间通过增加数据文件的方式扩容。

暂无图片 评论
暂无图片 有用 0
打赏 0
刘晓鹏

SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;
查一下就知道了,也可能是本地空间不足了df -h看下,如果是rac就看看grid 用户下的asmcmd lsdg;

暂无图片 评论
暂无图片 有用 0
打赏 0
Lucifer三思而后行
暂无图片

你是在导dump吗?

表空间需要手动添加数据文件

⭐️ 获取需要迁移的用户可以参考:Oracle 数据泵迁移用户创建 SQL语句

首先通过用户来获取迁移需要的表空间名称:

SELECT distinct ''''|| t.tablespace_name||''',' From dba_segments t WHERE t.owner in ('需要迁移的用户名') and t.tablespace_name not in ('USERS','SYSTEM');
复制

📢 注意:需要排除系统默认创建表空间!

通过 SQL 获取创建脚本:

SELECT 'CREATE TABLESPACE ' ||D.TABLESPACE_NAME|| ' datafile ''/oradata/orcl/' ||LOWER(D.TABLESPACE_NAME)||'01.dbf'''|| ' size '|| case when (D.total_gb - F.free_gb) > 30 then 30 else round(D.total_gb - F.free_gb + 2) end ||'G autoextend off EXTENT MANAGEMENT LOCAL;' FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 2) free_gb FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 2) total_gb FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) AND D.TABLESPACE_NAME IN ('需要创建的表空间名称');
复制

📢 注意:/oradata/orcl/ 为目标端的数据文件目录路径!

创建 shell 脚本来后台创建表空间:

以下为 ctbs.sh 脚本内容:

sqlplus / as sysdba <<EOF spool ctbs.log ## 这里填写上面👆🏻sql查询出来的语句! spool off EOF
复制

编辑好脚本之后,执行后台创建:

chmod 775 ctbs.sh sh ctbs.sh &
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏