zoukankan      html  css  js  c++  java
  • The Steps to Create a New Oracle Database


    创建一个Oracle数据库 (10g) 的步骤大致如下:

    1) Create a parameter file and password file.

    2) Use the parameter file to build an instance in memory

    3) Issue the CREATE DATABASE command. This will generate, at a minimum, a control file, two online redo log files; and two data files for SYSTEM and SYSAUX tablespace, and a Data Dictionary

    4) Run SQL Scripts to generate the data dictionary views and the supplied PL/SQL packages

    5) Run SQL Scripts to generate Enterprise Manager Database Control, along with any options (such as Java) that the database will require.

    6) (On windows) Using ORADIM.EXE to create a Oracle Service on Windows Platform.

    需要注意的是,数据字典表是在第三步,也就是CREATE DATABASE中创建的,之后会进行基于这些数据字典表的视图的创建 (step4) 

    通过DBCA可以很容易得到创建数据库的脚步文件,一共有如下几个文件:(<dbname>指的是创建数据库的名字)

    1) init.ora

    2) <dbname>.bat

    3)<dbname>.sql

    4) CreateDB.sql

    5) CreateDBFiles.sql  

    6) CreateDBCatalog.sql

    7) emRepository.sql

    8) postDBCreation.sql

     现在来看下每个文件的具体内容是什么,

    1) init.ora

     注意这是个静态的参数文件,在创建数据库结束前(  postDBCreation.sql),静态的参数文件会被转成SPFILE.

    这里面需要注意的是DB_BLOCK_SIZE和CONTROL_FILES.

    DB_BLOCK_SIZE决定了database buffer cache中buffer的大小。这个值同样会被用来设置SYSTEM, SYSAUX表空间对应的数据文件的数据块的大小。在数据库创建之后,这个参数值是不能更改的。

    CONTROL_FILES指向了控制文件的所在,在创建数据库的时候,它表示将在什么地方创建控制文件。 


    ##############################################################################
    # Copyright (c) 
    199120012002 by Oracle Corporation
    ##############################################################################
     
    ###########################################
    # SGA Memory
    ###########################################
    sga_target
    =531628032
     
    ###########################################
    # Job Queues
    ###########################################
    job_queue_processes
    =10
     
    ###########################################
    # Miscellaneous
    ###########################################
    compatible
    =10.2.0.1.0
     
    ###########################################
    # Security 
    and Auditing
    ###########################################
    audit_file_dest
    =D:\oracle\product\10.2.0\admin\ocp10g\adump
    remote_login_passwordfile
    =EXCLUSIVE
     
    ###########################################
    # Sort, Hash Joins, Bitmap Indexes
    ###########################################
    pga_aggregate_target
    =177209344
     
    ###########################################
    Database Identification
    ###########################################
    db_domain
    =""
    db_name=ocp10g
     
    ###########################################
    File Configuration
    ###########################################
    control_files=("D:\oracle\product\10.2.0\oradata\ocp10g\control01.ctl", "D:\oracle\product\10.2.0\oradata\ocp10g\control02.ctl", "D:\oracle\product\10.2.0\oradata\ocp10g\control03.ctl")
    db_recovery_file_dest
    =D:\oracle\product\10.2.0\flash_recovery_area
    db_recovery_file_dest_size
    =2147483648
     
    ###########################################
    # Cursors 
    and Library Cache
    ###########################################
    open_cursors
    =300
     
    ###########################################
    # System Managed Undo 
    and Rollback Segments
    ###########################################
    undo_management
    =AUTO
    undo_tablespace
    =UNDOTBS1
     
    ###########################################
    # Diagnostics 
    and Statistics
    ###########################################
    background_dump_dest
    =D:\oracle\product\10.2.0\admin\ocp10g\bdump
    core_dump_dest
    =D:\oracle\product\10.2.0\admin\ocp10g\cdump
    user_dump_dest
    =D:\oracle\product\10.2.0\admin\ocp10g\udump
     
    ###########################################
    # Processes 
    and Sessions
    ###########################################
    processes
    =150
     
    ###########################################
    # Cache 
    and I/O
    ###########################################
    db_block_size=8192
    db_file_multiblock_read_count
    =16
     

     2) <dbname>.bat 

    这个bat文件主要是用来创建一些列的目录结构(遵循OFA) , 设置ORACLE_SID环境变量。然后通过ORADIM.EXE来创建windows服务,并设置成自动启动。然后启动sql*plus,运行脚本文件<oraclename>.sql

    mkdir D:\oracle\product\10.2.0\admin\ocp10g\adump
    mkdir D:\oracle\product\
    10.2.0\admin\ocp10g\bdump
    mkdir D:\oracle\product\
    10.2.0\admin\ocp10g\cdump
    mkdir D:\oracle\product\
    10.2.0\admin\ocp10g\dpdump
    mkdir D:\oracle\product\
    10.2.0\admin\ocp10g\pfile
    mkdir D:\oracle\product\
    10.2.0\admin\ocp10g\udump
    mkdir D:\oracle\product\
    10.2.0\db_1\cfgtoollogs\dbca\ocp10g
    mkdir D:\oracle\product\
    10.2.0\db_1\database
    mkdir D:\oracle\product\
    10.2.0\flash_recovery_area
    mkdir D:\oracle\product\
    10.2.0\oradata\ocp10g
    set ORACLE_SID=ocp10g
    D:\oracle\product\
    10.2.0\db_1\bin\oradim.exe -new -sid OCP10G -startmode manual -spfile 
    D:\oracle\product\
    10.2.0\db_1\bin\oradim.exe -edit -sid OCP10G -startmode auto -srvcstart system 
    D:\oracle\product\
    10.2.0\db_1\bin\sqlplus /nolog @D:\oracle\product\10.2.0\admin\ocp10g\scripts\ocp10g.sql

     3) <dbname>.sql

     这个脚本设置了SYS/SYSTEM/SYSMAN/DBSNMP这几个USER的密码,随后通过orapwd.exe创建密码文件。最后依次调用CreateDB.sql,CreateDBFiles.sql,CreateDBCatalog.sql,emRepository.sql,postDBCreation.sql

    set verify off
    PROMPT specify a password 
    for sys as parameter 1;
    DEFINE sysPassword 
    = &1
    PROMPT specify a password 
    for system as parameter 2;
    DEFINE systemPassword 
    = &2
    PROMPT specify a password 
    for sysman as parameter 3;
    DEFINE sysmanPassword 
    = &3
    PROMPT specify a password 
    for dbsnmp as parameter 4;
    DEFINE dbsnmpPassword 
    = &4
    host D:\oracle\product\
    10.2.0\db_1\bin\orapwd.exe file=D:\oracle\product\10.2.0\db_1\database\PWDocp10g.ora password=&&sysPassword force=y
    @D:\oracle\product\10.2.0\admin\ocp10g\scripts\CreateDB.sql
    @D:\oracle\product\10.2.0\admin\ocp10g\scripts\CreateDBFiles.sql
    @D:\oracle\product\10.2.0\admin\ocp10g\scripts\CreateDBCatalog.sql
    @D:\oracle\product\10.2.0\admin\ocp10g\scripts\emRepository.sql
    @D:\oracle\product\10.2.0\admin\ocp10g\scripts\postDBCreation.sql

    4) CreateDB.sql

    通过startup nomount的方式创建instance, 用到的pfile就是在第一步中的init.ora. 

    这个文件的内容跟控制文件很类似。 


    connect "SYS"
    /"&&sysPassword" as SYSDBA
    set echo on
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\CreateDB.log
    startup nomount pfile="D:\oracle\product\10.2.0\admin\ocp10g\scripts\init.ora";
    CREATE DATABASE "ocp10g"
    MAXINSTANCES 
    8
    MAXLOGHISTORY 
    1
    MAXLOGFILES 
    16
    MAXLOGMEMBERS 
    3
    MAXDATAFILES 
    100
    DATAFILE 
    'D:\oracle\product\10.2.0\oradata\ocp10g\system01.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL
    SYSAUX DATAFILE 
    'D:\oracle\product\10.2.0\oradata\ocp10g\sysaux01.dbf' SIZE 120M REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
    SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'D:\oracle\product\10.2.0\oradata\ocp10g\temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT  640K MAXSIZE UNLIMITED
    SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE 'D:\oracle\product\10.2.0\oradata\ocp10g\undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITED
    CHARACTER SET ZHS16GBK
    NATIONAL CHARACTER SET AL16UTF16
    LOGFILE 
    GROUP 1 ('D:\oracle\product\10.2.0\oradata\ocp10g\redo01.log') SIZE 51200K,
    GROUP 2 ('D:\oracle\product\10.2.0\oradata\ocp10g\redo02.log') SIZE 51200K,
    GROUP 3 ('D:\oracle\product\10.2.0\oradata\ocp10g\redo03.log') SIZE 51200K
    USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword";
    spool 
    off

     这个文件创建了数据库,数据字典表也被创建了。 虽然这个时候数据库已经被创建了,但是是不可用的(unusable),还需要运行以下的文件才可以让数据库usable.

     5) CreateDBFiles.sql

     这个文件创建了user表空间,并设置成数据库的默认表空间。


    connect "SYS"
    /"&&sysPassword" as SYSDBA
    set echo on
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\CreateDBFiles.log
    CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE 

    'D:\oracle\product\10.2.0\oradata\ocp10g\users01.dbf' SIZE 5M REUSE 

    AUTOEXTEND 
    ON NEXT  1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL 

    SEGMENT 
    SPACE MANAGEMENT  AUTO;
    ALTER DATABASE DEFAULT TABLESPACE "USERS";
    spool 
    off

      

     6) CreateDBCatalog.sql

     创建数据库的数据字典视图和PL/SQL包。


    connect "SYS"
    /"&&sysPassword" as SYSDBA
    set echo on
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\CreateDBCatalog.log
    @D:\oracle\product\10.2.0\db_1\rdbms\admin\catalog.sql;
    @D:\oracle\product\10.2.0\db_1\rdbms\admin\catblock.sql;
    @D:\oracle\product\10.2.0\db_1\rdbms\admin\catproc.sql;
    @D:\oracle\product\10.2.0\db_1\rdbms\admin\catoctk.sql;
    @D:\oracle\product\10.2.0\db_1\rdbms\admin\owminst.plb;
    connect "SYSTEM"
    /"&&systemPassword"
    @D:\oracle\product\10.2.0\db_1\sqlplus\admin\pupbld.sql;
    connect "SYSTEM"
    /"&&systemPassword"
    set echo on
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\sqlPlusHelp.log
    @D:\oracle\product\10.2.0\db_1\sqlplus\admin\help\hlpbld.sql helpus.sql;
    spool 
    off
    spool 
    off

     7) emRepository.sql

     创建Enterprise Manager Database Control工具。

    connect "SYS"/"&&sysPassword" as SYSDBA
    set echo off
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\emRepository.log
    @D:\oracle\product\10.2.0\db_1\sysman\admin\emdrep\sql\emreposcre D:\oracle\product\10.2.0\db_1 SYSMAN &&sysmanPassword TEMP ON;
    WHENEVER SQLERROR 
    CONTINUE;
    spool 
    off

     8) postDBCreation.sql

     做一些清理工作,例如创建spfile


    connect "SYS"
    /"&&sysPassword" as SYSDBA
    set echo on
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\postDBCreation.log
    connect "SYS"
    /"&&sysPassword" as SYSDBA
    set echo on
    create spfile='D:\oracle\product\10.2.0\db_1\database\spfileocp10g.ora' FROM pfile='D:\oracle\product\10.2.0\admin\ocp10g\scripts\init.ora';
    shutdown immediate;
    connect "SYS"
    /"&&sysPassword" as SYSDBA
    startup ;
    alter user SYSMAN identified by "&&sysmanPassword" account unlock;
    alter user DBSNMP identified by "&&dbsnmpPassword" account unlock;
    select 'utl_recomp_begin: ' || to_char(sysdate, 'HH:MI:SS'from dual;
    execute utl_recomp.recomp_serial();
    select 'utl_recomp_end: ' || to_char(sysdate, 'HH:MI:SS'from dual;
    host D:\oracle\product\
    10.2.0\db_1\bin\emca.bat -config dbcontrol db -silent -DB_UNIQUE_NAME ocp10g -PORT 1521 -EM_HOME D:\oracle\product\10.2.0\db_1 -LISTENER LISTENER -SERVICE_NAME ocp10g -SYS_PWD &&sysPassword -SID ocp10g -ORACLE_HOME D:\oracle\product\10.2.0\db_1 -DBSNMP_PWD &&dbsnmpPassword -HOST PC-201003131309 -LISTENER_OH D:\oracle\product\10.2.0\db_1 -LOG_FILE D:\oracle\product\10.2.0\admin\ocp10g\scripts\emConfig.log -SYSMAN_PWD &&sysmanPassword;
    spool D:\oracle\product\
    10.2.0\admin\ocp10g\scripts\postDBCreation.log

     以上就是创建一个Oracle数据库的大致过程。




    --------------------------------------
    Regards,
    FangwenYu
  • 相关阅读:
    ASP.NET MVC Razor 视图引擎
    Asp.net MVC3 Razor语法小记
    @RenderPage用法
    余数算法
    Linux命令行下运行java.class文件
    Java学习---9.GUI编程
    Java学习---8.线程同步
    Java学习---7.多线程
    Java学习---6.常用的容器,流
    Java学习---5.数组
  • 原文地址:https://www.cnblogs.com/fangwenyu/p/1726330.html
Copyright © 2011-2022 走看看