标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,763)
- DB2 (22)
- MySQL (76)
- Oracle (1,605)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (588)
- Oracle安装升级 (97)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
- 可能是 tempdb 空间用尽或某个系统表不一致故障处理
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
- [MY-013183] [InnoDB] Assertion failure故障处理
- Oracle 19c 202504补丁(RUs+OJVM)-19.27
- Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
- pdu完美支持金仓数据库恢复(KingbaseES)
- 虚拟机故障引起ORA-00310 ORA-00334故障处理
分类目录归档:Oracle备份恢复
块修改跟踪特性(Block Change Tracking)
有一服务器有1T左右的数据,备份策略是(1+2)*2(1全备,2增量备份,备份保留2周期)的备份策略,随便增量备份减少了备份的体积,但是增量备份的时间,基本上和全备无差别,都是要近6小时(包括压缩)。这里没有完全体现出增量备份的强大之处,因为没有开启块修改跟踪,无论是增量备份还是全备都需要扫描所有的数据块。虽然网上说开启块修改跟踪可能会会触发一些bug,但是我找了下,10.2.0.4以后块修改跟踪还是比较稳定的,所以决定开启块修改跟踪功能,节约增量备份时间,提高系统性能。
一、开启块修改跟踪
[oracle@node1 bdump]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 – Production on Thu Nov 3 11:13:54 2011
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter database enable block change tracking using file
2 '/opt/oracle/oradata/ecp/Oracle_change.trace';
Database altered.
SQL> set long 200
SQL> col filename for a50
SQL> SELECT * FROM v$block_change_tracking;
STATUS FILENAME BYTES
———- ————————————————– ———-
ENABLED /opt/oracle/oradata/ecp/Oracle_change.trace 11599872
SQL> !/opt/oracle/oradata/ecp/Oracle_change.trace
/bin/bash: /opt/oracle/oradata/ecp/Oracle_change.trace: 权限不够
SQL> !
[oracle@node1 ~]$ ll /opt/oracle/oradata/ecp/Oracle_change.trace
-rw-r—– 1 oracle oinstall 11600384 11-03 11:05 /opt/oracle/oradata/ecp/Oracle_change.trace
[oracle@node1 ~]$ ps -ef|grep ctwr|grep -v grep
oracle 2771 1 0 11:05 ? 00:00:00 ora_ctwr_ecp
[oracle@node1 bdump]$ tail -11 /opt/oracle/admin/ecp/bdump/alert_ecp.log
Thu Nov 03 11:05:47 CST 2011
alter database enable block change tracking using file
'/opt/oracle/oradata/ecp/Oracle_change.trace'
Thu Nov 03 11:05:47 CST 2011
Block change tracking file is current.
Starting background process CTWR
CTWR started with pid=18, OS id=2771
Block change tracking service is active.
Thu Nov 03 11:05:48 CST 2011
Completed: alter database enable block change tracking using file
'/opt/oracle/oradata/ecp/Oracle_change.trace'
通过这些都可以看出来,开启块修改跟踪功能,会启动CTWR进程,并且修改的块号会被记录到指定文件中
二、关闭块改变跟踪
SQL> alter database disable block change tracking;
Database altered.
SQL> col filename for a50
SQL> SELECT * FROM v$block_change_tracking;
STATUS FILENAME BYTES
———- ————————————————– ———-
DISABLED
SQL> !
[oracle@node1 bdump]$ ll /opt/oracle/oradata/ecp/Oracle_change.trace
ls: /opt/oracle/oradata/ecp/Oracle_change.trace: 没有那个文件或目录
[oracle@node1 bdump]$ ps -ef|grep ctwr|grep -v grep
[oracle@node1 bdump]$ tail -8 /opt/oracle/admin/ecp/bdump/alert_ecp.log
Thu Nov 03 11:14:06 CST 2011
alter database disable block change tracking
Thu Nov 03 11:14:07 CST 2011
Block change tracking service stopping.
Thu Nov 03 11:14:07 CST 2011
Stopping background process CTWR
Deleted file /opt/oracle/oradata/ecp/Oracle_change.trace
Completed: alter database disable block change tracking
通过这些都可以看出来,关闭块修改跟踪功能,会关闭CTWR进程,并且删除跟踪文件(Linux系统会删除,Window不会)
三、块修改跟踪文件重命名
SQL> SELECT * FROM v$block_change_tracking;
STATUS FILENAME BYTES
———- ————————————————– ———-
ENABLED /opt/oracle/oradata/ecp/Oracle_change.trace 11599872
SQL> alter database rename file '/opt/oracle/oradata/ecp/Oracle_change.trace'
2 to '/opt/oracle/oradata/ecp/Oracle_change.trace_new';
alter database rename file '/opt/oracle/oradata/ecp/Oracle_change.trace'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-19771: cannot rename change tracking file while database is open
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2096632 bytes
Variable Size 385876488 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14680064 bytes
Database mounted.
SQL> alter database rename file '/opt/oracle/oradata/ecp/Oracle_change.trace'
2 to '/opt/oracle/oradata/ecp/Oracle_change.trace_new';
Database altered.
SQL> alter database open;
Database altered.
SQL> SELECT * FROM v$block_change_tracking;
STATUS FILENAME BYTES
———- ————————————————– ———-
ENABLED /opt/oracle/oradata/ecp/Oracle_change.trace_new 11599872
[oracle@node1 bdump]$ tail -100 /opt/oracle/admin/ecp/bdump/alert_ecp.log |more
Thu Nov 03 11:22:34 CST 2011
alter database rename file '/opt/oracle/oradata/ecp/Oracle_change.trace'
to '/opt/oracle/oradata/ecp/Oracle_change.trace_new'
Completed: alter database rename file '/opt/oracle/oradata/ecp/Oracle_change.trace'
to '/opt/oracle/oradata/ecp/Oracle_change.trace_new'
Thu Nov 03 11:22:40 CST 2011
alter database open
Thu Nov 03 11:22:40 CST 2011
CHANGE TRACKING is enabled for this database, but the
change tracking file can not be found. Recreating the file.
Change tracking file recreated.
Block change tracking file is current.
[oracle@node1 bdump]$ ll /opt/oracle/oradata/ecp/Oracle_change.trace*
-rw-r—– 1 oracle oinstall 11600384 11-03 11:22 /opt/oracle/oradata/ecp/Oracle_change.trace
-rw-r—– 1 oracle oinstall 11600384 11-03 12:05 /opt/oracle/oradata/ecp/Oracle_change.trace_new
数据库在open状态下不能修改,所以必须把数据库重启至mount状态才能够修改,如果库不能重启,那么可以先关闭原块修改跟踪功能,再开启块修改跟踪功能。
两种方法比较:
1、都会重新建立一个跟踪文件
2、如果是重命名,老的跟踪文件不会自动被删除,需要人工删除
3、推荐使用关闭跟踪功能,然后在重新制定跟踪文件开启跟踪功能
两种方法比较:
1、都会重新建立一个跟踪文件
2、如果是重命名,老的跟踪文件不会自动被删除,需要人工删除
3、推荐使用关闭跟踪功能,然后在重新制定跟踪文件开启跟踪功能
发表在 Oracle备份恢复
评论关闭
清除离线数据文件记录
测试前提:数据文件离线,系统上删除了该文件,需要删除在数据字典中,关于这条离线数据文件记录
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/oradata/test/archivelog Oldest online log sequence 210 Next log sequence to archive 212 Current log sequence 212 --数据库是归档模式 SQL> col file_name for a40 SQL> select file_id,file_name,bytes from dba_data_files order by 1; FILE_ID FILE_NAME BYTES ---------- ---------------------------------------- ---------- 1 /opt/oracle/oradata/test/system01.dbf 524288000 2 /opt/oracle/oradata/test/undotbs01.dbf 1289748480 3 /opt/oracle/oradata/test/sysaux01.dbf 377487360 4 /opt/oracle/oradata/test/users01.dbf 5242880 5 /opt/oracle/oradata/test/user32g.dbf 10485760 6 /opt/oracle/oradata/test/xifenfei01.dbf 20971520 7 /opt/oracle/oradata/test/user02.dbf 10485760 8 /opt/oracle/oradata/test/odu02.dbf 1.1283E+10 9 /opt/oracle/oradata/test/odu01.dbf 104857600 10 /opt/oracle/oradata/test/odu03.chf 10 rows selected. SQL> col error for a20 SQL> select file#,ONLINE_STATUS,ERROR,CHANGE# from V$RECOVER_FILE order by 1; FILE# ONLINE_ ERROR CHANGE# ---------- ------- -------------------- ---------- 10 OFFLINE FILE NOT FOUND 0 SQL> !ls /opt/oracle/oradata/test/odu03.chf ls: /opt/oracle/oradata/test/odu03.chf: No such file or directory --说明该数据文件已经从硬盘上删除 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup nomount ORACLE instance started. Total System Global Area 209715200 bytes Fixed Size 2082784 bytes Variable Size 130025504 bytes Database Buffers 71303168 bytes Redo Buffers 6303744 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 '/opt/oracle/oradata/test/redo01.log' SIZE 50M, 9 GROUP 2 '/opt/oracle/oradata/test/redo02.log' SIZE 50M, 10 GROUP 3 '/opt/oracle/oradata/test/redo03.log' SIZE 50M 11 DATAFILE 12 '/opt/oracle/oradata/test/system01.dbf', 13 '/opt/oracle/oradata/test/undotbs01.dbf', 14 '/opt/oracle/oradata/test/sysaux01.dbf', 15 '/opt/oracle/oradata/test/users01.dbf', 16 '/opt/oracle/oradata/test/user32g.dbf', 17 '/opt/oracle/oradata/test/xifenfei01.dbf', 18 '/opt/oracle/oradata/test/user02.dbf', 19 '/opt/oracle/oradata/test/odu02.dbf', 20 '/opt/oracle/oradata/test/odu01.dbf' ,'/opt/oracle/oradata/test/odu03.chf' --文件不存在,创建控制文件这条记录需要除掉 21 CHARACTER SET ZHS16GBK 22 ; Control file created. SQL> alter database open; Database altered. SQL> select file_id,file_name,bytes from dba_data_files order by 1; FILE_ID FILE_NAME BYTES ---------- ---------------------------------------- ---------- 1 /opt/oracle/oradata/test/system01.dbf 524288000 2 /opt/oracle/oradata/test/undotbs01.dbf 1289748480 3 /opt/oracle/oradata/test/sysaux01.dbf 377487360 4 /opt/oracle/oradata/test/users01.dbf 5242880 5 /opt/oracle/oradata/test/user32g.dbf 10485760 6 /opt/oracle/oradata/test/xifenfei01.dbf 20971520 7 /opt/oracle/oradata/test/user02.dbf 10485760 8 /opt/oracle/oradata/test/odu02.dbf 1.1283E+10 9 /opt/oracle/oradata/test/odu01.dbf 104857600 10 /opt/oracle/product/10.2.0/db_1/dbs/MISSING00010 --系统默认创建了自定义的数据文件名称 10 rows selected. SQL> select file#,ONLINE_STATUS,ERROR,CHANGE# from V$RECOVER_FILE order by 1; FILE# ONLINE_ ERROR CHANGE# ---------- ------- -------------------- ---------- 10 OFFLINE FILE MISSING 0 --提示该文件是离线状态,需要恢复,结果同开始时候状态 SQL> select file#,STATUS$,TS#,RELFILE# from file$ order by 1; FILE# STATUS$ TS# RELFILE# ---------- ---------- ---------- ---------- 1 2 0 1 2 2 1 2 3 2 2 3 4 2 4 4 5 2 4 5 6 2 6 6 7 2 4 7 8 2 7 9 9 2 7 6 10 2 7 10 11 1 11 rows selected. SQL> delete from file$ where file#=10; ---重要的就是这个操作 1 row deleted. SQL> select file#,STATUS$,TS#,RELFILE# from file$ order by 1; FILE# STATUS$ TS# RELFILE# ---------- ---------- ---------- ---------- 1 2 0 1 2 2 1 2 3 2 2 3 4 2 4 4 5 2 4 5 6 2 6 6 7 2 4 7 8 2 7 9 9 2 7 6 11 1 10 rows selected. SQL> col name for a40 SQL> select * from v$dbfile order by 1; FILE# NAME ---------- ---------------------------------------- 1 /opt/oracle/oradata/test/system01.dbf 2 /opt/oracle/oradata/test/undotbs01.dbf 3 /opt/oracle/oradata/test/sysaux01.dbf 4 /opt/oracle/oradata/test/users01.dbf 5 /opt/oracle/oradata/test/user32g.dbf 6 /opt/oracle/oradata/test/xifenfei01.dbf 7 /opt/oracle/oradata/test/user02.dbf 8 /opt/oracle/oradata/test/odu02.dbf 9 /opt/oracle/oradata/test/odu01.dbf 10 /opt/oracle/product/10.2.0/db_1/dbs/MISSING00010 10 rows selected. --需要重建控制文件,删除不存在的数据文件 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP NOMOUNT ORACLE instance started. Total System Global Area 209715200 bytes Fixed Size 2082784 bytes Variable Size 130025504 bytes Database Buffers 71303168 bytes Redo Buffers 6303744 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 '/opt/oracle/oradata/test/redo01.log' SIZE 50M, 9 GROUP 2 '/opt/oracle/oradata/test/redo02.log' SIZE 50M, 10 GROUP 3 '/opt/oracle/oradata/test/redo03.log' SIZE 50M 11 DATAFILE 12 '/opt/oracle/oradata/test/system01.dbf', 13 '/opt/oracle/oradata/test/undotbs01.dbf', 14 '/opt/oracle/oradata/test/sysaux01.dbf', 15 '/opt/oracle/oradata/test/users01.dbf', 16 '/opt/oracle/oradata/test/user32g.dbf', 17 '/opt/oracle/oradata/test/xifenfei01.dbf', 18 '/opt/oracle/oradata/test/user02.dbf', 19 '/opt/oracle/oradata/test/odu02.dbf', 20 '/opt/oracle/oradata/test/odu01.dbf' 21 CHARACTER SET ZHS16GBK 22 ; Control file created. SQL> alter database open; Database altered. SQL> select file_id,file_name,bytes from dba_data_files order by 1; FILE_ID FILE_NAME BYTES ---------- ---------------------------------------- ---------- 1 /opt/oracle/oradata/test/system01.dbf 524288000 2 /opt/oracle/oradata/test/undotbs01.dbf 1289748480 3 /opt/oracle/oradata/test/sysaux01.dbf 377487360 4 /opt/oracle/oradata/test/users01.dbf 5242880 5 /opt/oracle/oradata/test/user32g.dbf 10485760 6 /opt/oracle/oradata/test/xifenfei01.dbf 20971520 7 /opt/oracle/oradata/test/user02.dbf 10485760 8 /opt/oracle/oradata/test/odu02.dbf 1.1283E+10 9 /opt/oracle/oradata/test/odu01.dbf 104857600 9 rows selected. SQL> select * from v$dbfile order by 1; FILE# NAME ---------- ---------------------------------------- 1 /opt/oracle/oradata/test/system01.dbf 2 /opt/oracle/oradata/test/undotbs01.dbf 3 /opt/oracle/oradata/test/sysaux01.dbf 4 /opt/oracle/oradata/test/users01.dbf 5 /opt/oracle/oradata/test/user32g.dbf 6 /opt/oracle/oradata/test/xifenfei01.dbf 7 /opt/oracle/oradata/test/user02.dbf 8 /opt/oracle/oradata/test/odu02.dbf 9 /opt/oracle/oradata/test/odu01.dbf 9 rows selected.
补充说明:非归档模式下,NOARCHIVELOG创建控制文件,其他无太大区别
测试来源:itpub:数据文件物理性删除相关问题疑惑?
参考blog:roger:如何彻底删除已经不存在的数据文件?
发表在 Oracle备份恢复
5 条评论
rman中关于archivelog操作
RMAN> list backup of archivelog all;
列出所有archive log 备份
RMAN> list backup of archivelog from logseq 100 until logseq 120;
列出archive log 从100到120
RMAN> list backup of archivelog sequence between 100 and 110;
列出archive log 从100到120
–说明:between……and只能使用sequence,而不能使用logseq
RMAN> list backup of archivelog from logseq 100;
列出seq大于等于100的archive log
RMAN> list backup of archivelog low logseq 120;
列出seq大于等于120的archive log
RMAN> list backup of archivelog sequence 100;
列出seq为100的archive log
–说明:在对于rman中关于archivelog的操作中logseq与sequence作用相同,但是建议尽量使用sequence
RMAN> list backup of archivelog logseq 85;
列出seq为85的archive log
RMAN> list backup of archivelog until logseq 85;
列出seq小于等于85的archive log
RMAN> list backup of archivelog high logseq 40;
列出seq小于等于40的archive log
RMAN> list backup of archivelog from time ‘sysdate-7′;
列出7天以前的archive log
RMAN> run {
2> set archivelog destination to ‘/opt/oracle/oradata/test/newlog’;
3> restore archivelog low logseq 40;
4> }
从seq为40开始,恢复到/opt/oracle/oradata/test/newlog中
–说明:list backup of archivelog中限定日志的位置也适合restore archivelog
RMAN> backup archivelog sequence between 100 and 110 format ‘/tmp/text_test.rman’ delete input;
备份seq为100至110的archive log
–说明:list backup of archivelog中限定日志的位置也适合backup archivelog
RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-7′;
删除7天前archive log
RMAN>DELETE ARCHIVELOG low logseq 40;
删除seq大于等于40的archive log
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
删除无效archive log
–说明:DELETE ARCHIVELOG中限定日志的位置也适合restore archivelog
发表在 Oracle备份恢复
评论关闭