通過命令行建立一個數據庫可以幫助更好的了解數據庫的建庫流程,今天試了試手工建立Oracle11gR2數據庫,感覺和10g的手工建庫流程還是有一定的區別的,10g數據庫的手工方式建立可以參考大侯(secooler)的“http://space.itpub.net/519536/viewspace-667563 ”
下面是我的建庫流程:
測試環境:
OS:OEL5.6 x64
DB:Oracle database 11g R2(11.2.0.1.0)
建立數據庫名:prod
1. 配置環境變量(參考)
1)設置環境變量
[oracle@ocm ~]$ vi .bash_profile
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;export CLASSPATH PATH=$ORACLE_HOME/bin:/usr/sbin:/sbin:$PATH; export PATH
2)生效環境變量
[oracle@ocm ~]$ source ~/.bash_profile
2.建立相關的目錄
1)dump目錄和10g相比,這里只需要建立adump一個目錄就可以了
[oracle@ocm ~]$ mkdir -p /u01/app/oracle/admin/prod/adump
2)數據文件及控制文件的存放目錄
[oracle@ocm ~]$ mkdir -p /u01/app/oracle/oradata/prod
3.建立密碼文件
[oracle@ocm ~]$ cd $ORACLE_HOME/dbs
[oracle@ocm dbs]$ orapwd file=orapwprod password=oracle entries=30
4.創建參數文件
1)從init.ora文件中獲得示例參數,參考了大侯的cat方法:
[oracle@ocm ~]$ cd $ORACLE_HOME/dbs [oracle@ocm dbs]$ cat init.ora |grep -v ^# |grep -v ^$ >initprod.ora
2)修改參數文件中的信息
主要修改下列參數
1:db_name
2:memory_target內存區大小
3:替換<ORACLE_BASE>標簽為當前的$ORACLE_BASE中的內容
4:快速恢復區路徑設置(我在這里不設置所以注釋掉了)
5:修改diagnostic_dest
6:修改dispatchers中的SERVICE為PRODXDB
7:添加控制文件的文件名
db_name='prod' memory_target=600M processes = 150 audit_file_dest='/u01/app/oracle/admin/prod/adump' audit_trail ='db' db_block_size=8192 db_domain='' #db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area' #db_recovery_file_dest_size=2G diagnostic_dest='/u01/app/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=PRODXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' control_files = (/u01/app/oracle/oradata/prod/control01.ctl,/u01/app/oracle/oradata/prod/control02.ctl) compatible ='11.2.0'
5.使用之前創建的參數文件啟動數據庫到nomount狀態下
[oracle@ocm ~]$ export ORACLE_SID=prod [oracle@ocm ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 24 18:26:51 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SYS@prod>create spfile from pfile; File created. SYS@prod>startup nomount;
ORACLE instance started. Total System Global Area 626327552 bytes Fixed Size 2215944 bytes Variable Size 373297144 bytes Database Buffers 247463936 bytes Redo Buffers 3350528 bytes
6.在10gR2中本來是需要手動修改undo_management,job_queue_processes等參數,但是show parameter后發現這些參數在11gR2版本中的值都已經符合要求,也就不需要修改了。
SYS@prod>show parameter undo_management NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO SYS@prod>show parameter job_queue_processes NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ job_queue_processes integer 1000 SYS@prod>show parameter _dump_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ background_dump_dest string /u01/app/oracle/diag/rdbms/pro d/prod/trace core_dump_dest string /u01/app/oracle/diag/rdbms/pro d/prod/cdump max_dump_file_size string unlimited user_dump_dest string /u01/app/oracle/diag/rdbms/pro d/prod/trace
7.創建數據庫
1)在官方文檔中找到建庫語句,位置:Administrator's Guide 11g Release 2 (11.2) => 2 Creating and Configuring an Oracle Database => Creating a Database with the CREATE DATABASE Statement => “CREATE DATABASE mynewdb”
2)修改示例的建庫語句,需要注意UNDO TABLESPACE的名字和默認的不相同。
[oracle@ocm ~]$ vi dbcreate.sql CREATE DATABASEprod USER SYS IDENTIFIED BYoracle USER SYSTEM IDENTIFIED BYoracle LOGFILE GROUP 1 ('/u01/app/oracle/oradata/prod/redo01a.log','/u01/app/oracle/oradata/prod/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/u01/app/oracle/oradata/prod/redo02a.log','/u01/app/oracle/oradata/prod/redo02b.log') SIZE 100M BLOCKSIZE 512, GROUP 3 ('/u01/app/oracle/oradata/prod/redo03a.log','/u01/app/oracle/oradata/prod/redo03b.log') SIZE 100M BLOCKSIZE 512 MAXLOGFILES30 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE'/u01/app/oracle/oradata/prod/system01.dbf'SIZE 325M REUSE SYSAUX DATAFILE'/u01/app/oracle/oradata/prod/sysaux01.dbf'SIZE 325M REUSE DEFAULT TABLESPACE users DATAFILE'/u01/app/oracle/oradata/prod/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE'/u01/app/oracle/oradata/prod/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACEundotbs1 DATAFILE'/u01/app/oracle/oradata/prod/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
3)執行建庫腳本,需要在nomount下執行
SYS@prod>@/home/oracle/dbcreate.sql Database created.
4)修改數據文件自動擴展
SYS@prod>alter database datafile 1 autoextend on; Database altered. SYS@prod> alter database datafile 2 autoextend on; Database altered. SYS@prod> alter database datafile 3 autoextend on; Database altered. SYS@prod> alter database datafile 4 autoextend on; Database altered. SYS@prod> alter database tempfile 1 autoextend on; Database altered.
5)查詢數據庫狀態並確認創建成功。
SYS@prod>conn / as sysdba Connected. SYS@prod>select instance_name,status from v$instance; INSTANCE_NAME STATUS ---------------- ------------ prod OPEN SYS@db11g>col tablespace_name for a10 SYS@db11g>col tablespace_file for a60 SYS@prod>select a.name tablespace_name,b.name tablespace_file from v$tablespace a,v$datafile b where a.ts#=b.ts#; TABLESPACE TABLESPACE_FILE ---------- ------------------------------------------------------------ SYSTEM /u01/app/oracle/oradata/prod/system01.dbf SYSAUX /u01/app/oracle/oradata/prod/sysaux01.dbf UNDOTBS1 /u01/app/oracle/oradata/prod/undotbs01.dbf USERS /u01/app/oracle/oradata/prod/users01.dbf
6)執行建立數據字典腳本
SYS@db11g>conn / as sysdba Connected SYS@prod> @?/rdbms/admin/catalog.sql …… SYS@prod> @?/rdbms/admin/catproc.sql ……
到這里,手工建立11gR2數據庫就基本完成了,可以再跑一些額外的腳本如catoctk.sql來完善數據庫的功能,總體來說手工建立11gR2數據庫的過程和建立10gR2數據庫基本思路相同,主要是參數文件和建庫語句有一定區別,可以說11gR2數據庫的手工建立過程比10gR2要少一些修改動作,這或許是因為隨着數據庫版本的升級,其設計越來越完善的緣故吧。