数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle9i 数据库管理实务讲座(五)-手动建立 Oracle9i 数据库


发布日期:2018年11月05日
 
Oracle9i 数据库管理实务讲座(五)-手动建立 Oracle9i 数据库

作者: 何致亿 美商甲骨文公司台湾分公司特约顾问

前几期我们分别探讨 Oraclei 核心要素与数据库实体组成相信大家对于 Oraclei 数据库服务器已经具有一定程度的了解了本期我将介绍手动建置 Oraclei 数据库的步骤与相关注意事项

本文内容将涵盖下列主题

n          建立数据库的前置工作

n          起始参数档的重要参数

n          手动建立 Oraclei 数据库的步骤

n          如何移除 Oraclei 数据库

不管原因为何当您准备自行建立 Oraclei 数据库时都必须事先做好妥善准备因为手动建立 Oraclei 数据库并不是件容易的事可能的话应该尽量使用 Oraclei 提供的「数据库建置辅助精灵」来建立新数据库但是要想成为一个合格的 Oracle DBA您也必须熟稔手动建立数据库的方式才能面对建置 Oraclei 数据库所可能碰到的任何问题

首先我们先看看建立 Oraclei 数据库之前应注意那些事情

建立 Oraclei 数据库的前置处理工作

在开始建立新的 Oraclei 数据库之前建议您先做好下列准备工作

n          评估资料表与索引的存放位置并预估其所需空间(如果可能的话)

n          规划操作系统下数据库实体档案的部署方式 — 良好的档案配置将大幅改善资料存取效能不管是安装 Oracle 服务器软件或是建置新数据库时都必须特别注意这点例如说您可以将重置日志文件 (Redo Log files) 置于其它磁盘或是 RAID 磁盘阵列上而将数据文件置于 RAID 磁盘阵列上

n          选定「全域数据库名称」(global database name) — 它是在网际网络上识别 Oraclei 数据库的方式由 数据库名称 与 网域名称 组成分别设定在起始参数档的 DB_NAME 与 DB_DOMAIN 参数内

n          熟悉起始参数档内较重要的参数甚至「服务器参数档」(server parameter file)的使用时机与其功用

n          选定适当的数据库字符集所有字符资料都是依照特定字符集存入数据库因此您必须在建立数据库时指定适当字符集 (注[])

n          选定「标准资料区块」大小 — 设定在起始参数档的 DB_BLOCK_SIZE 参数除了 SYSTEM 资料表空间其它资料表空间也可以遵循「标准资料区块」的设定此外在 Oraclei 数据库中您可以设定额外四种「非标准资料区块」需要注意的是「标准资料区块」大小在数据库建立完成后即无法更改

n          针对未来数据库的运作情况订立一份良好的数据库备份计划以便数据库毁损时能在最短时间内予以修复

n          熟悉 Oraclei 数据库的激活/关闭方式与其搭配的各种选项(如 STARTUP 指令的 nomountmountopen 选项)

n          确认物理内存是否足以激活 Oraclei Instance

n          确认 Oraclei 服务器机的磁盘空间足够以建置新数据库

除了本文提及的注意事项您也可以查阅各种操作系统专属的 Oraclei 安装指南以获取更详尽的信息

选择数据库建置方式

Oraclei 数据库建置过程包含下列三项主要工作

n          建置新的数据库实体档案包含资料文件重置日志文件

n          建立控制档并予以初始化

n          建置 Oraclei 存取数据库系统时必要的数据字典(data dictionary)

实际上您可能经由下列三种方式之一来建置新的 Oraclei 数据库时

n          使用 Oracle「数据库建置组态精灵」(Database Configuration AssistantDBCA)

Oracle Universal Installer 在安装过程中会适时激活 DBCA 协助您建立数据库视您选择的安装种类而定DBCA 将以图形接口方式引导您逐步完成 Oraclei 数据库的建置工作若是安装过程未激活 DBCA您也可以事后单独激活 DBCA 建立新数据库甚至建立第二个 Oraclei 数据库

n          执行指令文件(script)手动建立 Oraclei 数据库

如果您手边恰好保存着上次建立 Oraclei 数据库所用的指令文件那么您可以直接编修该指令文件并予以执行否则建议您使用 Oraclei 提供的范例指令文件进行编修Oraclei 不仅提供了数据库建置范例指令文件也提供了起始参数范例文件您可视实际需要进行必要调整

n          移转(migrate)或升级(upgrade)既有数据库

如果您的应用系统正在存取既有 Oracle 数据库除非您需要一个全新的数据库或是测试用环境否则应该不需要建立新数据库在此情况下您所面临的将是数据库移转或升级议题有关这方面的详尽信息请参阅《Oraclei Database Migration》手册

再谈起始参数档

还记得上一期曾经提过的起始参数档吗?因为手动建立 Oraclei 数据库之前必须先激活 Oraclei Instance因此您必须先建立一个起始参数档建立新的起始参数档时最快速的方式就是编辑 Oraclei 提供的范例档案然后另存新档我较习惯的方式是直接编辑既有起始参数档之复本然后视实际需要进行调整因为起始参数档可供设定的参数非常多如果某些参数未经过明确设定Oraclei 会自动代入默认值

第一次以手动方式建立 Oracle 数据库时建议您尽可能不要修改各起始参数值等到您熟悉每个参数的意义与使用时机之后再利用文字编辑器调整或新增其它参数除此之外Oraclei 允许您建立服务器参数文件(以二进制格式存放)该档案内的参数可在 Oraclei Instance 激活后执行 ALTER SYSTEM 指令予以修改

以下是建置新数据库之前必须新增或编辑的起始参数包括

n          全域数据库名称

n          控制文件名称与路径

n          资料区块大小

n          影响 SGA 容量的起始参数

n          设定处理程序最大数目

n          设定空间回复(Undo)管理方法

设定全域数据库名称

Oraclei 的全域数据库名称由「数据库名称」与「网域名称」所组成其中「数据库名称」设定于 DB_NAME 起始参数而「网域名称」则是设定于 DB_DOMAIN 参数这两个参数合并之后就可以在网际网络上唯一识别每一个 Oraclei 数据库举例来说假设我们欲建立的 Oraclei 数据库之全域数据库名称为 tw那么可在起始参数档内设定下列两参数

DB_NAME = mydb

DB_DOMAIN = tw

Tips

您可以执行 ALTER DATABASE RENAME GLOBAL_NAME 指令更改 Oraclei 数据库的全域数据库名称在您更改 DB_NAME 与 DB_DOMAIN 这两个起始参数后必须将 Oraclei 数据库重新激活才会生效此外控制档也必须重新建立

关于 DB_NAME 起始参数

DB_NAME 必须是文字字符串且不能超过 个字符在建立数据库的过程中DB_NAME 设定值会记录在资料文件控制文件以及重置日志文件之中如果您激活 Oraclei Instance 的时候起始参数档内设定的 DB_NAME 不同于控制文件内所纪录的那么数据库将无法激活

关于 DB_DOMAIN 起始参数

DB_DOMAIN 通常是数据库主机所在位置的网域名称如果您欲建立的数据库将加入分布式数据库运算环境请特别注意此参数的设定

设定控制档

如前所述控制文件是 Oraclei 数据库内相当重要的档案因此您必须在新的起始参数档内加入 CONTROL_FILE 参数以设定控制文件之文件名与路径当您执行 CREATE DATABASE 时列在 CONTROL_FILE 之中的控制档将随之建立如果起始参数档忽略了此项参数则 Oraclei 会在执行 CREATE DATABASE 指令时自动建立控制文件并命名之然后放在系统预设路径下

那么如果 CONTROL_NAME 内设定的控制文件已经存在于操作系统下该怎么办呢?此时 Oraclei 会自动覆盖既有的控制档如果您想建立全新的控制档请确定 CONTROL_NAME 设定的控制文件名不会与操作系统下任何文件名重复

依照过去经验Oracle 强烈建议您为每个数据库至少规划两个控制档并分散在两个实体磁盘上如此可避免任一控制文件毁损时造成系统停摆

设定资料区块大小

Oraclei 数据库内存放资料的最小单位为「资料区块」(data block)数据库内「标准资料区块」大小是设定在起始参数档之 DB_BLOCK_SIZE 参数Oraclei 数据库内最重要的 SYSTEM 资料表空间就是以 DB_LOCK_SIZE 设定值为基础所建立此外 DB_BLOCK _SIZE 也是建立新资料表空间时预设的资料区块大小除了标准资料区块大小之外Oraclei 支持额外 种「非标准资料区块」大小

关于 DB_BLOCK_SIZE 起始参数

从 Oraclei 开始DB_BLOCK_SIZE 所设定的仅是标准资料区块大小绝大多数的数据库环境只需要设定该参数即可一般来说DB_BLOCK_SIZE 可设定为 K 或 K如果此参数未经设定则 Oraclei 会自动依照数据库所在操作系统平台自行决定适当的资               

上一篇:oracle加锁

下一篇:使用PL/SQL从数据库中读取BLOB对象