实验环境:安装了Oracle11GR2软件的 Centos.4
实验目的:可利用seed种子文件还原Oracle数据库实例
实验步骤:
$ cd$ORACLE_HOME/dbs
$ cat init.ora | grep -v "^#" | grep -v "^$">initSEEDDATA.ora
$vi initSEEDDATA.ora
$cat initSEEDDATA.ora
db_name='SEEDDATA' SGA_target=1G db_block_size=8192 control_files = /data/oracle/app/oracle/oradata/hpprdyx/control01.ctl compatible ='11.2.0' |
$ mkdir -p /data/oracle/app/oracle/oradata/hpprdyx/
$ export ORACLE_SID=SEEDDATA
$sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup nomount
SQL>!
$find /oracle -name Seed*.ctl

/data/database/stage/Components/oracle.rdbms.install.seeddb/11.2.0.1.0/1/DataFiles/Expanded/filegroup1/Seed_Database.ctl |
$cp /data/oracle/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.ctl
to /data/oracle/app/oracle/oradata/hpprdyx/control01.ctl
$exit
SQL> alter database mount;
SQL> select member from v$logfile;
MEMBER -------------------------------------------------------------------------------- /ade/b/2125410156/oracle/oradata/seeddata/redo01.log |
SQL> alter database rename file/ade/b/2125410156/oracle/oradata/seeddata/redo01.log' to'/data/oracle/app/oracle/oradata/hpprdyx/redo01.log';
SQL> alter database rename file'/ade/b/2125410156/oracle/oradata/seeddata/redo02.log' to '/data/oracle/app/oracle/oradata/hpprdyx/redo02.log';
SQL> alter database rename file'/ade/b/2125410156/oracle/oradata/seeddata/redo03.log' to'/data/oracle/app/oracle/oradata/hpprdyx/redo03.log';
SQL> select member from v$logfile;
$ rman target /
RMAN> catalog start with '/data/oracle/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb';
RMAN> report schema;

RMAN> run {
set newname for datafile 1 to '/data/oracle/app/oracle/oradata/hpprdyx/system01.dbf';
set newname for datafile 2 to '/data/oracle/app/oracle/oradata/hpprdyx/sysaux01.dbf';
set newname for datafile 3 to '/data/oracle/app/oracle/oradata/hpprdyx/undotbs01.dbf';
set newname for datafile 4 to '/data/oracle/app/oracle/oradata/hpprdyx/user01.dbf';
restore database;
switch datafile all;
recover database;
}
RMAN> exit
$sqlplus / as sysdba
SQL> alter database open resetlogs;
SQL> alter tablespace temp add tempfile '/data/oracle/app/oracle/oradata/hpprdyx/temp01.dbf' size 100M;
SQL> select name from v$tempfile;
NAME -------------------------------------------------------------------------------- /ade/b/2125410156/oracle/oradata/seeddata/temp01.dbf |
SQL> alter tablespace temp drop tempfile '/ade/b/2125410156/oracle/oradata/seeddata/temp01.dbf';
SQL> show parameter inst
SQL> shutdown immediate
SQL> startup mount
SQL> exit
$nid target=sys/ora_sys dbname=hpprdyx

$cd $ORACLE_HOME/dbs
$cp initSEEDDATA.ora inithpprdyx.ora
$cat inithpprdyx.ora
db_name='hpprdyx' |
export ORACLE_SID=hpprdyx
$sqlplus / as sysdba
SQL>create spfile from pfile;
SQL>startup
SQL>show parameter inst
参考资料:
DBCA seed文件原理可以参考杨建荣老师的
如果您喜欢我的文章,请长按标识符关注我的公众号,学习Linux的路上,期待与您同行。





