我是在linux下安装的10g,我想手工来创建数据库。
我已经使用dbca自动创建好了一个数据库。
现在我想在已经有了一个数据库的基础上再使用手工来创建另一个数据库,请问应该如何进行操作。谢谢。

解决方案 »

  1.   

    在Linux下虽然通过dbca也可以创建数据库,但是在某些环境下却是不能使用图形环境,如数据库服务器在机房,并且开放的端口有限制,或者需要批量创建数据库。那么,这个时候为了方便就不得不使用手工创建数据库了。以下是创建数据库的步骤:操作系统:centos 5 (安装的时候,修改/etc/redhat-real* 输入redhat enterprise 4)
    数据库:oracle 10g 环境:
    已经使用dbca创建了数据库orcl。
    oracle用户所属组为:oracle,dba
    ORACLE_BASE=/home/oracle/oracle/
    ORACLE_HOME=$ORACLE_BASE/db1
    ORACLE_SID=test
    ORACLE_OWNER=oracle
    NLS_LANG="Simplified Chinese_china"
    DB_HOME=/home/oracle/oradata步骤:1、创建pfile文件
    使用sqlplus sys/orcl@orcl as sysdba 登陆orcl数据库环境,使用命令
    create pfile from spfile; 创建pfile文件
    再到系统下到$ORACLE_HOME/dbs/目录中使用命令
    cp initorcl.ora inittest.ora
    或者直接在系统下到$ORACLE_HOME/dbs/目录中使用命令
    strings spfileorcl.ora >inittest.ora
    完成后,修改inittest.ora文件,将orcl替换为test2、创建密码文件
    cd $ORACLE_HOME/dbs/
    orapwd file=orapwtest password=test3、创建目录
    mkdir -p $ORACLE_BASE/admin/test
    cd $ORACLE_BASE/admin/test
    mkdir adump bdump cdump dpdump pfile
    mkdir -p $DB_HOME/test4、修改监听程序
    vi $ORACLE_HOME/network/admin/tnsnames.ora
    将其中ORCL部分复制粘贴,并且修改其名称为test5、开始创建数据库
    export ORACLE_SID=test
    sqlplus /nolog
    conn / as sysdba
    spool $ORACLE_BASE/admin/$ORACLE_SID/create/createdb
    startup nomount
    create database test
    LOGFILE
    GROUP 1 ('$DB_HOME/test/redo01.log',
    '$ORACLE_BASE/oradata/test/redo01_1.log') size 100m reuse,
    GROUP 2 ('$DB_HOME/test/redo02.log',
    '$DB_HOME/test/redo02_1.log') size 100m reuse,
    GROUP 3 ('$DB_HOME/oradata/test/redo03.log',
    '$DB_HOME/test/redo03_1.log') size 100m reuse
    MAXLOGFILES 50
    MAXLOGMEMBERS 5
    MAXLOGHISTORY 200
    MAXDATAFILES 500
    MAXINSTANCES 5
    ARCHIVELOG
    CHARACTER SET UTF8
    NATIONAL CHARACTER SET UTF8
    DATAFILE '$DB_HOME/test/system01.dbf' SIZE 1000M EXTENT MANAGEMENT LOCAL
    SYSAUX DATAFILE '$DB_HOME/test/sysaux01.dbf' SIZE 1000M
    UNDO TABLESPACE UNDOTBS1 DATAFILE '$DB_HOME/test/undo.dbf' SIZE 500M
    DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE
    '$DB_HOME/test/temp.dbf' SIZE 500M
    ;等待一定时间,如果没有问题会显示数据库创建成功注意UNDO TABLESPACE UNDOTBS1中的名字,需要和inittest.ora中的名字一样。@$ORACLE_HOME/rdbms/admin/catalog.sql;
    @$ORACLE_HOME/rdbms/admin/catproc.sql;
    @$ORACLE_HOME/rdbms/admin/catdbsyn.sql;
    alter user system identified by test;
    grant sysdba to system;
    shutdown immediate;
    startup;
    spool off
    exit使用system用户登陆
    sqlplus system/test
    @$ORACLE_HOME/sqlplus/admin/pupbld.sql
    exit数据库创建完成。如果遇到问题,可以查看日志
    $ORACLE_BASE/admin/$ORACLE_SID/create/createdb 
      

  2.   

    谢谢楼上的兄弟,但是我现在有两个疑问想请教一下:
    1.我现在已经有了一个数据库orc_test,在.bash_profile文件中我设置的ORACLE_SID=orc_test,如果需要修改这个配置文件的话,是否会对我原来数据库造成影响,能否不修改该文件中的ORACLE_SID?
    2.创建数据库以前,受限设置例程服务,我是使用set oracle_sid=demo,如果使用export ORACLE_SID=demo有什么区别
    3.修改tnsnames.ora,修改完成后对我以前的服务有和影响,而且需要修改listener.org文件么,貌似这个文件也需要修改的吧?如果修改有什么影响呢?
    4.由于我的数据库是已经启动的状态,我在使用sqlplus /nolog登陆到数据库以后,再使用我重新建立的sys密码进行connect,连接成功,但是,我使用startup nomount命令,报错说不能启动已经在运行的oracle,这就说明我还是连接在orc_test数据库中,如果我使用startup nomount pfile='demo的PFILE文件',运行后则没有任何反应,请教这是怎么回事?
    谢谢,请指教。