数据库的规划与组织是数据库系统管理的首要步骤,涉及明确需求、设计架构和选择合适的数据库类型等内容。以下为具体步骤和分类整理:
定义数据库的目的:
明确数据库的用途,例如支持事务处理、数据分析、混合型负载等。
定义数据库的类型:
根据业务需求选择适合的数据库类型(事务型、分析型等)。
制定数据库架构设计:
确定表结构、字段、索引、关系,以及是否需要分布式或集群部署。
选择数据库名称:
为数据库实例选择简洁、独特且具有业务含义的名称,方便管理和维护。
定义:适用于联机事务处理,侧重快速执行高并发的小型事务。
特点
:
高并发性:支持同时处理大量事务。
小型事务:单次操作影响的数据量较少(如插入、更新、删除)。
数据一致性要求高:需保证 ACID 特性。
表结构高度规范化:减少冗余,优化写操作性能。
典型场景:银行转账、库存管理系统、电商订单处理。
定义:适用于联机分析处理,专注于对大量数据的复杂查询和多维分析。
特点
:
少量用户:通常只有少量分析员或业务人员进行查询操作。
低并发:查询频率较低,但单次查询的数据量大。
去规范化设计:优化读取性能,通常采用星型或雪花型数据模型。
数据历史性:通常存储和分析大量历史数据。
典型场景:商业智能(BI)、数据仓库、大数据分析。
OFA是Oracle推荐的标准数据库架构布局,是一种优化的文件系统结构设计规范,用于帮助管理员合理规划数据库文件的位置和管理方式。其主要目的是提高数据库的性能、管理灵活性和可维护性。
OFA包括三个主要规则:
建立一个目录结构,其中任何数据库文件都可以存储在任何磁盘资源上。
将具有不同行为的对象分离到不同的表空间中。
通过将数据库组件分离到不同的磁盘资源上来最大化数据库的可靠性和性能。
在创建新的数据库之前,必须确保以下条件已满足,以便顺利完成安装和配置:
必须拥有一个具有必要权限的帐户,可以通过以下方式认证:
操作系统认证:用户通过操作系统级权限获得认证,例如 oracle
用户。
口令文件认证:通过指定的密码文件进行认证(如 Oracle 的 orapwd
文件)。
内存:确保服务器拥有足够的内存以支持数据库实例的启动和运行。
磁盘空间:
预留足够的存储容量用于数据库文件(数据文件、日志文件、控制文件等)。
为后续扩展考虑磁盘规划。
流程图帮助管理员根据不同的情况选择合适的认证方法。
使用 Oracle 提供的 orapwd
工具创建密码文件。
$ orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=5
参数说明:
file
:指定密码文件的路径和名称(通常位于 $ORACLE_HOME/dbs
目录)。
password
:为 SYS
用户设置初始密码。
entries
:定义可存储的管理员用户数。
在初始化参数文件中,设置 REMOTE_LOGIN_PASSWORDFILE
的值为 EXCLUSIVE
:
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
取值说明:
NONE
:禁用口令文件认证。
SHARED
:多个数据库实例共享同一个密码文件。
EXCLUSIVE
:每个实例独享一个密码文件(推荐)。
通过命令将特权用户添加到口令文件:
GRANT SYSDBA TO username;
username
是需要赋予管理员权限的用户。
为每个用户分配适当的权限,例如 SYSDBA
或 SYSOPER
:
GRANT SYSOPER TO username;
权限说明:
SYSDBA
:具备最高权限,可执行所有管理操作。
SYSOPER
:具备基本的操作权限(如启动、关闭数据库)。
Oracle数据库可以通过以下方式创建:
Oracle Universal Installer(安装软件本身时创建数据库,使用DBCA创建)
Oracle Database Configuration Assistant
图形用户界面
基于Java
由Oracle Universal Installer启动
可以作为独立应用程序使用
CREATE DATABASE命令
DBCA(Database Configuration Assistant)是 Oracle 提供的一个图形化工具,主要用于管理数据库的生命周期。它简化了数据库创建、配置和模板管理等操作。
使用向导模式快速创建新数据库。
支持使用标准模板或自定义模板。
可以配置多租户(CDB/PDB)架构。
为现有数据库启用或禁用功能模块,如:
数据库归档模式(Archive Mode)。
Oracle Enterprise Manager。
高级功能(如分区表、加密等)。
安全且彻底地删除现有数据库,包括:
删除数据库文件。
删除相关配置文件。
清理环境变量。
DBCA 提供模板功能,便于快速创建具有相似配置的数据库。模板管理包括以下操作:
使用预定义的模板设置创建新模板
利用 Oracle 提供的标准模板(如事务处理型或数据仓库型)创建新模板。
从现有数据库创建新模板
根据当前数据库的配置生成自定义模板,包含:
数据库结构(表空间、用户、配置等)。
可选择是否包含数据。
删除数据库模板
清理不再需要的数据库模板,释放存储空间。
通过 DBCA 创建数据库的过程可以分为以下几个关键步骤:
进入 DBCA 向导界面,选择 “创建数据库” 选项开始操作。
指定数据库类型:
事务型数据库(OLTP)。
数据仓库型数据库(OLAP)。
自定义数据库。
指定全局数据库名称和 SID:
全局数据库名称:唯一标识数据库,例如 mydb.example.com
。
SID(System Identifier):实例标识符,例如 mydb
。
启用或禁用数据库功能,例如:
Oracle Enterprise Manager。
数据库审计。
多租户(CDB/PDB)架构。
归档模式(ARCHIVELOG):
启用:支持数据库备份和恢复操作。
禁用:适用于无需归档的测试环境。
非归档模式(NOARCHIVELOG):仅保留当前日志文件,性能更高。
内存设置:手动调整 SGA 和 PGA 的大小,或使用自动内存管理。
字符集:选择数据库的字符集(如 AL32UTF8
)。
数据库大小:根据业务需求调整表空间容量。
文件位置:定义数据文件、日志文件和控制文件的存储位置。
归档选项:设置归档日志文件的位置和方式。
设置表空间的大小和扩展策略。
定义数据文件的路径和命名规则。
完成上述设置后,DBCA 提供以下三种操作选择:
创建数据库:立即根据配置创建数据库。
保存为模板:将当前配置保存为模板,以便将来快速创建相同结构的数据库。
生成创建脚本:输出 SQL 创建脚本,供手动执行或进一步定制。
手动创建 Oracle 数据库包括以下详细步骤,适用于需要精细控制配置的场景。
决定一个唯一的 Oracle 系统标识符(SID)作为实例名称。
设置 ORACLE_SID
环境变量,指定实例标识符:
export ORACLE_SID=mynewdb
注意:SID 用于区分同一主机上的多个实例,最大长度为 12 个字符,仅支持字母和数字。
确保以下环境变量正确配置:
ORACLE_HOME
:指向 Oracle 软件安装路径。
ORACLE_SID
:指向当前实例。
可选:将 $ORACLE_HOME/bin
添加到 PATH
环境变量。
选择一种管理员身份验证方式:
密码文件认证:
创建密码文件:
orapwd file=$ORACLE_HOME/dbs/orapwmynewdb password=admin entries=5
操作系统认证:
使用属于 dba
组(UNIX/Linux)或管理员组(Windows)的账户登录。
创建一个文本初始化参数文件(init
),包含基本参数配置,例如:
DB_NAME=mynewdb DB_BLOCK_SIZE=8192 MEMORY_TARGET=500M CONTROL_FILES=('/u01/app/oracle/oradata/mynewdb/control01.ctl')
将文件存储在默认路径,例如 $ORACLE_HOME/dbs/initmynewdb.ora
。
如果在 Windows 系统上,需手动创建实例服务:
oradim -NEW -SID mynewdb -STARTMODE MANUAL -PFILE "C:\app\oracle\product\initmynewdb.ora"
使用 SYSDBA
权限通过 SQL*Plus 连接实例:
密码文件认证:
sqlplus /nolog SQL> CONNECT SYS AS SYSDBA;
操作系统认证:
sqlplus /nolog SQL> CONNECT / AS SYSDBA;
连接后,SQL*Plus 会显示:
已连接到空闲实例。
通过以下命令,从 PFILE 生成持久化的服务器参数文件(SPFILE):
CREATE SPFILE FROM PFILE;
注意:SPFILE 支持动态调整参数,需要在数据库重新启动后生效。
启动一个不挂载数据库的实例:
STARTUP NOMOUNT;
此时,实例已分配内存并启动后台进程,但数据库尚未创建。
执行 CREATE DATABASE
语句,创建数据库实例:
CREATE DATABASE user01 USER SYS IDENTIFIED BY ORACLE USER SYSTEM IDENTIFIED BY MANAGER CONTROLFILE REUSE LOGFILE GROUP 1 ('$HOME/ORADATA/u01/redo01.log') SIZE 100M, GROUP 2 ('$HOME/ORADATA/u01/redo02.log') SIZE 100M, GROUP 3 ('$HOME/ORADATA/u03/redo03.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 ARCHIVELOG FORCE LOGGING CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M DEFAULT TEMPORARY TABLESPACE temp UNDO TABLESPACE undotbs SET TIME_ZONE='America/New_York'
保存脚本: 将上述 SQL 保存到一个文件(如 create_database.sql
)。
执行脚本: 使用 Oracle SQL*Plus 工具执行该脚本,命令如下:
sqlplus / as sysdba @/路径/to/create_database.sql
步骤 10:创建附加表空间
为了使数据库功能正常,您需要为应用程序数据创建附加表空间。以下示例脚本创建了一些附加表空间:
CREATE TABLESPACE apps_tbs LOGGING DATAFILE '/u01/app/oracle/oradata/mynewdb/apps01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; -- 创建一个用于索引的表空间,与用户表空间分开(可选) CREATE TABLESPACE indx_tbs LOGGING DATAFILE '/u01/app/oracle/oradata/mynewdb/indx01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
运行以下脚本以完成数据字典视图、同义词和 PL/SQL 包的创建,并为 SQL*Plus 提供适当的功能支持:
@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql @?/sqlplus/admin/pubpld.sql EXIT
@
: 用于运行 SQL*Plus 脚本的命令。
?
: 表示 Oracle 主目录(通常为 $ORACLE_HOME
)。
脚本名称 | 功能描述 |
---|---|
catalog.sql |
创建数据字典表的视图、动态性能视图,以及多种视图的公共同义词,并授予对同义词的 PUBLIC 访问权限。 |
catproc.sql |
运行所有需要或使用 PL/SQL 的脚本,例如存储过程和包的定义。 |
pubpld.sql |
配置 SQL*Plus 的相关功能,为用户禁用某些命令。 |
登录 SQL*Plus:以管理员身份启动 SQL*Plus:
sqlplus / as sysdba
运行脚本: 顺序运行上述脚本:
@?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql @?/sqlplus/admin/pubpld.sql
退出: 脚本运行完成后,退出 SQL*Plus:
EXIT