Oracle数据库架构与实施全解析
立即解锁
发布时间: 2025-08-21 02:09:12 阅读量: 4 订阅数: 6 

### Oracle数据库架构与实施全解析
#### 1. Oracle数据库基础设置
在启动Oracle 12c数据库时,为了让Oracle能自动找到相关文件,建议将参数文件(PFILE)和服务器参数文件(SPFILE)放在默认位置,并采用默认命名规则。这样做可以避免每次启动数据库时都要手动指定文件位置,提高管理的便捷性。
#### 2. 数据库逻辑结构应用
了解数据库的物理结构后,可将其进一步划分为逻辑结构。这些逻辑结构都存在于数据文件中,能帮助我们将数据组织成易于管理和逻辑清晰的部分。若不进行逻辑划分,数据库将面临管理困难、性能不佳、数据查找困难等问题。
##### 2.1 表空间(Tablespaces)
表空间是物理存储的第一级逻辑组织。每个Oracle 12c数据库都应具备以下表空间:
- **SYSTEM**:存储运行数据库本身所需的核心对象。
- **SYSAUX**:存储辅助对象,与数据库的核心功能无直接关联。
- **UNDO**:存储用于事务恢复的回滚段。
- **TEMP**:用于临时存储。
每个表空间负责组织一个或多个数据文件。随着数据库的增长,可添加更多数据文件。例如,若数据库包含销售、人力资源、会计和历史数据,可创建以下表空间:
| 表空间名称 | 用途 |
| ---- | ---- |
| SALES_DATA | 存储销售数据 |
| SALES_INDEX | 存储销售数据索引 |
| HR_DATA | 存储人力资源数据 |
| HR_INDEX | 存储人力资源数据索引 |
| ACCOUNTING_DATA | 存储会计数据 |
| ACCOUNTING_INDEX | 存储会计数据索引 |
| HISTORY_DATA | 存储历史数据 |
| HISTORY_INDEX | 存储历史数据索引 |
将表和索引在逻辑和物理上分离是数据库中的常见做法,这样可以提高性能,并且在数据文件出现问题时,可独立备份和恢复表空间。
##### 2.2 段(Segments)
段是表空间之后的下一个逻辑存储结构,是数据库中需要物理存储的对象,包括表、索引、物化视图和分区等。而视图、过程、同义词和序列等对象不属于段,它们是存储在SYSTEM表空间中的代码片段。
创建段时,应指定其所属的表空间,这有助于提高性能。例如,将EMPLOYEES表存储在HR_DATA表空间中,将该表LAST_NAME列的索引存储在HR_INDEXES表空间中,可避免在查询员工信息时,从存储表数据的同一数据文件中读取索引。
##### 2.3 区(Extents)
区类似于树木的年轮,段增长时会获得新的区。创建表时,表会获得第一个区,随着数据的插入,区会逐渐填满,当区填满后,会从表空间中获取另一个区。
表空间最初是空闲空间,创建对象时,空闲空间会以区的形式分配给段。普通表空间由已使用的区和空闲空间组成。当所有空闲空间都被填满时,数据文件将没有可用空间,此时需要DBA采取措施释放更多空间。
区不一定是连续的,不同对象的区可能会相互交织,但Oracle 12c能够有效管理这种情况。如果表空间包含多个数据文件,区会以循环方式在所有数据文件中创建,这有助于提高性能。例如,一个大表所在的表空间由四个数据文件组成,表扩展时,区会按1,2,3,4,1,2,3,4...的顺序分配。
##### 2.4 Oracle块(Oracle blocks)
Oracle块是Oracle在任何给定时间读取或写入的最小单位。虽然Oracle通常会一次读取或写入多个块,但现在这些操作大多由系统自动调整,用户可在一定程度上手动调整。
数据和索引存储在块中。插入新行时,Oracle会先找到段,询问段是否有可用空间,段返回一个未满的块,然后将行或索引条目添加到该块中。如果没有可用块,段会从表空间中获取一个新的空闲区。
Oracle块由操作系统块组成,其大小应能被操作系统块大小整除,且不能小于操作系统块大小。
##### 2.5 可插拔数据库(Pluggable Databases)
Oracle 12c引入了可插拔数据库的概念,这是一种可选架构。在该架构中,一个或多个较小的模式、数据表、索引和数据字典子集作为可插拔数据库(PDB)运行在一个更大的容器数据库(CDB)中。
CDB作为根数据库实例,每个PDB作为租户在其中运行,形成多租户架构。每个PDB包含自己的模式、数据库、索引和小型数据字典,以在更大的CDB中保持独立。例如,可在一个CDB中为销售、人力资源和新产品部门分别创建PDB。
采用可插拔数据库架构有以下好处:
- 减少冗余的物理结构、内存开销和后台进程,将这些资源集中到CDB中,从而在消耗较少资源的情况下,将更多数据库作为PDB租户整合到CDB中。
- 可通过克隆现有PDB轻松创建新的PDB,并可根据需要在不同CDB之间移动PDB,支持迁移、升级和测试。
#### 3. 实施Oracle数据库前的准备
在创建数据库并存储数据之前,需要进行规划,确定整体数据库架构。数据库是信息系统的一部分,需了解其在系统中的布局。常见的系统架构有以下几种:
- **客户端 - 服务器(Client - server)**
- 用户工作站安装应用程序,运行时访问远程数据库服务器上的数据。工作站负责呈现和应用逻辑,数据库服务器作为数据存储。
- 客户端应用程序通过ODBC、JDBC或Oracle Net等协议访问数据库。数据库根据用户的SQL查询和数据操作语言(DML)语句提供数据。
- 虽然客户端 - 服务器架构相对较旧,但在许多情况下仍能满足业务的即时需求,且一些遗留应用程序仍在使用该架构。
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(客户端工作站):::process -->|ODBC/JDBC/Oracle Net| B(数据库服务器):::process
A -->|应用逻辑和呈现| C(用户):::process
B -->|提供数据| A
```
- **多层(Multi - tier)**
- 多层应用是当前的行业标准,由多个Web、应用和数据库服务器为瘦客户端提供内容,通过Web浏览器呈现。
- 客户端仅作为Web浏览器访问Web服务器,不进行实际处理。Web服务器接收请求并解析后,将其发送到应用服务器进行处理。
- 应用服务器使用相关应用逻辑处理用户请求,期间可能需要访问数据库。应用服务器通过JDBC或Oracle Net等协议与数据库服务器通信,使用通用Web账户连接数据库,形成连接池以提高性能。
- 多层架构的优势在于可使用不同供应商的组件,实现“最佳组合”配置;可根据用户数量添加服务器以提升处理能力;具备容错能力,当某个服务器出现故障时,冗余服务器可接管工作。
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(客户端浏览器):::process -->|HTTP/HTTPS| B(Web服务器):::process
B -->|解析请求| C(应用服务器):::process
C -->|JDBC/Oracle Net| D(数据库服务器):::process
D -->|数据结果| C
C -->|处理结果| B
B -->|呈现内容| A
```
- **组件配置(Component configurations)**
- 在某些情况下,Oracle数据库可作为大型商业现货(COTS)应用的辅助数据存储。例如,Oracle Designer使用Oracle数据库作为存储应用代码的仓库,遵循客户端 - 服务器模型。
- Oracle Internet Directory(OID)是Oracle在多层环境中作为子组件的一个例子。OID是Oracle对LDAP(轻量级目录访问协议)的实现,用于快速查找数据,如电子邮件地址簿或用户凭证验证。OID存储在Oracle数据库中,为更大的系统提供身份验证服务。
在实施Oracle数据库时,了解数据库适合的系统架构类别至关重要,因为这有助于确定数据库的特定需求,从而更好地进行系统设置。
### Oracle数据库架构与实施全解析
#### 4. 不同架构的详细分析与对比
为了更清晰地了解客户端 - 服务器、多层和组件配置这三种架构,下面通过表格形式对它们进行详细对比:
| 架构类型 | 客户端 - 服务器 | 多层 | 组件配置 |
| ---- | ---- | ---- | ---- |
| 核心特点 | 用户工作站安装应用程序,访问远程数据库服务器数据,工作站负责呈现和应用逻辑,服务器作为数据存储 | 由多个Web、应用和数据库服务器为瘦客户端提供内容,通过Web浏览器呈现,各层分工明确 | Oracle数据库作为大型应用的辅助数据存储,为特定功能服务 |
| 通信协议 | ODBC、JDBC、Oracle Net | JDBC、Oracle Net、HTTP/HTTPS | 依据具体应用,可能包含JDBC、Oracle Net等 |
| 性能优势 | 数据库服务器可进行更密集处理,减轻工作站负担 | 可使用不同供应商组件实现“最佳组合”,可按需添加服务器提升性能,具备容错能力 | 满足特定应用对数据存储和快速查找的需求 |
| 适用场景 | 满足业务即时需求,遗留应用程序 | 现代大型应用,用户数量多,对性能和扩展性要求高 | 特定大型商业应用,需要辅助数据存储和快速查找功能 |
#### 5. 各架构下的操作流程
##### 5.1 客户端 - 服务器架构操作流程
1. 用户在工作站启动安装的应用程序。
2. 应用程序根据业务逻辑,通过ODBC、JDBC或Oracle Net协议,使用客户端tnsnames.ora文件向数据库服务器发送数据请求。
3. 数据库服务器接收到请求后,根据用户的SQL查询或DML语句,在数据库中进行数据检索或操作。
4. 数据库服务器将处理结果返回给客户端应用程序。
5. 客户端应用程序将结果呈现给用户。
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(用户启动应用程序):::process --> B(应用程序发送请求):::process
B -->|ODBC/JDBC/Oracle Net| C(数据库服务器处理请求):::process
C -->|返回结果| B
B --> D(应用程序呈现结果给用户):::process
```
##### 5.2 多层架构操作流程
1. 用户通过Web浏览器访问Web服务器,发送HTTP或HTTPS请求。
2. Web服务器接收到请求后,对请求进行解析,然后将其转发给相应的应用服务器。
3. 应用服务器根据用户请求,执行相关的应用逻辑。在执行过程中,若需要访问数据库,应用服务器通过JDBC或Oracle Net协议,使用通用Web账户连接数据库服务器。
4. 数据库服务器根据应用服务器的请求,执行SQL查询或DML操作,并将结果返回给应用服务器。
5. 应用服务器对数据库返回的结果进行进一步处理。
6. 应用服务器将处理后的结果返回给Web服务器。
7. Web服务器将最终结果以HTML、Java applet或ActiveX组件等形式呈现给用户。
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(用户浏览器发送请求):::process -->|HTTP/HTTPS| B(Web服务器解析请求):::process
B --> C(应用服务器执行逻辑):::process
C -->|JDBC/Oracle Net| D(数据库服务器处理数据):::process
D -->|返回结果| C
C --> E(应用服务器处理结果):::process
E --> B
B --> F(Web服务器呈现结果给用户):::process
```
#### 6. 可插拔数据库的应用与优势总结
可插拔数据库(PDB)在现代数据库管理中具有重要的应用价值,其优势主要体现在资源利用和管理灵活性两个方面。
在资源利用方面,通过将冗余的物理结构、内存开销和后台进程集中到容器数据库(CDB)中,PDB可以在消耗较少资源的情况下,实现多个数据库的整合。这对于大型数据中心的整合或服务器资源受限的环境尤为重要,能够有效提高资源利用率,降低成本。
在管理灵活性方面,PDB的可插拔特性使得创建和迁移数据库变得更加容易。可以通过克隆现有PDB轻松创建新的PDB,满足不同部门或项目的需求。同时,还可以根据需要在不同CDB之间移动PDB,支持数据库的迁移、升级和测试工作,大大提高了数据库管理的效率和灵活性。
综上所述,Oracle数据库的架构设计和不同实施方式为企业提供了多种选择,能够满足不同业务场景的需求。在实际应用中,需要根据具体情况选择合适的架构和实施方法,以充分发挥Oracle数据库的性能和优势。
0
0
复制全文
相关推荐








