创建表空间时需要指定保存路径,创建表空间成功,但我重装系统了,这个表空间这么添加到新装的10g里去啊,
关于oracle 10g 中表空间问题
- 提问者网友:戎马万世
- 2021-05-10 16:40
- 五星知识达人网友:旧脸谱
- 2021-05-10 17:01
Oracle数据库
我们这次做的前提就是在重装操作系统的时候,只保留的原来数据库的数据文件、控制文件、重做日志文件,以及rman的database全备和archivelog的备份——我们假设只保留了以上文件,其他文件,包括spfile和pfile都已经被删除,而且我们的oracle相关表空间都已经改变过,如默认的undo表空间叫TS_UNDO_01。
在重装操作系统之前我们先用rman进行全备:备份database ,controlfile,archivelog。
D:\Back Updb bakRMAN_BK>rman nocatalog target /
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: ORALOCAL (DBID=3826047702)正在使用目标数据库控制文件替代恢复目录
RMAN>
在这里我们使用nocatalog备份,因为如果用catalog备份,相关的备份信息会保存在数据库中,当数据库重装的时候,新的数据库是没有这些信息的,而老的控制文件由于新的spfile中的部分指示有误还加载不上去,startup mount的时候会出错。因此我们干脆就使用nocatalog备份,将备份的信息保存在controlfile中。
登陆rman后,我们来更改一下一些备份参数
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:ORACLEORA92DATABASESNCFORALOCAL.ORA’; # default
————————————————————————-
RMAN>
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
新的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;已成功存储新的 RMAN 配置参数
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;已成功存储新的 RMAN 配置参数
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:Back Updb bakRMAN_BK%F_CTL.RMN’;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:Back Updb bakRMAN_BK%F_CTL.RMN’;已成功存储新的 RMAN 配置参数
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;已成功存储新的 RMAN 配置参数
RMAN>
RMAN> show all;
RMAN 配置参数为:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:Back Updb bakRMAN_BK%F_CTL.RMN’;CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:ORACLEORA92DATABASESNCFORALOCAL.ORA’; # default
RMAN>
Ok,我们开始用rman进行备份:
RMAN> run {
2> backup database
3> tag ‘full_db_20060910′
4> format ‘D:Back Updb bakRMAN_BKfull_db_20060910_%u%s%p.RMN’
5> include current controlfile;
6> backup archivelog all
7> tag ‘arch_20060910′
8> format ‘D:Back Updb bakRMAN_BKarch_20060910_%u%s%p.RMN’
9> delete input;}
启动 backup 于 10-9月 -06
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00011 name=D:ORACLEORADATAORALOCALPERFSTAT.DBF
输入数据文件 fno=00005 name=D:ORACLEORADATAORALOCALEXAMPLE01.DBF
输入数据文件 fno=00006 name=D:ORACLEORADATAORALOCALINDX01.DBF
输入数据文件 fno=00009 name=D:ORACLEORADATAORALOCALTS_RMAN_01.DBF
输入数据文件 fno=00003 name=D:ORACLEORADATAORALOCALCWMLITE01.DBF
输入数据文件 fno=00004 name=D:ORACLEORADATAORALOCALDRSYS01.DBF
输入数据文件 fno=00008 name=D:ORACLEORADATAORALOCALTOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 10-9月 -06
通道 ORA_DISK_2: 正在启动 full 数据文件备份集
通道 ORA_DISK_2: 正在指定备份集中的数据文件
备份集中包括当前控制文件
输入数据文件 fno=00001 name=D:ORACLEORADATAORALOCALSYSTEM01.DBF
输入数据文件 fno=00010 name=D:ORACLEORADATAORALOCALXDB01.DBF
输入数据文件 fno=00002 name=D:ORACLEORADATAORALOCALTS_UNDO_01.DBF
输入数据文件 fno=00007 name=D:ORACLEORADATAORALOCALODM01.DBF
输入数据文件 fno=00012 name=D:ORACLEORADATAORALOCALTS_DATA_USER01.DBF
通道 ORA_DISK_2: 正在启动段 1 于 10-9月 -06
通道 ORA_DISK_1: 已完成段 1 于 10-9月 -06
段 handle=D:BACK UPDB BAKRMAN_BKFULL_DB_20060910_0THSVDUH291.RMN comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:16
通道 ORA_DISK_2: 已完成段 1 于 10-9月 -06
段 handle=D:BACK UPDB BAKRMAN_BKFULL_DB_20060910_0UHSVDUI301.RMN comment=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间:00:02:20
完成 backup 于 10-9月 -06
启动 backup 于 10-9月 -06
当前日志已存档
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =218 记录 ID=74 时间戳=600815409
通道 ORA_DISK_1: 正在启动段 1 于 10-9月 -06
通道 ORA_DISK_2: 正在启动存档日志备份集
通道 ORA_DISK_2: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =219 记录 ID=75 时间戳=600815711
通道 ORA_DISK_2: 正在启动段 1 于 10-9月 -06
通道 ORA_DISK_1: 已完成段 1 于 10-9月 -06
段 handle=D:BACK UPDB BAKRMAN_BKARCH_20060910_0VHSVE2V311.RMN comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =D:ORACLEORA92RDBMSARC00218.001 记录 ID=74 时间戳 =600815409
通道 ORA_DISK_2: 已完成段 1 于 10-9月 -06
段 handle=D:BACK UPDB BAKRMAN_BKARCH_20060910_10HSVE2V321.RMN comment=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_2: 正在删除存档日志
存档日志文件名 =D:ORACLEORA92RDBMSARC00219.001 记录 ID=75 时间戳 =600815711
完成 backup 于 10-9月 -06
启动 Control File and SPFILE Autobackup 于 10-9月 -06
段 handle=D:BACK UPDB BAKRMAN_BKC-3826047702-20060910-04_CTL.RMN comment=NONE
完成 Control File and SPFILE Autobackup 于 10-9月 -06
RMAN>
二、重装操作系统后,我们删除oracle下除oradata(含数据文件,控制文件,redolog)外的所有文件,重装oracle。
三、重装oracle。
四、将原来是oradata(含数据文件,控制文件,redolog)覆盖oradata。
五、这时启动oracle,我们发现只能启动到nomount状态。原因是根据目前的spfile,找不到对应的表空间,找不到undo表空间——当前的spfile认为的undo表空间是UNDOTS01,我们的是TS_UNDO_01。因此,我们删除这个没用的spfile。
六、找到$ORACLE_HOMEadminSIDpfileinit.ora,打开后,进行修改,将undo_tablespace=UNDOTS01改成:undo_tablespace=TS_UNDO_01。然后startup pfile=$ORACLE_HOMEadminSIDpfileinit.ora
七、运行rman
C:Documents and SettingsAdministrator>rman nocatalog target /
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: ORALOCAL (DBID=3826047702)
正在使用目标数据库控制文件替代恢复目录
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:Back Updb bakRMAN_BK%F_CTL.RMN’;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:ORACLEORA92DATABASESNCFORALOCAL.ORA’; # default
RMAN> restore spfile from autobackup;
启动 restore 于 10-9月 -06
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=12 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=13 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20060910
通道 ORA_DISK_2: 寻找以下日期的自动备份: 20060910
通道 ORA_DISK_2: 跳过, 自动备份已经找到
通道 ORA_DISK_1: 已找到的自动备份: D:Back Updb bakRMAN_BKc-3826047702-20060910-04_CTL.RMN
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 10-9月 -06
RMAN> shutdown immediate
数据库已关闭
数据库已卸载
Oracle 例程已关闭
RMAN> exit
恢复管理器完成。
八、Ok,至此我们的复原工作完成99%,但是在启动的时候还是会报ora-01991的错误,我们需要重建一下密码文件:
1、删除原来的$ORACLE_HOMEora92databasePWDsid.ora密码文件
2、命令行输入orapwd file= password= entries=
3、重启数据库:
C:Documents and SettingsAdministrator>sqlplus “/ as sysdba”
SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 9月 10 22:30:22 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL>
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter database mount;
数据库已更改。
SQL> alter database open ;
数据库已更改。