在进行sga优化时,在memory_target和memory_max_marget已经被设置的情况下,个人又设置lock_sga=true,导致了错误ora-00847,下面演示如何解决这一错误:
整体思想:
Cause: MEMORY_TARGET/MEMORY_MAX_TARGET was set to a non-zero
value and LOCK_SGA was also set
Action: Do not set MEMORY_TARGET or MAX_MEMORY_TARGET if LOCK_SGA
is set to TRUE.
(1)在不知道memory_target和memory_max_marget已经被设置的情况下,我们进行sga优化设置,其中包括将lock_sga设为true
(2)作上述更改后,我们关闭数据库后再重启,数据库报错ora-00847
(3)接着我们找到可用的静态参数文件,采用指定参数文件方式打开数据库
(4)数据库报错ora-00205-error in identifying control file, check alert
log for more info,该错误解决思想如下:
Cause: The system could not find a control file of the specified
name and size.
Action: Check that ALL control files are online and that they are
the same files that the system created at cold start time.
由于我们之前为了提高I/O性能,将控制文件分别别放在不同的位置上,导致其位置信息与该初静态始参数文件不一致的情况,我们可以通过查看数据库及该参数文件得证:
oracle数据文件的位置:
参数文件init.ora.46201123388中控制文件的位置信息:
(5)基于以上原因,我们在数据库关闭状态下,将oracle控制文件拷贝到参数文件init.ora.46201123388指定的目录下
(6)下面利用参数文件init.ora.46201123388启动数据库,启动成功
查询控制文件位置,可见控制文件已经回到初始位置
(7)接下来我们关闭数据库后重启,数据库仍然报错ora-00847,这是因为在这里启动命令startup默认以spfile为参数文件进行启动,所以为了能够使用startup命令,我们来重新创建一个spfile
(8)下面我们基于参数文件init.ora.46201123388在oracle默认目录下创建一个动态参数文件spfiletaoguang.ora
(9)关闭数据库后使用startup命令重启,启动成功
(10)可用如下命令查询启动时使用的参数文件
(11)至此,错误ora-00847得到解决.为了保持控制文件信息与之前实践的一致性,我们将数据文件重新移动到原来模拟高速盘的位置,操作如下(详细步骤请见实践之二-移动和配置控制文件):