【手工建庫】手工方式建立 ORACLE資料庫全程記錄

達芬奇的夢發表於2018-02-08
透過dbca方式建立Oracle資料庫是最常見的方法,除此之外如果對資料庫的建立過程瞭解的話,亦可一步一步的透過命令列的方式完成資料庫的建立。
現將在OEL4.8作業系統上手工建立Oracle資料庫例項的方法記錄在此,供參考。

1.手工建庫前提條件
既然已經到了建立資料庫例項的階段,因此主機上的資料庫軟體需要事先建立完畢。

2.準備.bash_profile配置檔案並確認環境變數
1)編輯.bash_profile檔案
[oracle@secDB ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/sbin:/usr/local/bin

export PATH
unset USERNAME

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export ORACLE_SID=secooler

export PATH=$ORACLE_HOME/bin:$PATH

需要設定的環境變數主要就是這三個:ORACLE_BASE、ORACLE_HOME、ORACLE_SID和PATH
需要說明的是PATH變數的設定,需要將“$ORACLE_HOME/bin”寫在“$PATH”之前,這樣設定主要目的是:Oracle命令優先被選擇。

2)使.bash_profile配置檔案生效
[oracle@secDB ~]$ . ./.bash_profile

[oracle@secDB ~]$ source ./.bash_profile

3)確認ORACLE_SID等環境變數被正確設定
[oracle@secDB ~]$ env | grep -i sid
ORACLE_SID=secooler
[oracle@secDB ~]$ env | grep ORACLE_BASE
ORACLE_BASE=/u01/app/oracle
[oracle@secDB ~]$ env | grep ORACLE_HOME
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

3.在$ORACLE_BASE下建立所需的目錄
1)建立四個轉儲目錄
[oracle@secDB ~]$ cd $ORACLE_BASE
[oracle@secDB oracle]$ mkdir -p admin/secooler/adump
[oracle@secDB oracle]$ mkdir -p admin/secooler/bdump
[oracle@secDB oracle]$ mkdir -p admin/secooler/cdump
[oracle@secDB oracle]$ mkdir -p admin/secooler/udump

2)建立存放資料檔案、日誌檔案和控制檔案的目錄
[oracle@secDB oracle]$ mkdir -p oradata/secooler/dfile
[oracle@secDB oracle]$ mkdir -p oradata/secooler/lfile
[oracle@secDB oracle]$ mkdir -p oradata/secooler/cfile

3)建立備份介質存放的目錄
[oracle@secDB oracle]$ mkdir -p rmanbak


4.生成密碼檔案
[oracle@secDB ~]$ cd $ORACLE_HOME/dbs
[oracle@secDB dbs]$ orapwd file=orapwsecooler password=change_on_install entries=10

5.建立所需的pfile和spfile
1)建立pfile檔案並調整
我們根據Oracle安裝軟體$ORACLE_HOME/dbs目錄下自帶的init.ora來定製我們需要的pfile。
(1)進入到$ORACLE_HOME/dbs目錄
[oracle@secDB ~]$ cd $ORACLE_HOME/dbs
(2)去掉預設init.ora檔案中雜亂的內容,僅保留引數本身資訊
[oracle@secDB dbs]$ cat init.ora |grep -v ^# |grep -v ^$ > initsecooler.ora
(3)調整initsecooler.ora引數內容
調整後的內容如下:
[oracle@secDB dbs]$ vi initsecooler.ora
db_name=secooler
db_files = 80                       # SMALL
db_file_multiblock_read_count = 8   # SMALL
#db_block_buffers = 100             # SMALL
#shared_pool_size = 3500000         # SMALL
log_checkpoint_interval = 10000
processes = 50                      # SMALL
parallel_max_servers = 5            # SMALL
log_buffer = 32768                  # SMALL
max_dump_file_size = 10240    # limit trace file size to 5 Meg each
global_names = TRUE
#control_files = (ora_control1, ora_control2)
control_files = (/u01/app/oracle/oradata/secooler/cfile/ora_control1,/u01/app/oracle/oradata/secooler/cfile/ora_control2,/u01/app/oracle/oradata/secooler/cfile/control3)
sga_max_size=300M
sga_target=300M
~
~

較之系統自帶的引數檔案做了如下修改動作:
a.修改db_name引數為
b.登出掉引數db_block_buffers、shared_pool_size
c.修改controlfile引數
c.增加sga_max_size和sga_target引數,大小設定為300M。

2)建立spfile並調整
(1)使用sqlplus命令登陸建立spfile
[oracle@secDB dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 7 22:44:55 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> create spfile from pfile;

(2)啟動資料庫到nomount狀態,調整spfile引數
a.啟動資料庫到nomount狀態
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              96470416 bytes
Database Buffers          213909504 bytes
Redo Buffers                2973696 bytes

b.需要修改的spfile引數如下
SQL> alter system set undo_management=auto scope=spfile;
SQL> alter system set db_create_file_dest='/u01/app/oracle/oradata/secooler/dfile' scope=spfile;
SQL> alter system set db_create_online_log_dest_1='/u01/app/oracle/oradata/secooler/lfile' scope=spfile;
SQL> alter system set job_queue_processes =5 scope=spfile;
SQL> alter system set background_dump_dest='/u01/app/oracle/admin/secooler/bdump' scope=spfile;
SQL> alter system set core_dump_dest= '/u01/app/oracle/admin/secooler/cdump' scope=spfile;
SQL> alter system set user_dump_dest='/u01/app/oracle/admin/secooler/udump' scope=spfile;
SQL> alter system set audit_file_dest='/u01/app/oracle/admin/secooler/adump' scope=spfile;

c.停起資料庫到nomount狀態使spfile調整生效
SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              96470416 bytes
Database Buffers          213909504 bytes
Redo Buffers                2973696 bytes

6.建立資料庫
1)編寫create database指令碼
(1)獲取create database的參考指令碼
在Oracle文件中中有一個供參考的建立語句
(1)進入到Oracle官方文件的首頁:;
(2)點選“Books”;
(3)在列出來的參考書目中的找到第5本書“Administrator's Guide”,點選“HTML”進入;
(4)搜尋關鍵字“create database statement”,位到“Step 7: Issue the CREATE DATABASE Statement”,點選進入便可以得到建立資料庫的參考指令碼;

2)調整參考指令碼中的內容為我所用
(1)需要調整的內容
資料庫名字
SYS和SYSTEM密碼
路徑名修改,注意一定要準確全面
表空間tbs_1後面給出具體資料檔案資訊

(2)調整後的指令碼如下
CREATE DATABASE secooler
   USER SYS IDENTIFIED BY change_on_install
   USER SYSTEM IDENTIFIED BY manager
   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/secooler/lfile/redo01.log') SIZE 100M,
           GROUP 2 ('/u01/app/oracle/oradata/secooler/lfile/redo02.log') SIZE 100M,
           GROUP 3 ('/u01/app/oracle/oradata/secooler/lfile/redo03.log') SIZE 100M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   MAXINSTANCES 1
   CHARACTER SET US7ASCII
   NATIONAL CHARACTER SET AL16UTF16
   DATAFILE '/u01/app/oracle/oradata/secooler/dfile/system01.dbf' SIZE 325M REUSE
   EXTENT MANAGEMENT LOCAL
   SYSAUX DATAFILE '/u01/app/oracle/oradata/secooler/dfile/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE tbs_1 datafile '/u01/app/oracle/oradata/secooler/dfile/tbs_1.dbf' size 50m
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/u01/app/oracle/oradata/secooler/dfile/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs
      DATAFILE '/u01/app/oracle/oradata/secooler/dfile/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

3)使用上面的create database指令碼建立資料庫
指令碼執行之後,此時資料庫狀態已經為OPEN狀態。
SQL> select status from v$instance;

STATUS
------------
OPEN

4)設定資料檔案和臨時檔案為自動擴充套件
(1)獲得所有資料檔案和臨時檔案資訊
SQL> col name for a60
SQL> select file#,name from v$datafile union select file#,name from v$tempfile;

     FILE# NAME
---------- ------------------------------------------------------------
         1 /u01/app/oracle/oradata/secooler/dfile/system01.dbf
         1 /u01/app/oracle/oradata/secooler/dfile/temp01.dbf
         2 /u01/app/oracle/oradata/secooler/dfile/undotbs01.dbf
         3 /u01/app/oracle/oradata/secooler/dfile/sysaux01.dbf
         4 /u01/app/oracle/oradata/secooler/dfile/tbs_1.dbf

(2)將其調整為自動擴充套件
SQL> alter database datafile 1 autoextend on;
SQL> alter database datafile 2 autoextend on;
SQL> alter database datafile 3 autoextend on;
SQL> alter database datafile 4 autoextend on;
SQL> alter database tempfile 1 autoextend on;

7.執行catalog.sql和catproc.sql指令碼建立資料字典檢視並配置
注意這兩個指令碼需要以SYSDBA身份來執行
[oracle@secDB ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 7 22:17:18 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> @?/rdbms/admin/catalog.sql
... ...
... 大約需要5分鐘 ...
... ...


SQL> @?/rdbms/admin/catproc.sql  
... ...
... 大約需要10分鐘 ...
... ...

8.小結
手工建立資料庫相比dbca來說繁瑣了很多,不過整個安裝過程體現的是Oracle的執行原理,對於理解資料庫細節來說有很大的裨益。

Good luck.

secooler
10.07.07

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2150964/,如需轉載,請註明出處,否則將追究法律責任。

相關文章