### Oracle DBA 应该定期做什么笔记
#### 1. 数据库系统标识符(SID)的理解及作用
每个 Oracle 数据库都有一个唯一的系统标识符(System Identifier,简称 SID)。这个标识符是数据库的一个核心属性,用于唯一标识一个特定的 Oracle 数据库实例。典型的安装过程中,数据库使用的 SID 通常是 `ORCL`。例如,在安装过程中,可能会创建一个名为 `ORCL` 的数据库实例。
SID 不仅用于标识数据库实例,还被用于各种管理和维护任务中。例如,在启动或关闭数据库时,需要指定相应的 SID。此外,在配置网络服务时,也需要使用正确的 SID 以确保客户端能够正确地连接到数据库。
#### 2. 启动与关闭数据库的命令详解
##### 关闭数据库
- **正常关闭**: 使用 `shutdown` 命令,例如 `svrmgrl> connect internal/oracle> shutdown`。这将执行一系列标准步骤来确保数据的一致性。
- **立即关闭**: 使用 `shutdown immediate` 命令,例如 `svrmgrl> shutdown immediate`。这种方式比正常关闭更快,但在所有未提交的事务都已回滚后才会关闭数据库。
- **强行关闭**: 使用 `shutdown abort` 命令,例如 `svrmgrl> shutdown abort`。这是一种非常直接的关闭方式,可能会影响到数据的一致性,因此仅在紧急情况下使用。重新启动时,数据库管理系统会自动执行恢复过程,以确保数据的一致性。
##### 启动数据库
- **正常启动**: 使用 `startup` 命令,例如 `svrmgrl> startup`。这是最常用的启动方式,会执行一系列标准步骤来打开数据库。
- **安装启动**: 使用 `startup mount` 命令,例如 `svrmgrl> startup mount`。这种方式不会打开数据库,主要用于改变数据库的归档模式或执行恢复操作。
- **重建启动**: 使用 `startup nomount` 命令,例如 `svrmgrl> startup nomount`。这种方式主要用于重建控制文件或数据库。
- **受限启动**: 使用 `startup restrict` 命令,例如 `svrmgrl> startup restrict`。这种方式会限制数据库的访问权限,只有特定的用户才能访问数据库。
- **强制启动**: 使用 `startup force` 命令,例如 `svrmgrl> startup force`。当无法通过常规方式关闭数据库时,可以使用此命令强制关闭并重新启动数据库。
#### 3. 缺省用户和密码
- **安装完成后的初始口令**:
- `internal/oracle`
- `sys/change_on_install`
- `system/manager`
- `scott/tiger`
- `sysman/oem_temp`
- **ORACLE9IAS WEB CACHE 的初始默认用户和密码**:
- `administrator/administrator`
这些缺省用户和密码对于新安装的数据库来说非常重要,因为它们提供了基本的管理访问权限。DBA 应该在安装完成后立即更改这些密码,以提高系统的安全性。
#### 4. 让自定义回滚段生效
为了使自定义的回滚段在启动时生效,可以在初始化参数文件 (`initorcl.ora`) 中加入以下语句:
```
rollback_segments=(rb0,rb1,...)
```
这里的 `rb0`, `rb1` 等为自定义的回滚段名称。通过这种方式配置,可以确保在数据库启动时,这些回滚段会被激活并可供使用。
#### 5. 查看和修改数据库的字符集
##### 数据库服务器字符集
要修改数据库服务器的字符集,可以通过更新 `props$` 表中的记录来实现。例如,可以将字符集设置为 `ZHS16CGB231280`:
```sql
UPDATE props$ SET value$='ZHS16CGB231280' WHERE name='NLS_CHARACTERSET';
```
对于 Oracle 8i 及更高版本,还可以通过 `ALTER DATABASE` 命令来修改字符集,但需要注意的是,只能从子集到超集进行修改,并且不建议直接修改 `props$` 表,以免引发错误。
##### 查看数据库字符集
要查看当前数据库的字符集设置,可以执行以下 SQL 查询:
```sql
SELECT * FROM NLS_DATABASE_PARAMETERS;
SELECT * FROM V$NLS_PARAMETERS;
```
这些查询将返回有关数据库字符集的信息。
##### 客户端字符集环境
客户端字符集环境可以通过以下 SQL 查询获取:
```sql
SELECT * FROM NLS_INSTANCE_PARAMETERS;
```
这个查询的结果来源于 `v$parameter` 视图,表示客户端的字符集设置,可能来源于参数文件、环境变量或注册表。
##### 会话字符集环境
会话字符集环境可以通过以下 SQL 查询获取:
```sql
SELECT * FROM NLS_SESSION_PARAMETERS;
```
这个查询的结果来源于 `v$nls_parameters` 视图,表示当前会话的字符集设置,可能来源于会话环境变量或通过 `ALTER SESSION` 命令设置。
为了确保客户端和服务器之间的兼容性,客户端和服务器的字符集应保持一致。如果客户端字符集与服务器字符集不匹配,可能会导致非 ASCII 字符显示为乱码。为了防止这种情况发生,需要确保客户端和服务器的字符集设置相匹配。
#### 总结
作为 Oracle DBA,定期记录这些重要的知识点是非常必要的。这些知识点涵盖了数据库的基本管理操作,包括启动和关闭数据库、了解和使用缺省用户和密码、设置回滚段以及管理数据库的字符集等。掌握这些基础知识可以帮助 DBA 更好地管理和维护 Oracle 数据库系统。