扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.网上常见SQL,大约超过100w后,会提示内存不足,创建失败:
10年积累的网站制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有延安免费网站建设让你可以放心的选择与我们合作。
2.使用数据工具进行mock,如DBEAVER.
进入到表数据详情后,
右击,选择Mock Data Generator即可。
配置好总体大小即批次大小即可.
测试步骤:
1、导数据之前需要修改temp表空间大小,使其能够容纳下相应的导入数据
mkdir -p /home/oracle/oradata/orcl
create temporary tablespace temp1 tempfile '/home/oracle/oradata/orcl/temp1.dbf' size 100m;
alter database default temporary tablespace temp1;
drop tablespace TEMP;
create temporary tablespace temp tempfile '/home/oracle/oradata/orcl/temp.dbf' size 1g;
alter database default temporary tablespace temp;
drop tablespace temp1;
(也可用rm删除temp1.dbf)
上述操作也可通过EM管理界面直接将TEMP表空间扩到1G.
2、安装swingbench测试软件,直接解压缩即可运行。
unzip -x swingbench25919.zip
3、进入swingbench/bin目录执行oewizard导入1G测试数据,并修改数据库连接名和DBA密码
输入导入数据文件存放位置:
数据导完之后在该目录下运行swingbench执行测试,修改数据库连接名,用户连接数设置为300,测试时间设置为10分钟
设置完成之后,点击左上角绿色按钮执行测试
数据库备份是保障数据库安全的重要手段之一 绝大部分数据库管理员都已经发现对数据库进行备份的重要性 甚至对其具有很大的依赖性 为此数据库管理员必需肯定备份策略确实可靠 一个没有经过测试的备份策略其实比没有进行备份更加糟糕 因为它会给各位数据库管理员一种假的安全感
但是笔者发现不少的数据库管理员在遇到服务器故障时 却不时的会遇到无法顺利利用故障文件恢复数据库或者数据库备份文件不完整等问题 这主要是因为大家只注重数据库的备份策略 但是却忽视了数据库备份文件的测试策略 如果备份文件不完整或者出现错误的话 那么及时备份策略制定的再好 也是竹篮子打水一场空 为此笔者在这里郑重建议大家 数据库备份测试策略与数据库备份策略一样的重要 那么做为Oracle数据库管理员 该如何做好这方面的测试工作呢?对此笔者有一家几个招数 或许能够帮助大家解决这方面的问题
招数一 模拟各种现实中可能出现的问题
很多原因会导致数据库服务器罢工 而这些罢工很有可能造成数据库中现有数据的损坏 为此数据库管理员必需凭借自己的经验列举出现实中可能出现的故障情况 然后针对这些可能发生的故障 去测试现有备份策略能否有效的应对
如笔者给企业部署完Oracle数据库之后 一般都会模拟各种现实中可能出现的问题 然后针对这些问题进行一一测试 如笔者会在一个更新事务处理的过程中 突然关闭电源 然后再重新启动数据库服务器 查看这次断电事故对服务器可能造成哪些影响?能否利用现有的备份文件与日志文件把数据库中的数据恢复到断电的那一个点上?如笔者还会测试用户错误的更新了大量的数据 并且已经递交了事务 此时需要测试看看能否利用重做日至文件来恢复更新之前的数据?如企业如果采用了磁盘阵列的话 那么笔者还需要测试磁盘阵列的有效性 如把某一块硬盘拿掉 添加上一块新的硬盘 看看其数据库服务器能否正常恢复数据 总之一句话 通过模拟各种失败以及从这些失败中进行恢复 看看能否恢复到故障发生时的点 这些测试工作将会给数据库管理员获得书本上没有的无价经验
具体来说 笔者认为数据库管理员在模拟失败时 以下几个失败的原因不能够放过 一是服务器突然断电 这可能导致配置文件的错误导致无法访问或者数据的丢失;二是重做日志发生损坏 这可能导致数据库管理员无法把数据恢复到故障发生时的点;三是硬盘发生故障而导致数据丢失 这主要是要测试备份文件异地存放的有效性;四是数据批量更新的错误处理 这主要是测试数据库管理员在进行批量更新之前是否有先对数据库进行备份的习惯 等等 数据库管理员只有预先模拟现实中各种可能出现的问题 并得到解决方案 只有如此 在真正遇到这些问题的时候 数据库管理员才能够临危不乱 迅速解决故障
当然这些测试最好是能够在另外一台主机上进行测试 在生产服务器上进行这些破坏性测试的话 可不是一个明智的做法
招数二 需要详细记录备份与还原测试的数据
笔者建议数据库管理员 无论你做了哪些测试 测试的工作是否充分 都需要一五一十的记录下相关的备份与还原测试数据 因为这些故障可能随时发生 到那个时候可没有时间让数据库管理员去研究分析该如何处理 那时如果数据库管理员有类似文档的话 那么只要按照相关文档去处理 就可以减少中间思考的时间 可以迅速利用备份文件与日志文档进行数据库恢复作业
具体来说 笔者认为数据库管理员在测试的时候需要记录如下内容
一是需要记录遇到故障时还原所需要用到的文件以及基本的操作步骤 如当发生硬盘故障时 此时需要恢复故障硬盘中的数据 需要用到哪些文件(可能需要用到保存在其他硬盘上的备份文件与重做日志文件) 以及一些操作步骤 记录这些内容有利于数据库管理员在遇到问题的时候迅速找到这些文件并且熟练的应用这些文件进行数据库的恢复作业
二是需要记录备份或者恢复过程中遇到的意外事件 虽然只是模拟失败 但是这个故障以及解决故障过程中出现的意外事件 在实际工作中很有可能会出现 而数据库管理员在遇到这些意外事件时能否轻松应对则是考验数据库管理员能力的地方 笔者在日常工作中 对于这些意外事件无论大小都会一一的进行记录 并且对于如何解决这些意外也会做相关的说明 要知道 这些内容可是数据库管理员的无价之宝 因为这些东西在任何教科书上或者讲座上都是学不到的 只要在模拟过程中经历了一次失败 数据库管理员就应该把当时的情况以及如果处理这种意外事件的解决方案加入到你的工作笔记中 必须切记 意外事件往往不会只发生一次 它很有可能在未来的某个时刻再次发生 养成及时更新自己的工作笔记的习惯 有利于数据库管理员提高自身的水平 提高应对意外事件的能力
三是要勤于跟其他这方面的专家进行交流 如笔者经常会逛各种论坛 在论坛上 有些数据库管理员会把自己遇到的问题在上面列出来 有不少就是在备份或者恢复过程中出现的一些意外事件 这些意外事件有些是数据库管理员以前遇到过的 而有些则是由于工作经验限制没有碰见过的 但是很有可能在以后的工作中为碰到 为此数据库管理员需要预先去了解 收集这些别人碰到的问题 并在可能的情况下模拟这些意外事件 并寻求解决方案 因为别人遇到的意外情况 很可能我们自己在下次也可能会遇到 防范与未然 提早想好解决措施 有利于我们在遇到这些问题时 迅速采取有力的措施解决
招数三 测试 测试 再测试
俗话说 熟能生巧 如果数据库管理员了解了意外事件 也知道该如何处理 但是如果因为不熟悉相关的操作 则很可能会因为操作不当而造成新的意外事件或者造成不可挽回的损失 所以数据库管理员在工作比较空的时候 需要对这些解决方案进行测试 一来是看看随着数据库版本的升级 这些解决方案是否仍然有效;二是提高自己操作的熟练程度 确保以后在遇到类似故障时能够万无一失的进行操作
为了达到这个目的 笔者对自己提出了如下几个要求
一是当数据库新版本出来之后 需要对工作笔记中记录下的解决方案进行测试 以判断这些解决方案是否过期 没有过期最好 如果过期了的话 则必须解决它 如需要考虑这些意外事件在新版中是否仍然会出现 如果仍然会出现的话 则就要在新版本功能的基础上寻找新的解决方案 有些意外事件则可能会随着数据库版本的升级而被解决掉 故数据库管理需要随着数据库版本的升级而不断的进行测试 以提高相关解决方案的时效性
二是给企业部署完成新的解决方案之后 需要挑选一些重要的内容进行测试 如笔者给企业部署完成Oracle数据库(采用磁盘阵列) 如果要模拟所有的失败情况并测试相关对解决方案是否可行是不现实的 因为这需要花费很长的时间 得不偿失 此时笔者会挑选一些重要的或者经常发生的意外情况 并测试相关的解决方案是否可行 同时 这也是对企业用户的一种培训 以提高他们独立自主解决问题的能力 如对于上面这个案例 笔者会跟数企业用户一起 进行磁盘阵列有效性的测试 如换一块新的硬盘之后看看数据库服务器是否会自动恢复相关的数据 把企业用户培养起来了 那么我们数据库管理员也可以轻松很多
三是对于一些新的解决方案也需要进行测试 如笔者平时比较喜欢逛论坛 在论坛上有人提出一个问题 后面有很多数据库管理员会把相关的方案写出来 这些方案有些可能是数据库管理员已经知道了的;有些则是他们还没有想到的 此时数据库管理员需要对新的方案进行测试 因为也许这个新的解决方案能够在更短时间内解决故障
lishixinzhi/Article/program/Oracle/201311/16673
我也是第一次听到这个词,不过可以猜一下。
个人认为所谓的数据库自动化,无非就是过程,包,触发器这些你编译的脚本能否自动运行。
debug是找过程错误的方式,然后就是假数据调试,最后就是联调。
这么说吧,和过程出错了,找出错的地方大体上类似。只不过可能多了连接测试(出现争用或者锁表的几率),相应时间测试(平均运行多上时间,是否符合规定等等),甚至可能包括压力测试(一次能满足多少个操作)。等等。
还有一种就是基于时间的,主要是计划任务和定时任务,这两个就是先执行,看看能不能执行,然后在修改时间,到几分钟后,看能不能执行。我认为主要可能就是这几个方面。
另外多句嘴,自动化测试应该有严格的测试用例,这个一般要测试部门编写,不然万一出了问题找谁啊?所以这个问题还真的没想过。
1:服务器环境
操作系统:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
CPU:Intel(R) Xeon(R) CPU E5607 @ 2.27GHz 8核
内存:16G
Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64)
Oracle:Oracle Database 11g Enterprise Edition Release
详细数据测试(操作通过存储过程完成)
数据插入
50并发Mysql插入性能图示(横坐标:当前数据总量,纵坐标:每秒执行次数){平均值:4841.98}
50并发Oracle插入性能图示(横坐标:执行时间(秒),纵坐标:每秒执行次数){平均值:1459.408}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流