
导入数据时报1659的错误的原因主要是数据库表空间剩余空间不足引起的。
分析原因
1、表空间剩余空间不足。
使用下面语句,查看表空间剩余空间
select Upper(ftablespace_name) "表空间名",
dtot_grootte_mb "表空间大小(M)",
dtot_grootte_mb - ftotal_bytes "已使用空间(M)",
to_char(round((dtot_grootte_mb - ftotal_bytes) /
dtot_grootte_mb 100, 2),'99099') || '%' "使用比",
ftotal_bytes "空闲空间(M)",
fmax_bytes "最大块(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 1024), 2) total_bytes,
round(max(bytes) / (1024 1024), 2) max_bytes
from sysdba_free_space
group by tablespace_name) f,
(select ddtablespace_name,
round(sum(ddbytes) / (1024 1024), 2) tot_grootte_mb
from sysdba_data_files dd
group by ddtablespace_name) d
where dtablespace_name = ftablespace_name
order by ftablespace_name;
表空间剩余空间不足时,可以根据原数据库表空间大小增加表空间。
alter tablespace 表空间名 add datafile '数据文件名' size 数据文件大小;
2、剩余表空间还很多。
使用下面语句查看原数据库表表定义,找到initial_extent值大的表,将这些表的
创建语句导出后修改initial_extent值,在目标数据库中创建后再导入数据,导入时
增加参数ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原数据库,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令将dmp文件中创建表的语句导入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST""DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM
使用文本编辑工具,查找INITIAL将过大的初始值改为65536后,将REM去除后,在数据库中创建后再使用exp导入数据,导入时增加参数ignore=y。
oracle经常需要查数据库临时表空间大小,使用率,加表空间等,这里总结临时表空间相关的语句:
0、查看实例的临时表空间
1、查询临时表空间路径:
2、新增临时表空间:
3、查询临时表空间使用情况:
查看临时表空间的使用情况
4、删除临时表空间: 删除临时表空间的一个数据文件:
5、删除临时表空间(彻底删除):
6、更改系统的默认临时表空间:
7、查看用户的临时表空间所属
8、删除临时表空间
9、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)
解释: username 正在执行sql的用户名 sql_id 正在执行的sql的的sql_id segtype 正在执行的SQL语句做的是什么 *** 作 BYTES_USED 正在执行sql语句使用的临时表空间的大小 BYTES_FREE 剩余多少临时表空间
Oracle查看用户及对应的表空间与临时表空间
删除数据库数据 *** 作: 1、解锁当前用户连接状态:
2、删除指定用户:
3、删除表空间:
查看临时表空间的数据文件的状态
oracle在导入数据时报1659的错误的原因主要是数据库表空间剩余空间不足引起的。
分析原因
1、表空间剩余空间不足。
使用下面语句,查看表空间剩余空间
select Upper(ftablespace_name) "表空间名",
dtot_grootte_mb "表空间大小(M)",
dtot_grootte_mb - ftotal_bytes "已使用空间(M)",
to_char(round((dtot_grootte_mb - ftotal_bytes) /
dtot_grootte_mb 100, 2),'99099') || '%' "使用比",
ftotal_bytes "空闲空间(M)",
fmax_bytes "最大块(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 1024), 2) total_bytes,
round(max(bytes) / (1024 1024), 2) max_bytes
from sysdba_free_space
group by tablespace_name) f,
(select ddtablespace_name,
round(sum(ddbytes) / (1024 1024), 2) tot_grootte_mb
from sysdba_data_files dd
group by ddtablespace_name) d
where dtablespace_name = ftablespace_name
order by ftablespace_name;
表空间剩余空间不足时,可以根据原数据库表空间大小增加表空间。
alter tablespace 表空间名 add datafile '数据文件名' size 数据文件大小;
2、剩余表空间还很多。
使用下面语句查看原数据库表表定义,找到initial_extent值大的表,将这些表的
创建语句导出后修改initial_extent值,在目标数据库中创建后再导入数据,导入时
增加参数ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原数据库,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令将dmp文件中创建表的语句导入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST""DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM
使用文本编辑工具,查找INITIAL将过大的初始值改为65536后,将REM去除后,在数据库中创建后再使用exp导入数据,导入时增加参数ignore=y。
以上就是关于数据无法导入怎么办 导入不了数据如何解决全部的内容,包括:数据无法导入怎么办 导入不了数据如何解决、关于临时表空间问题总结、无法连接Oracle数据库使用Docker容器后问题,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)