标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr MySQL恢复 obet ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 2663 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-600 kcratr_nab_less_than_odr 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 比特币加密文章分类
- MongoDB (1)
- MongoDB恢复 (1)
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (112)
- 数据库 (1,878)
- DB2 (22)
- MySQL (82)
- Oracle (1,704)
- Data Guard (53)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (168)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (72)
- Oracle Bug (8)
- Oracle RAC (56)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (659)
- Oracle安装升级 (107)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (91)
- PostgreSQL (37)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (5)
- 达梦恢复 (3)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (51)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (34)
- MongoDB (1)
-
最近发表
- 由于con$.con#值达到极限,触发数据库增加约束报ORA-600 12807错误
- MongoDB 离线提取工具—mongoext
- .bres勒索病毒加密数据库dmp文件可恢复
- ORA-600 krsm_mrp_rebuild_lf_list.lno_mismatch
- 记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
- 不当数据库恢复操作导致一个月数据丢失
- obet快速修复oracle 位图损坏块
- 不太常见的10.2.0.1的oracle redo损坏恢复
- obet forcecopy功能抢救硬件故障中的数据文件
- kcratr_nab_less_than_odr和system坏块故障处理
- 通过obet 恢复system坏块,打开数据库
- obet dbv功能完整说明
- 分享一例运行在aix上的sap系统数据库恢复过程
- OBET-Oracle Block Editor Tool使用说明
- 几乎动用了所有手段的Oracle故障恢复
- Oracle Block Edit Tool (obet) 功能增强–2026.07
- Oracle 19c 202607补丁(RUs+OJVM)-19.32
- Patch_SCN快速修复ORA-01555数据库open故障
- 快速处理 ORA-01210: data file header is media corrupt 故障
- ORA-00314: log 3 of thread 1, expected sequence# N doesn’t match 0
分类目录归档:Oracle
数据文件重命名
最近一段时间,发现不少pub上不少新手都因为一时大意,添加数据文件名称不规范,然后想重命名该数据文件(或者想删除该数据文件然后重建),处理思路有些不妥,导致一些悲剧的发现,我这里通过实验提供一个自认为比较合理的处理思路:处理思路是数据文件离线重命名
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 name for a50
SQL> select name,file# from v$datafile;
NAME FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf 1
/opt/oracle/oradata/test/undotbs01.dbf 2
/opt/oracle/oradata/test/sysaux01.dbf 3
/opt/oracle/oradata/test/users01.dbf 4
/opt/oracle/oradata/test/user32g.dbf 5
/opt/oracle/oradata/test/xifenfei01.dbf 6
/opt/oracle/oradata/test/user02.dbf 7
/opt/oracle/oradata/test/odu02.dbf 8
/opt/oracle/oradata/test/odu01.dbf 9
/opt/oracle/oradata/test/odu03.dbf 10
10 rows selected.
SQL> alter tablespace xff add datafile '/opt/oracle/oradata/test/xifenfei02.chf'
2 size 10m autoextend off;
Tablespace altered.
SQL> select name,file# from v$datafile;
NAME FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf 1
/opt/oracle/oradata/test/undotbs01.dbf 2
/opt/oracle/oradata/test/sysaux01.dbf 3
/opt/oracle/oradata/test/users01.dbf 4
/opt/oracle/oradata/test/user32g.dbf 5
/opt/oracle/oradata/test/xifenfei01.dbf 6
/opt/oracle/oradata/test/user02.dbf 7
/opt/oracle/oradata/test/odu02.dbf 8
/opt/oracle/oradata/test/odu01.dbf 9
/opt/oracle/oradata/test/odu03.dbf 10
/opt/oracle/oradata/test/xifenfei02.chf 11
11 rows selected.
SQL> create table chf.xff_test tablespace xff
2 as
3 select * from dba_objects;
select * from dba_objects
*
ERROR at line 3:
ORA-01536: space quota exceeded for tablespace 'XFF'
SQL> alter user chf quota 100m on xff;
User altered.
SQL> create table chf.xff_test tablespace xff
2 as
3 select * from dba_objects;
Table created.
--需要重命名的数据文件内有数据,模拟数据库在生产环境中工作
SQL> alter database datafile 11 offline drop ;
Database altered.
--数据文件离线处理
SQL> !mv /opt/oracle/oradata/test/xifenfei02.chf /opt/oracle/oradata/test/xifenfei02.dbf
--系统级别把数据文件修改为正确名称
SQL> alter database rename file '/opt/oracle/oradata/test/xifenfei02.chf'
2 to '/opt/oracle/oradata/test/xifenfei02.dbf';
Database altered.
--修改控制文件中数据文件名称
SQL> recover datafile 11;
Media recovery complete.
SQL> alter database datafile 11 online;
Database altered.
--恢复数据文件,并使其online
SQL> select name,file# from v$datafile;
NAME FILE#
-------------------------------------------------- ----------
/opt/oracle/oradata/test/system01.dbf 1
/opt/oracle/oradata/test/undotbs01.dbf 2
/opt/oracle/oradata/test/sysaux01.dbf 3
/opt/oracle/oradata/test/users01.dbf 4
/opt/oracle/oradata/test/user32g.dbf 5
/opt/oracle/oradata/test/xifenfei01.dbf 6
/opt/oracle/oradata/test/user02.dbf 7
/opt/oracle/oradata/test/odu02.dbf 8
/opt/oracle/oradata/test/odu01.dbf 9
/opt/oracle/oradata/test/odu03.dbf 10
/opt/oracle/oradata/test/xifenfei02.dbf 11
11 rows selected.
如果数据库满足以下条件,可以删除数据文件,重新添加:
1、The database must be open.
2、If a datafile is not empty, it cannot be dropped. If you must remove a datafile that is not empty and that cannot be made empty by dropping schema objects, you must drop the tablespace that contains the datafile.
3、You cannot drop the first or only datafile in a tablespace. This means that DROP DATAFILE cannot be used with a bigfile tablespace.
4、You cannot drop datafiles in a read-only tablespace.
5、You cannot drop datafiles in the SYSTEM tablespace.
6、If a datafile in a locally managed tablespace is offline, it cannot be dropped.
7、db version >= 10g R2
SQL> alter tablespace xff drop datafile 11; alter tablespace xff drop datafile 11 * ERROR at line 1: ORA-03262: the file is non-empty SQL> alter tablespace xff add datafile '/opt/oracle/oradata/test/xifenfei03.chf' size 10m autoextend off; Tablespace altered. SQL> alter tablespace xff drop datafile '/opt/oracle/oradata/test/xifenfei03.chf'; Tablespace altered.
清除离线数据文件记录
测试前提:数据文件离线,系统上删除了该文件,需要删除在数据字典中,关于这条离线数据文件记录
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 条评论
设置oracle 含特殊字符密码
oracle 修改设置密码复杂度渐增方法:
1、修改为常见密码(无特殊字符)
SQL> alter user chf identified by xifenfei;
User altered.
2、修改含一般特殊字符(如:$, %等)
SQL>
SQL> alter user chf identified by “xi%,fenfei”;
User altered.
SQL> conn chf/xi%,fenfei
Connected.
3、修改含”的特殊字符
3.1)修改制定用户密码(sys用户操作)
SQL> password chf
Changing password for chf
New password:
Retype new password:
Password changed
SQL> conn chf/aa””bb
Connected.
3.2)修改当前用户密码(需要有修改密码权限)
SQL> password
Changing password for CHF
Old password:
New password:
Retype new password:
Password changed
SQL>
注:因为一般特殊字符可以使用双引号处理,但是如果密码中含有双引号,就不能用双引号处理,可以直接使用password修改密码

加我微信(17813235971)
加我QQ(107644445)

