為什麼要配置多個數據庫
實際應用中,一般情況下在一台服務器上配置並管理一個數據庫服務即可滿足使用需求,但是在服務器數量緊缺而應用又較多的情況下,為便於管理和維護確有必要配置並管理多個數據庫。有時候為不影響應用數據庫的正常使用,而在開發應用程序或教學過程中又需要使用數據庫作實驗或進行演示同樣也需要配置多個數據庫。下面就配置多個數據庫的過程作以詳細介紹。
數據庫服務器配置
在配置多個數據庫時,我使用的服務器為一台SUN E250、內存1GB,操作系統為SUN SLOARIS 8簡體中文版,Oracle數據庫系統為Oracle 8i(8.1.7版本)。在安裝該數據庫系統時已配置了一個應用數據庫(數據庫名和SID為pbcti),為說明配置另一個數據庫的過程,在此將新配置的另一個數據庫名和SID定為test,以下的所有配置操作均在該環境下通過並使用。
配置過程
1.以oracle用戶登錄solaris系統,oracle用戶為Oracle數據庫系統的管理員,屬於DBA組。
2.設置環境變量Oracle_SID為要配置的數據庫的SID,在此為test並用export命令輸出,即:
$ORACLE_SID=test
$export Oracle_SID
3.用命令orapwd生成特權用戶的密碼文件$Oracle_HOME/dbs/orapw(在此sid為test)命令格式為:
$orapwd file=$Oracle_HOME/dbs/orapwtest password=test entrIEs=5
file :指定口令文件名,注意:在此必需為orapwdtest且在此目錄下。
passWord :指定特權用戶的口令,此處假定為test。
entrIEs :指定特權用戶的最大數。
4.建立參數文件
安裝Oracle數據庫系統後,Oracle系統已建立了一個參數文件的模板,名為:init.ora。在目錄$Oracle_HOME/dbs/中,將此文件復制到要建立的新數據庫目錄中稍加修改即可,此例中使用的參數文件如下(注意:參數文件名必須為init,此處為:inittest.ora)。
#inittest.ora
db_name = "test" # db_name、instance_name、service_names 建議使用相同的值
instance_name = test
service_names = test
control_files=("/home1/oracle/test/test01.ctl","/home1/Oracle/test/test02.ctl")
open_cursors = 300
max_enabled_roles = 30
db_block_buffers = 19200 # INITIAL
shared_pool_size = 52428800 # INITIAL
large_pool_size = 614400
Java_pool_size = 20971520
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 150 # INITIAL
log_buffer = 163840 # INITIAL
background_dump_dest = /home1/oracle/test/bdump
core_dump_dest = /home1/oracle/test/cdump
resource_manager_plan = system_plan
user_dump_dest = /home1/oracle/test/udump
db_block_size = 4096
remote_login_passWordfile = exclusive
os_authent_prefix = ""
job_queue_processes = 4
job_queue_interval = 60
distributed_transactions = 10
open_links = 4
mts_dispatchers = "(PROTOCOL=TCP)(PRE=Oracle.aurora.server.SGiopServer)"
compatible = "8.1.0"
sort_area_size = 65536
sort_area_retained_size = 65536
#end
為減少篇幅,此處已將注釋行刪除,Oracle中有200多個可定義的參數。如果沒有在參數文件中定義值,則系統將使用其缺省值,有關參數的意義請參閱相關Oracle手冊。
5.在Oracle用戶的$HOME下建立用於存放新建數據庫的目錄及其它需要建立的下一級子目錄(此處oracle用戶的注冊目錄為:/home1/Oracle),如下:
$mkdir $HOME/test #定義新建數據庫的主目錄位置
$mkdir $HOME/test/pfile #定義參數文件的位置,將參數文件inittest.ora 放在此目錄中
$mkdir $HOME/test/bdump $HOME/test/cdump $HOME/test/udump
#定義跟蹤文件和警告文件存放的位置。
6.用sqlplus internal/test登錄到Oracle數據庫管理系統,可以看到連接到一個空實例上(connected to an idle instance)。
7.執行:startup nomount pfile=參數文件路徑位置
SQL>startup nomount pfile=/home1/Oracle/test/pfile/inittest.ora
8.使用命令:create database 建立數據庫,此例中使用的命令格式如下:
SQL>create database test
Logfile group 1 '/home1/oracle/test/test1a.log' size 5M,
group 2 '/home1/oracle/test/test2a.log' size 5M
datafile '/home1/Oracle/test/sys1test.dbf' size 100M
character set we8iso8859p1;
此命令運行完成後,在數據庫目錄中生成了重做日志文件、數據文件和控制文件。建立了數據字典基表、建立了DBA用戶:sys/change_on_install 和 system/manager。建立了SYSTEM表空間和SYSTEM回滾段。注意:SYSTEM回滾段只能用於維護SYSTEM表空間,指定字符集後將不能改變。
9.建立數據字典視圖
運行$Oracle_HOME/rdbms/admin/catalog.sql,命令格式如下:
SQL>@$Oracle_HOME/rdbms/admin/catalog.sql;
通過數據字典視圖,用戶可以獲得Oracle系統信息。
10.安裝PL/SQL包
運行$Oracle_HOME/ rdbms/admin/catproc.sql,命令格式如下:
SQL>@$Oracle_HOME/rdbms/admin/ catproc.sql;
系統PL/SQL包擴展了數據庫的功能,開發人員可以直接在應用程序中引用這些PL/SQL包,安裝此包需要較長時間。
11.安裝PROFIL運行$Oracle_HOME/ sqlplus/admin/pupbld.sql,命令格式如下:
SQL>@$Oracle_HOME/ sqlplus /admin//pupbld.sql;
運行該腳本創建同義詞,因為運行SQL*PLS工具時會訪問同義詞,如果未安裝PROFILE,當運行該工具時會顯示警告錯誤。安裝完PROFILE後需要重啟數據庫,即:用Oracle特權用戶先關閉數據庫、再啟動數據庫。命令如下:
SQL>shutdown immediate; #關閉數據庫,不要用abort選項
SQL>startup pfile=/home1/Oracle/test/pfile/inittest.ora;
#重啟數據庫,一定要指明參數據文件的位置
12.創建各種表空間
創建數據庫後,如前所述生成了系統表空間和系統回滾段,這些只能用於維護系統表空間不能用來建立和維護用戶數據表空間,因此要想使普通用戶存放數據表則有必要創建應用表空間、回滾段表空間、索引段表空間和臨時段表空間(也可以只建立一個表空間,但為了便於對用戶管理,Oracle建議創建分離的表空間分別用來存放用戶數據段、回滾段、索引段和臨時段數據),命令格式如下:
$sqlplus internal/test
SQL>create tablespace users
datafile '/home1/Oracle/test/users1.dbf' size 20M
default storage (initial 10K next 10K minextents 2 maxextents 50 pctincrease
50);
該命令創建了應用表空間users,物理數據文件名為users1.dbf在指定的目錄中。
SQL>create tablespace rbk
datafile '/home1/Oracle/test/rbk.dbf' size 20M;
該命令創建了回滾段表空間。
SQL>create temporary tablespace temp
tempfile '/home1/Oracle/test/temp.dbf' size 10M
extent management local uniform size 128K;
該命令創建了臨時段表空間。
SQL>create public rollback segment rb1 tablespace rbk
storage (initial 100K next 100K minextents 20 maxextents 100 optimal 3M);
該命令在rbk表空間上建立回滾段rb1。
13.建立Oracle用戶、分配權限、進行測試
SQL>create user test identifIEd by test default tablespace users
temporary tablespace temp quota 5M on users;
該命令創建了test數據庫驗證用戶,口令為test,在users表空間上的可用空間為5M。
SQL>grant cteate session,create table to test;
為test用戶分配會話權限和建表權限。進行測試時可用oracle用戶登錄,將Oracle_SID設為test,操作如下:
$ORACLE_SID=test
$export ORACLE_SID
$sqlplus test/test
SQL*Plus: Release 8.1.7.0.0 - Production on Mon Aug 19 17:59:04 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
表明test用戶已成連接。
14.在客戶端配置NET8、建立服務名、測試。