Oracle 数据库关闭过程2025年1月23日 | 阅读 9 分钟 何时必须关闭 Oracle 数据库?停止数据库有一些特定的理由。
例如,要将数据库从 12 升级到 19 摄氏度,必须先关闭数据库。只有这样才能进行升级。 关闭 Oracle 数据库的方法
下面显示了关闭技术的通用表格,该表格概述了每种关闭方法的行为。 ![]() 正常关闭标准的数据库关闭禁止用户建立新连接。在数据库端,数据库会等待当前会话完成。数据库会等待所有当前事务完成。它会终止文件并强制执行检查点。由于数据库中某些用户会话可能需要数小时甚至数天才能完成,因此此策略既非常安全又极难执行。 事务性关闭这是第二种操作方式。当我们执行事务性关闭时,数据库将停止允许新用户连接。 数据库在不等待活动会话结束的情况下运行。但是,它会等待当前事务完成。此技术关闭文件并强制执行检查点。它也是一种安全地结束数据库操作的方法。但是,有时可能会很困难,因为数据库必须等待每个事务完成,即使其中一些事务需要很长时间。 立即关闭数据库行业中最受欢迎的关闭技术是立即关闭。此技术可阻止新连接,不等待正在进行的会话结束,也不允许正在进行的事务完成。在强制执行检查点后,文件将被关闭。 这三种关闭技术都非常安全。这些技术将产生一致的数据库。但是,中止关闭方法现在会导致数据库不一致。 中止关闭此技术阻止打开新连接,阻止会话结束,阻止事务完成,强制执行检查点,并且不关闭文件。由于此方法不强制执行检查点并保存文件,因此我们可能会丢失数据。尽量避免使用此方法。 注意:这假设关闭是正常的,如果您只在数据库中输入 shutdown 而没有数据库。一致数据库和不一致数据库之间的区别一致数据库具有正常关闭、事务性关闭和立即关闭等关闭方法,而不一致数据库则没有。在这些关闭方法中,未提交的修改将被回滚,但未提交的数据将存储在数据库中。 数据文件将使用数据库缓冲区缓存进行写入。所有资源都已可用。由于一切都已保存,因此不需要实例恢复。中止关闭、实例故障和启动强制等方法是 것입니다。作为结果,就不能将更改后的缓冲区—也称为脏缓冲区—写入数据文件。未提交的更改无法撤销。联机重做日志文件用于重新应用数据库设置期间所做的更改,而撤销段用于回滚未提交的数据。所有资源都已可用。 ![]() 我们已经讨论了后台过程。DBWn 是一个后台进程的名称。这个人写数据库。在物理位置的数据文件中,它将数据缓冲区从数据库缓冲区缓存写入。当我们执行 commit 时,我们所做的更改不会立即存储在数据文件中。在数据库中发生的任何事务都在内存或数据库缓冲区缓存中进行。例如,我们使用 update 命令更新了一些数据库条目。下面照片中可以看到棕色的块。棕色框表示已更新的数据库。已更改数据的术语是脏缓冲区。 ![]() 上面数据库缓冲区缓存中的棕色块显示了脏缓冲区。 数据库写入器何时写入数据文件?DBWn 因五个主要原因向数据文件写入数据。 脏缓冲区阈值:当数据库缓冲区缓存中充满了新的、脏的缓冲区时,数据库写入器会将数据发布到数据文件。这是第一个原因。我们称之为脏缓冲区的阈值。
现在,让我们看看关闭技术是如何实际实现的。 步骤 1:连接到 Oracle 数据库以 Oracle 用户身份登录 Linux 计算机。在 Oracle 用户登录后,启动两个终端窗口,并使用“sysdba”分别登录数据库。 连接数据库后,使用命令“show con_name”显示容器数据库名称。 ![]() 步骤 2:常规 Oracle 数据库关闭让我们在终端 2 的数据库中创建一个表。在根数据库中创建表不是一个好主意,但我们可以这样做,因为我们仍在学习;不过,它应该在生产环境之外进行。以下查询用于创建表。 ![]() 因此,将创建一个名为“student”的表,其行名为“roll_no”。在构建表和行后,我们将向行添加值 1。 因此,即使发出“shutdown Normal”命令,数据库也不会关闭,因为需要提交产生表的第二个会话才能终止它。因此,我们将键入“Commit”命令。执行“Commit”指令后,事务就完成了。在此事务之后,他可以执行任何其他操作,例如回滚或创建新表。 ![]() 数据库将关闭,并且 Shutdown Normal 将在离开数据库后运行。因此,我们可以从这个实验中推断出,只有在事务完成并且会话结束之后,数据库才会关闭。 步骤 3:Oracle 中的事务性数据库关闭在正常模式下关闭数据库后,使用“startup”重新启动数据库。打开两个终端。继续到终端 1,并使用“Startup”命令在数据库完全可访问后启动数据库。接下来,打开终端 2 并使用“sqlplus / as sysdba”连接到数据库。连接到数据库后,在新生成的表中插入新行。所有命令都已练习并显示在下方。 ![]() 我们在终端 2 中完成的插入事务阻止了数据库关闭,即使我们发出了“Shutdown Transactional”命令。我们必须执行“Commit”命令来完成事务。发送命令后,事务性关闭将关闭数据库。此功能不会等待会话结束。您可以在下方看到数据库已关闭并终止。 ![]() 步骤 4:快速关闭 Oracle 数据库在事务性关闭之后。使用终端 1 的“Startup”命令重新启动数据库。 ![]() 数据库启动后,在新添加到我们在终端 2 中之前创建的表中插入新记录。因此,数据库在终端 -1 上启动。在终端 -2 的 student 表中又添加了一行。 接下来,我们将插入一个新行,然后发送“Shutdown Immediate”命令。发出此命令后,Oracle 将不会等待用户会话和事务完成。数据库将立即终止。因此,我们添加到 student 表中的行将被回滚。 ![]() 现在有一个活动的“Shutdown Immediate”。因此,数据库将终止。转到终端 2 并运行任何查询以查看数据库是否已关闭。例如,我们将执行类似“select name from v$database”的查询。让我们检查一下可能的结果。 因此,我们收到了一个表明连接已断开的输出。数据库已关闭,如下所示。让我们重新启动数据库,看看新生成的记录是否包含在数据库中。数据库已启动。为了查看 student 表中有哪些行,让我们执行一个查询。 查询:选择 * 来自 student; 只有两行可用。 ![]() 由于我们没有提交数据并使用了“shutdown immediately”来关闭数据库,因此没有第三行。因此,在快速关闭过程中,未提交的数据将不会保存。 另一种方法是中止关闭。由于此技术会影响数据库的性能,因此我们不建议使用它。 根据特定的需求和数据库的当前状态,有几种关闭 Oracle 数据库的方法。以下是关键操作和技术 1. 使用 SQL*PlusSQL*Plus 是一个命令行实用程序,提供了一个与 Oracle 数据库交互和控制的强大接口。您可以如下停止数据库
2. 使用 OEM,Oracle Enterprise ManagerOracle Enterprise Manager 是一个在线界面,用于管理 Oracle 数据库。应用方法如下
3. 使用 Oracle SQL Developer
以下是关于每种关闭方法和选项的更深入信息1. 详细的关闭选项:立即关闭
2. 正常关闭
3. 事务性关闭
4. 中止关闭
结论总而言之,选择最佳的关闭选项和技术将取决于您环境的特定需求。由于 SHUTDOWN IMMEDIATE 在速度和安全性之间取得了良好的平衡,因此通常推荐使用它。选择最佳关闭技术时,请牢记数据库的当前状态、正在进行的事务和用户活动。通过进行规划,并在用户了解可用工具和命令的情况下,数据库关闭过程将顺利有效地运行。 |
我们请求您订阅我们的新闻通讯以获取最新更新。