为ORACLE 8i for SOLARIS配置并管理多个数据库
网络整理 - 06-30
为什么要配置多个数据库
实际应用中一般情况下在一台服务器上配置并管理一个数据库服务即可满足使用需求但是在服务器数量紧缺而应用又较多的情况下为便于管理和维护确有必要配置并管理多个数据库有时候为不影响应用数据库的正常使用而在开发应用程序或教学过程中又需要使用数据库作实验或进行演示同样也需要配置多个数据库下面就配置多个数据库的过程作以详细介绍
数据库服务器配置
在配置多个数据库时我使用的服务器为一台SUN E内存GB操作系统为SUN SLOARIS 简体中文版Oracle数据库系统为Oracle i(版本)在安装该数据库系统时已配置了一个应用数据库(数据库名和SID为pbcti)为说明配置另一个数据库的过程在此将新配置的另一个数据库名和SID定为test以下的所有配置操作均在该环境下通过并使用
配置过程
以oracle用户登录solaris系统oracle用户为Oracle数据库系统的管理员属于DBA组
设置环境变量ORACLE_SID为要配置的数据库的SID在此为test并用export命令输出即
$ORACLE_SID=test
$export ORACLE_SID
用命令orapwd生成特权用户的密码文件$ORACLE_HOME/dbs/orapw(在此sid为test)命令格式为
$orapwd file=$ORACLE_HOME/dbs/orapwtest password=test entries=
file 指定口令文件名注意在此必需为orapwdtest且在此目录下
password 指定特权用户的口令此处假定为test
entries 指定特权用户的最大数
建立参数文件
安装Oracle数据库系统后Oracle系统已建立了一个参数文件的模板名为initora在目录$ORACLE_HOME/dbs/中将此文件复制到要建立的新数据库目录中稍加修改即可此例中使用的参数文件如下(注意参数文件名必须为init此处为inittestora)
#inittestora
db_name = test # db_nameinstance_nameservice_names 建议使用相同的值
instance_name = test
service_names = test
control_files=(/home/oracle/test/testctl/home/oracle/test/testctl)
open_cursors =
max_enabled_roles =
db_block_buffers = # INITIAL
shared_pool_size = # INITIAL
large_pool_size =
java_pool_size =
log_checkpoint_interval =
log_checkpoint_timeout =
processes = # INITIAL
log_buffer = # INITIAL
background_dump_dest = /home/oracle/test/bdump
core_dump_dest = /home/oracle/test/cdump
resource_manager_plan = system_plan
user_dump_dest = /home/oracle/test/udump
db_block_size =
remote_login_passwordfile = exclusive
os_authent_prefix =
job_queue_processes =
job_queue_interval =
distributed_transactions =
open_links =
mts_dispatchers = (PROTOCOL=TCP)(PRE=oracleauroraserverSGiopServer)
compatible =
sort_area_size =
sort_area_retained_size =
#end
为减少篇幅此处已将注释行删除Oracle中有多个可定义的参数如果没有在参数文件中定义值则系统将使用其缺省值有关参数的意义请参阅相关Oracle手册
在oracle用户的$HOME下建立用于存放新建数据库的目录及其它需要建立的下一级子目录(此处oracle用户的注册目录为/home/oracle)如下
$mkdir $HOME/test #定义新建数据库的主目录位置
$mkdir $HOME/test/pfile #定义参数文件的位置将参数文件inittestora 放在此目录中
$mkdir $HOME/test/bdump $HOME/test/cdump $HOME/test/udump
#定义跟踪文件和警告文件存放的位置
用sqlplus internal/test登录到ORACLE数据库管理系统可以看到连接到一个空实例上(connected to an idle instance)
执行startup nomount pfile=参数文件路径位置
SQL>startup nomount pfile=/home/oracle/test/pfile/inittestora
使用命令create database 建立数据库此例中使用的命令格式如下
SQL>create database test
Logfile group /home/oracle/test/testalog size M
group /home/oracle/test/testalog size M
datafile /home/oracle/test/systestdbf size M
character set weisop;
此命令运行完成后在数据库目录中生成了重做日志文件数据文件和控制文件建立了数据字典基表建立了DBA用户sys/change_on_install 和 system/manager建立了SYSTEM表空间和SYSTEM回滚段注意SYSTEM回滚段只能用于维护SYSTEM表空间指定字符集后将不能改变
建立数据字典视图
运行$ORACLE_HOME/rdbms/admin/catalogsql命令格式如下
SQL>@$ORACLE_HOME/rdbms/admin/catalogsql;
通过数据字典视图用户可以获得Oracle系统信息
安装PL/SQL包
运行$ORACLE_HOME/ rdbms/admin/catprocsql命令格式如下
SQL>@$ORACLE_HOME/rdbms/admin/ catprocsql;
系统PL/SQL包扩展了数据库的功能开发人员可以直接在应用程序中引用这些PL/SQL包安装此包需要较长时间
安装PROFIL运行$ORACLE_HOME/ sqlplus/admin/pupbldsql命令格式如下
SQL>@$ORACLE_HOME/ sqlplus /admin//pupbldsql;
运行该脚本创建同义词因为运行SQL*PLS工具时会访问同义词如果未安装PROFILE当运行该工具时会显示警告错误安装完PROFILE后需要重启数据库即用Oracle特权用户先关闭数据库再启动数据库命令如下
SQL>shutdown immediate; #关闭数据库不要用abort选项
SQL>startup pfile=/home/oracle/test/pfile/inittestora;
#重启数据库一定要指明参数据文件的位置
创建各种表空间
创建数据库后如前所述生成了系统表空间和系统回滚段这些只能用于维护系统表空间不能用来建立和维护用户数据表空间因此要想使普通用户存放数据表则有必要创建应用表空间回滚段表空间索引段表空间和临时段表空间(也可以只建立一个表空间但为了便于对用户管理Oracle建议创建分离的表空间分别用来存放用户数据段回滚段索引段和临时段数据)命令格式如下
$sqlplus internal/test
SQL>create tablespace users
datafile /home/oracle/test/usersdbf size M
default storage (initial K next K minextents maxextents pctincrease
);
该命令创建了应用表空间users物理数据文件名为usersdbf在指定的目录中
SQL>create tablespace rbk
datafile /home/oracle/test/rbkdbf size M;
该命令创建了回滚段表空间
SQL>create temporary tablespace temp
tempfile /home/oracle/test/tempdbf size M
extent management local uniform size K;
该命令创建了临时段表空间
SQL>create public rollback segment rb tablespace rbk
storage (initial K next K minextents maxextents optimal M);
该命令在rbk表空间上建立回滚段rb
建立Oracle用户分配权限进行测试
SQL>create user test identified by test default tablespace users
temporary tablespace temp quota M on users;
该命令创建了test数据库验证用户口令为test在users表空间上的可用空间为M
SQL>grant cteate sessioncreate table to test;
为test用户分配会话权限和建表权限进行测试时可用oracle用户登录将ORACLE_SID设为test操作如下
$ORACLE_SID=test
$export ORACLE_SID
$sqlplus test/test
SQL*Plus: Release Production on Mon Aug ::
(c) Copyright Oracle Corporation All rights reserved
Connected to:
Oraclei Enterprise Edition Release Production
With the Partitioning option
JServer Release Production
SQL>
表明test用户已成连接
在客户端配置NET建立服务名测试