首页 > 代码库 > 【Oracle】数据库启动阶段参数文件、控制文件的问题处理

【Oracle】数据库启动阶段参数文件、控制文件的问题处理

Oracle启动分三个阶段:

nomount:

首先查找参数文件(pfile/spfile),根据文件创建实例。Nomount的过程是启动数据库实例的过程。

没有参数文件无法nomount

mount:

从参数文件中获得控制文件的位置信息,然后打开控制文件。

--没有控制文件无法mount

open:

打开控制文件中所有描述的文件。

--没有数据文件无法open

-------------------------------------------------------------------------------------

NLS_LANG设置要点:

Chcp = 936 表示gbknls_lang设置如下:

set NLS_LANG=simplifiedchinese_china.zhs16gbk

客户端系统的编码是什么,nls_lang就需要设成什么编码。Oracle在存储数据时,会对接收到的数据根据nls_lang的编码进行解码,然后再以oracle数据的编码存入数据库。


一、参数文件生成

空闲实例可以把pfilespfile互转

Pfile(文本文件):客户端文件,可以放在其它位置

Spfile(二进制文件):服务端文件,只能放在database下,但可以用pfile中指定位置。

Create pfile from spfile;

Create spfile from pfile;

注意点:修改参数前,最好先生成一个pfile文件


wKioL1QSdb2TqkbnAAXCiVz0YHI712.jpg



spfile pfile移动到别的地方启动:

wKiom1QSdemCtFD7AACVOJaj8DY724.jpg


若是有initsid.ora文件,则可以把initsid.ora文件放到database目录下,或者用指定方法启动:


wKiom1QSdi6y7tFdAAEEfulkLZo945.jpg


SQL> startup nomountpfile=‘D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\bak\inith

xw168.ora‘


指定参数启动的,不能直接create spfile from pfile;

wKiom1QSdnPAD8aKAADJG0deABA153.jpg

wKioL1QSdoSTEjoaAACBgAp47BU187.jpg


关掉实例,重新 startup nomount即可启动。


二、spfile文件移动位置

 

database目录下创建initsid.ora文件,在里面只写以下内容:

spfile=‘D:\oracle\product\11.2.0\dbhome_1\database\bak\SPFILEHXW168.ORA‘

spfile文件的位置。如下图:

show parameter spfile;后可以查到现在使用的spfile是在bak目录下面。

wKiom1QSdsqiUrD1AATxIfkrZxw299.jpg


三、添加或删除控制文件

 

参数文件记录控制文件位置,控制文件位置:

D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL

D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTROL02.CTL


wKiom1QSd0KiZ7jAAAElgdi0vNo345.jpg

把其中D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL文件移走,启动如下:

wKioL1QSd1Oj2CU1AAGXHhQeIQ4271.jpg

wKiom1QSd0KCSaX5AADTn6M3iLQ875.jpg


Alter日志如下:

wKioL1QSd5aQ_rMvAAGIHhPinXg980.jpg


有二个方法可以解决:

1、由于控制文件是互相镜像,把另一个控制文件复制过来并改名,即可。

2、在参数文件中把这个控制文件信息删除,操作步骤如下:

查看control_files参数类型,可以看到false:表示修改后需要重启生效。

wKiom1QSd8Lj00ZoAAEd489pg70668.jpg


SQL> alter system setcontrol_files=‘D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTRO

L02.CTL‘;这样会报错,所以需要加上scope=spfile;


wKioL1QSeAiCMuKbAAE60xNonDE659.jpg


关闭数据库再启动到nomount下,可以看到只有一个控制文件了:


wKioL1QSeE_QjUzvAAE0GgqQsgI693.jpg

可以正常进入mount状态

wKiom1QSeFOxFLxUAACGkpmgeXE709.jpg


D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL添加回去。命令如下:

SQL> alter system set control_files=‘D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTRO

L02.CTL’,’D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL‘scope=spfile;

 

关闭数据库,把D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTROL02.CTL文件复制到并改名D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL

wKioL1QSeH6S1NEYAAHq2y3I3RM013.jpg



三、参数设置

1、  修改session的参数

Alter nls_date_format=’yyyy/mm/ddhh24:mi:ss’;

 

2、  修改系统的参数

Alter system set control_files=’path1’,‘path2‘scope=spfile;

 

3、  查看参数默认值

--查看参数有什么值

select * from v$parameter_valid_valueswhere name=‘audit_trail‘

--查看参数是什么静态还是动态

select * from v$system_parameter wherename=‘audit_trail‘

 

ISSYS_MODIFIABLE

False:重启后生效,需要指定scope=spfile;

IMMEDIATE:更改后马上生效。


本文出自 “尽管错,让我错到死!” 博客,请务必保留此出处http://hxw168.blog.51cto.com/8718136/1551541

【Oracle】数据库启动阶段参数文件、控制文件的问题处理