在Oracle数据迁移中,可能有成百上千个表,有些表很大,有些表又很
在Oracle数据迁移中,可能有成百上千个表,有些表很大,有些表又很小。
如果启用了多个并行的进程,可能会有资源分配上的问题。
比如下面有10个表,100代表预计的时间为100分钟。
table1 100
table2 90
table3 90
table4 80
table5 80
table6 70
table7 60
table8 60
table9 50
table10 40
如果分为4个进程来并行执行,可能一种比较理想的方案就是
parallel1: table1,table8
parallel2: table2,table5,table9
parallel3: table3,table6,table9
parallel4: table4,table7
但是在实际的执行中,可能因为表的分区,表的数据类型,,表的存储的不同,可能实际的执行时间会有很大的差别,
可能paralle2,3,4已经执行完了,而parallel1还没有执行完50%。
这样,table8就一直pending在那了。
在这样的情况下,可以考虑使用动态并行,就是能够在后台启用一些并行的进程,比如需要4个并行进程,就使用nohup启用4个并行的进程。
不做具体的数据操作。
parfile=par2_tab_parall.lst
logfile=`echo $parfile|awk -F. '{print $1}`".log"
while true
do
if [ -f $parfile ]
then
tab_exists_flag=`cat $parfile |wc -l`
if [ ${tab_exists_flag} -eq 0 ]
then
sleep 5;
elif [ ${tab_exists_flag} -gt 0 ]
then
tab_name=`cat $parfile`
ksh appendata.sh $tab_name >> $logfile
touch ${parfile}.tmp
mv ${parfile}.tmp ${parfile}
fi
fi
done
我们使用appendata.sh来模拟实现数据的插入,其实不会做数据的真实插入,这是模拟日志的内容。
echo $1
sqlplus -s n1/n1 set time on
set timin on
set pages 0
select 'insert into '||'$1;' from dual;
select 'commit;' from dual;
EOF
if [ $? -eq 0 ]
then
echo '' >parallel1.lst
fi
使用如下的命令来启用一个进程,比如下面的命令启用进程2,如果启用其他的进程,命令类似
nohup ksh par2.sh > par2_tab_parall.log &
只需要在一个文件中放入处理的表名即可。如果是进程2,就在par2_tab_parall.lst中放入表名,假设表为test
par2_tab_parall.lst
[ora11g@rac1 parallel]$ cat par2_tab_parall.lst
test
如果放入表test,之后,就会发现第2个进程就开始处理表test了
test
insert into test;
Elapsed: 00:00:00.00
commit;
Elapsed: 00:00:00.01
再放入一个表,马上就会发现进程开始处理表tab_test了,如果没有表的时候,它就在后台做sleep工作。
[ora11g@rac1 parallel]$ echo tab_test > par2_tab_parall.lst
tab_test
insert into tab_test;
Elapsed: 00:00:00.01
commit;
Elapsed: 00:00:00.00
在CentOS 6.4下安装Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虚拟机中安装步骤
Debian 下 安装 Oracle 11g XE R2
本文永久更新链接地址:

本文探讨了Docker中的优化MySQL内存使用量。 它讨论了监视技术(Docker统计,性能架构,外部工具)和配置策略。 其中包括Docker内存限制,交换和cgroups

本文介绍了MySQL的“无法打开共享库”错误。 该问题源于MySQL无法找到必要的共享库(.SO/.DLL文件)。解决方案涉及通过系统软件包M验证库安装

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

本文比较使用/不使用PhpMyAdmin的Podman容器直接在Linux上安装MySQL。 它详细介绍了每种方法的安装步骤,强调了Podman在孤立,可移植性和可重复性方面的优势,还

本文提供了SQLite的全面概述,SQLite是一个独立的,无服务器的关系数据库。 它详细介绍了SQLite的优势(简单,可移植性,易用性)和缺点(并发限制,可伸缩性挑战)。 c

本指南展示了使用自制在MacOS上安装和管理多个MySQL版本。 它强调使用自制装置隔离安装,以防止冲突。 本文详细详细介绍了安装,起始/停止服务和最佳PRA

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版
视觉化网页开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。