实际应用中,一般情况下在一台服务器上配置并管理一个数据库服务即可满足使用需求,但是在服务器数量紧缺而应用又较多的情况下,为便于管理和维护确有必要配置并管理多个数据库。有时候为不影响应用数据库的正常使用,而在开发应用程序或教学过程中又需要使用数据库作实验或进行演示同样也需要配置多个数据库。下面就配置多个数据库的过程作以详细介绍。
数据库服务器配置
在配置多个数据库时,我使用的服务器为一台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
$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
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、建立服务名、测试。