Oracle 10g:脚本手动创建数据库时出错

时间:2014-05-20 11:26:51

标签: oracle oracle10g

我的情况是我必须仅使用脚本创建一个新的Oracle数据库(所以请不要使用DBCA建议我)

我的脚本如下:

CreateDB.bat

set ORACLE_SID=testdb
oradim -new -sid %ORACLE_SID% -intpwd test -startmode M
copy init.ora D:\oracle\product\10.2.0\db_1\database\inittestdb.ora
sqlplus sys/test as sysdba @D:\Script\CreateDB.sql

==> " INIT.ORA"是我从使用DBCA创建的数据库中复制的文件

CreateDB.sql

CREATE SPFILE='D:\oracle\product\10.2.0\db_1\dbs\spfiletestdb.ora' FROM
       PFILE='D:\oracle\product\10.2.0\db_1\database\inittestdb.ora';
startup nomount PFILE='D:\oracle\product\10.2.0\db_1\database\inittestdb.ora';
create database testdb
  logfile   group 1 ('D:\oracle\product\10.2.0\oradata\testdb\redo1.log') size 100M,
            group 2 ('D:\oracle\product\10.2.0\oradata\testdb\redo2.log') size 100M,
            group 3 ('D:\oracle\product\10.2.0\oradata\testdb\redo3.log') size 100M
  character set          JA16SJIS
  national character set AL16UTF16
  datafile 'D:\oracle\product\10.2.0\oradata\testdb\system01.dbf' 
            size 500M
            autoextend on 
            next 100M maxsize unlimited
            extent management local
  sysaux datafile 'D:\oracle\product\10.2.0\oradata\testdb\sysaux01.dbf' 
            size 100M
            autoextend on 
            next 100M 
            maxsize unlimited
  DEFAULT TABLESPACE tbs_1
            DATAFILE 'D:\oracle\product\10.2.0\oradata\testdb\tbs01.dbf'
            SIZE 200M REUSE
  DEFAULT temporary TABLESPACE tempts1
            tempfile 'D:\oracle\product\10.2.0\oradata\testdb\temp01.dbf'
            SIZE 200M REUSE
  undo tablespace undotbs
            datafile 'D:\oracle\product\10.2.0\oradata\testdb\undotbs01.dbf'
            SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

以上返回错误[ORA-30012:撤消表空间' UNDOTBS01.DBF'不存在或错误的类型]。

首先,当我检查init.ora文件时,我发现UNTO表空间的参数对于UNDO文件具有不同的名称,因此我将其更改为与我的脚本中的文件名匹配。

旧:

undo_management=AUTO
undo_tablespace=UNDOTBS1.DBF

新:

undo_management=AUTO
undo_tablespace=UNDOTBS01.DBF

并删除数据库(是的,即使出现错误,仍然创建数据库,只是无法使用)并再次重新运行everthing,并发生同样的错误。

我有2天的研究,仍然找不到任何解决方案。

以上所有脚本都遵循Oracle网站上的指南: http://docs.oracle.com/cd/B19306_01/server.102/b14231/create.htm

操作系统是Windows Server 2003。

数据库是Oracle 10g标准版。

更新1:

感谢Mat,UNDO表空间问题解决了:D

现在,下一个错误弹出。

Completed: ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMPTS1
Wed May 21 09:11:38 2014
Errors in file d:\oracle\product\10.2.0\admin\testdb\udump\testdb_ora_3416.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-02236: invalid file name

但实际上,这是因为缺少[DEFAULT TABLESPACE tbs_1]的数据文件选项。

我已经更新了上面的CREATE脚本。

更新2:

为此数据库创建用户时出现了新问题。 我在这个链接上为它创建了一个新主题: Oracle 10g: ORA-12154 when connect to database with newly created user

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

undo_tablespace参数采用表空间的名称,而不是数据文件的名称。

你应该

undo_tablespace=UNDOTBS
在您的参数文件中

以匹配您的数据库创建脚本。