暂无图片
oracle分区表数据导入效率
我来答
分享
Uncopyrightable
2022-01-07
oracle分区表数据导入效率

Oracle创建分区表,使用insert into * select方式导入数据很慢,除了insert into、数据泵导入数据还有什么方式能快速导入呀?
如果启用并行会加速导入速度嘛?或者nologging呐?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Lucifer三思而后行
暂无图片

开并行和nologging会加快导入速度,建议使用。

ctas 创建分区表:

create table 分区表名 NOLOGGING PARALLEL 8 TABLESPACE 表空间名称 AS select /*+PARALLEL(t,8)*/ * from 原表名 t where 1=1;
复制

insert方式:

alter session enable parallel dml; insert /*+ append parallel(表名,8) */ into 表名 select /*+ parallel(原表,8)*/* from 原表; alter session disable parallel dml;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
薛晓刚

本身insert into select不会慢,这种每秒1万条数据是最差的。实际会很快。

如果慢问题可能在select上,他慢。

暂无图片 评论
暂无图片 有用 0
打赏 0
Uncopyrightable
题主
2022-01-07
这就尴尬了,弄成rowid或者开窗函数方式好了;
DarkAthena

还可以用sqlldr

暂无图片 评论
暂无图片 有用 1
打赏 0
Thomas

二楼专家,我测试了下,CTAS方式,nologging和开并行确实可提高速度,但是insert into方式的效果并不明显,请看例子:

QL> alter session enable parallel dml;

Session altered.

Elapsed: 00:00:00.00
SQL> insert /*+append parallel(tb_zxp,8)*/ into tb_zxp nologging select /*+parallel(tb_waybill,8)*/ * from tb_waybill where corp_id<>'0032';

248588 rows created.

Elapsed: 00:00:11.87
SQL> rollback;

Rollback complete.

Elapsed: 00:00:00.02
SQL> alter session disable parallel dml;

Session altered.

Elapsed: 00:00:00.01
SQL> insert into tb_zxp select * from tb_waybill where corp_id<>'0032';

248588 rows created.

Elapsed: 00:00:12.47

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
2022-01-07
对的,CTAS的确比insert into更快,以前做报表要得急的时候我都是create table as
回答交流
Markdown


请输入正文
提交
相关推荐
应用做某些操作的时候,oracle服务器的磁盘就飙升到100%,导致应用卡慢,请问各位大神,有什么办法进行排查吗?
回答 2
哪些操作啊,抓到的sql放出来啊。
oracle11g rac psu升级问题
回答 5
已采纳
你也算是亲自体验了,能用是能用,但是会把数据库当做单机进行升级更新,然后莫名其妙的问题就出来了,最好是匹配的集群补丁包。
客户端连接数据库报ORA12514
回答 7
plsqldeveloper也是可以不用安装客户端的,下载个instantclient直接解压,在plsqldeveloper配置到相应的路径就可以连了
Oracle 统计各个表记录数的查询语句,非存储过程触发器的语句怎么写?
回答 4
下面这个sql需要在12c及以上版本执行,如果低于12c,&nbsp;需要先创建函数,&nbsp;再执行最后的select即可:
Oracle有powerlinux版本么
回答 3
你的Power服务器CPU是什么?Power6、Power7、Power7、Power8?以上PowerCPU结合RHEL6的bigendian版本是可以安装的,从Power9开始CPU就是littl
oracle基础信息脚本?
回答 1
已采纳
–获取数据库版本SELECTFROMv$version;–获取实例名SELECTinstancenameFROMv$instance;–获取数据库启动时间SELECTstartuptimeFROMv$
oracle在公司使用,他们怎么知道我们用了呢?内网
回答 2
已采纳
恩,内网不会知道,补丁的话就在墨天轮上找就行
Oracle impdp 如果要导入到一个新的精简表,不要部分列,可以导入的时候选择部分导入吗?
回答 2
已采纳
9i创建新表取部分字段导入10g,11g使用ORACLEDATAPUMP12c及以上数据泵支持VIEWSASTABLES即创建视图,数据表可以处理视图然后导出视图,实际当表导入就可以。参考链接http
ADG 人满备份异机恢复启不来
回答 3
异机恢复目录结构一致的话可以用主库的控制文件,但异机恢复一般结构都不一样,则可以重建控制文件,或者使用备库的控制文件想办法把库拉起来然后切成读写库。
数据块损坏
回答 5
这个修复sql也是在本平台中找的,这个环境没有开启归档,dbv的检查也是如下提示:ORA01578:ORACLE数据块损坏(文件号12,块号116699)ORA01110:数据文件12:‘E:\ORA