oracle中通过数据文件建立新库


说明:这个文件夹中只有数据库的数据文件,*.dbf,要通过这几个数据文件建立新的数据库.新数据库名字是DDD
[root@doo onlydbf]# ll
总计 768896
-rw-r----- 1 oracle oinstall 251666432 06-08 21:38 sysaux01.dbf
-rw-r----- 1 oracle oinstall 503324672 06-08 21:38 system01.dbf
-rw-r----- 1 oracle oinstall  20979712 06-08 21:38 temp01.dbf
-rw-r----- 1 oracle oinstall  26222592 06-08 21:38 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 06-08 21:38 users01.dbf


(1)首先要建立这几个目录,参数文件中也要表明这几个文件的位置
[oracle@doo onlydbf]$ mkdir {a,b,c,u}dump

(2)手动建立新的参数文件,可以从其他的参数文件中直接拷贝过来,进行修改.仅保留所必须的参数即可.
    主要是更改其中的路径和数据库的名字.还要修改SID来找到这个文本形式的参数文件。
[root@doo dbs]# cat initDDD.ora
shared_pool_size=230686720
*.audit_file_dest='/onlydbf/adump'
*.background_dump_dest='/onlydbf/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/onlydbf/control01.ctl','/onlydbf/control02.ctl','/onlydbf/control03.ctl'
*.core_dump_dest='/onlydbf/cdump'
*.db_domain=''
*.db_name='DDD'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/onlydbf/udump'

(3)以SYSDBA的身份进入sql,启动数据库,会进入到nomount阶段,说明实例已经启动了.以为没有参数文件,需要手动建立.
SQL> startup
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219136 bytes
Variable Size             255854016 bytes
Database Buffers           50331648 bytes
Redo Buffers                7168000 bytes
ORA-00205: error in identifying control file, check alert log for more info

(4)手动建立参数文件,设置数据库的新名字,如果不知道原先的库名,会有提示.然后是 resetlogs 要重做日志.设置数据文件的位置.
SQL> ed
Wrote file afiedt.buf

  1  CREATE CONTROLFILE REUSE DATABASE DOO1 set database DDD RESETLOGS  NOARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 '/onlydbf/redo01.log'  SIZE 50M,
  9    GROUP 2 '/onlydbf/redo02.log'  SIZE 50M,
 10    GROUP 3 '/onlydbf/redo03.log'  SIZE 50M
 11  DATAFILE
 12    '/onlydbf/system01.dbf',
 13    '/onlydbf/undotbs01.dbf',
 14    '/onlydbf/sysaux01.dbf',
 15    '/onlydbf/users01.dbf'
 16* CHARACTER SET AL32UTF8
SQL> /

Control file created.

(5)参数文件建立成功,会直接进入到mount阶段,仅仅差open阶段了,使用resetlogs,会启动数据库到open阶段.
    如下,说明新的数据库已经建立成功.
SQL> alter database open RESETLOGS;

Database altered.

(6)关于临时文件,由于只有表空间而没有数据文件,所以还要关联一下临时表空间和数据文件.
SQL> alter tablespace temp add tempfile '/onlydbf/temp01.dbf';


注:初学者,欢迎指点,不断改进。doo