StringBuilder:让字符串处理更高效的技术
在日常编程中,字符串处理是最常见的操作之一。无论是拼接用户信息、生成动态内容,还是构建复杂的数据格式,我们都离不开字符串操作。然而,很多人可能不知道,不当的字符串处理方式会严重影响程序性能。今天我们就来探讨一个让字符串处理更高效的工具——StringBuilder。为什么需要StringBuilder在了解StringBuilder之前,我们先来看一个简单的例子。假设我们需要将1000个数字拼接成
DG主库发生表误删除后利用备库进行恢复的方法实践
Dataguard中主库发生误操作后,当然可以利用flashback transaction、flashback query、flashback table等技术进行恢复。但是当上述方法都有其局限性,比如受制于undo表空间是否还存在Before-image,回收站里的表否被清理等。本文介绍的是如何把备库上完好的数据恢复到主库上,前提是备库必须:开启延迟应用归档或者打开f...
一个RMAN备份集所包含的数据文件个数是由哪些因素来决定的?
<span style="color:#000000;"><br /><span style="font-size:16px;"><strong>前不久在处理一个RMAN备份问题时,想到过这样一个问题:一个RMAN backupset里会包含多少个数据文件?经过之后的一系列测试得到的结论是:<br /></strong></span><span style="font-size:16px;"><strong>一个Backupset里包含多少个datafile,与...
重建controlfile之后如何快速导入RMAN备份信息
<p><span style="color:#000000;font-size:14px;"><strong>重建controlfile之后备份信息会丢失,可以使用catalog backuppiece、catalog start with等命令将备份文件信息导回到controlfile,如果备份很多且分散在不同的目录下就需要编辑n条命令来实现导回,而且还会有遗漏;</strong></span><br /><span style="color:#00...
没有连接target database的情况下执行RMAN duplicate可能引发的问题
<p><span style="color:#000000;font-size:14px;"><strong>前不久对某个数据库执行backup-based rman duplicate,duplicate过程中没有任何报错,但是duplicate完成后得到的副本数据库并没有包含我们所需要的数据。</strong></span><br /><span style="color:#000000;font-size:14px;"><strong>下面是场景的重现:</stron...
没有备份的情况下如何处理logical & physical corrupt block
###生成测试表和索引create tablespace tsind datafile '/oradata06/testaaaaa/tsind_1.dbf' size 32m;create table t0609_2 tablespace TS0608 as select *from all_users where 0=1;insert into t0609_2 select * from all_users where rownum<2;commit;alter table t0609_2 minimize records_per_block;delete t...
配置了Fast Recovery Area可能会导致snapshot controlfile被频繁更新
snapshot controlfile是current controlfile在某一时刻的快照,以下两种情况会生成snapshot controlfile1、resync catalog2、backup controlfile查看snapshot controlfile的存放路径RMAN> show SNAPSHOT CONTROLFILE NAME;RMAN configuration parameters for database with db_unique_name TSTDB1 are:CONFIG...
recover database skip [forever] tablespace XXX 的用法介绍
recovery过程中可以临时将某个暂无法恢复出来的tablespace skip掉,先恢复其它部分,待recovery database完成并open database后,再recover这个被skip掉的表空间;recover database skip [forever] tablespace ... 可以支持以上功能////////////////// complete recovery场景下使用 skip tablespace XXX///////////////...
RMAN duplicate必须指定DBID的场景
RMAN duplicate 在dbname相同但dbid不同的情况下需要指定dbid,下面来模拟一下这个场景:###先记录当前数据库的信息并生成全库备份SYS@tstdb1-SQL> select dbid,name from v$database; DBID NAME---------- ---------2030654775 TSTDB1run{allocate channel d1 device type disk;alloca...
使用RMAN duplicate对源库的某个incarnation进行duplicate操作时遇到的问题
按照文档的介绍,使用duplicate database targetdb incarnation YYY to dupdb可以针对targetdb的某个incarnation进行duplicate,但实际测试下来却有些问题////////////// 多incarnation环境搭建////////////假设数据库当前的incarnation key为A,在SCN1时刻创建t0704_11表,在SCN2时刻又创建了t0704_22表,在SCN3时刻d...
缺省undo表空间变更后执行TSPITR要注意的问题
执行TSPITR时auxiliary instance里除了有要恢复的表空间外,还必须包含system、sysaux、undo三个表空间,如果当前的undo表空间与恢复点的undo表空间不同时,就需要在recover tablespace命令里指定恢复点的undo表空间名我们要模拟的TSPITR场景:当前为T2时刻,系统缺省的undo表空间为YYY,现需要把某个表空间TSPITR到T1时...
了解什么是Soft corrupt block
简单的说soft corrupt block就是被标记为corrupt的logical corrupt block,logical corrupt block是指能够被oracle正确识别为data block的block,这些block的chkval、块首和块尾的校验值等均是正确的,但是data block存在但不仅限于如下错误:row locked by non-existent transaction - ORA-600 [4512], etc: 指的是一...
模拟oracle里的各种类型的坏块
V$DATABASE_BLOCK_CORRUPTION.corruption_type 有以下几种■ ALL ZERO - Block header on disk contained only zeros. The block may be valid if it was never filled and if it is in an Oracle7 file. The buffer will be reformatted to the Oracle8 standard for an empty block.■ FRACTUR...
使用RMAN report need backup命令检查备份时遇到一个诡异的问题
在检查一个测试库的备份时出现了这样一个问题(该测试库没有使用recovery catalog):RETENTION POLICY设置为REDUNDANCY 1,运行report need backup提示有一个datafile需要备份,但使用list命令查看这个datafile已经有3个备份,满足retention policy的设置,没有必要重新backup。以下是对这个问题的详细分析:###RMAN confi...
针对archival backup的backup optimization效果测试
archival backup,又叫历史归档备份,目的是将数据库某一时刻数据生成历史备份,备份里包含了datafile、spfile、controlfile、archivelog,这个历史备份不受retention policy的限制,通过使用backup ... keep ...指定备份的保留时长,archival backup主要应用与历史数据的永久保留以及将数据库完整恢复到另一个环境里。b...
没有tag标识备份的情况下incremental updating backup是如何运行的
incremental updating backups能够将增量备份应用在datafilecopy上,使得datafilecopy能始终保持更新,很大程度上缩短了恢复时间,典型的用法是run{recover copy of datafile 10 with tag 'df10';backup incremental level 1 for recover of copy with tag 'df10' datafile 10;}上面两次出现了tag 'df10',对datafil...
使用dbms_flashback.transaction_backout闪回事务的四种可选项介绍
Flashback transaction通过dbms_flashback.transaction_backout实现事务的闪回,考虑到被闪回的事务与其它事务间可能存在不同程度的依赖关系,oracle提供了四种闪回选项:NOCASCADE:若检测到Transaction之间存在依赖关系,则无法进行回退NOCASCADE_FORCE:若Transaction间仅存在” Write-after-write dep...
SYS_FBA_为前缀表如何服务于Flashback Data Archive
undo里的before-image受系统负荷等因素的影响保留时间较短有的时候无法完全满足flashback query、flashback version query等闪回查询较早前数据的功能要求,flashback data archive的引入正是为了解决这个问题,将before image从undo定时归档到archive table。数据库里如果创建了flashback data archive,那么后台进程FBDA...
通过Flashback Version Query了解Flashback Table的行为过程
Flashback Version Query是用来查看表中行的修改历史,在undo保留期限内能够了解到哪些transaction对哪些行进行了修改,结合flashback transaction可以对误操作进行准确定位与及时回退。这里我们利用Flashback Version Query的特性观察一下Flashback table的工作过程。1、先对常见DML操作后用flashback version query查...
Fast Recovery Area空间用满后的自动清理机制
使用Fast Recovery Area最大的好处在于oracle能够对于其中存放的备份恢复相关的对象进行自动管理,特别是在Fast Recovery Area空间利用率达到100%时能够按照保留策略对其中的transient files进行自动清理,及时腾挪出可用空间,很大程度上减少了数据库Hang的发生。下面模拟了FRA空间用满的场景,之后通过不同的处理方式使得...