rac环境修改spfile后遭遇ora-29250小例

原创作品,出自 “深蓝的blog” 博客,转载时请务必注明出处,否则有权追究版权法律责任。

深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46863931

 

环境:

操作系统:CENTOS6.4 64BIT

数据库:RAC ORACLE 11.2.0.3 64BIT

 

启库后出现错误,之前修改过参数:filesystemio_options参数,但是重启库后,报如下错误:

SQL> startup

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.

 

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

 

官方文档:

ORA-32004: obsolete or deprecated parameter(s) specified forstring instance

Cause: Obsolete or deprecated parameters for this instance type were specified in the SPFILE or the PFILE on the server side.

Action: See alert log for a list of parameters that are obsolete or deprecated. Remove them from the SPFILE or the server side PFILE.

 

跟踪告警日志,锁定如下信息:

由于某参数设置不正确将引起以上问题。所以计划修改参数文件中参数设置。

开始如下步骤:

 

先在线根据spfile文件生成一个pfile文件。

SQL> create pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initxcky_001.ora' from spfile;

 

[oracle@node1 dbs]$ vi initxcky_001.ora

然后修改参数文件。

把filesystemio_options参数设置删除、把告警日志中提示的log_archive_start删除。

然后保存退出。

 

利用修改后的pfile文件启库。

SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initxcky_001.ora'

ORACLE instance started.

 

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

 

利用pfile文件生成一个spfile文件。

SQL> create spfile='+DG1/xcky/spfilexcky.ora' from pfile;

File created.

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

SQL> startup

ORA-01506: missing or illegal database name

启库,报错了!

 

查看官方文档:

ORA-01506: missing or illegal database name

Cause: No db_name INIT.ORA aprameter was specified.

Action: The database name must be given in the db_name INIT.ORA parameter.

 

产生这个错误,说明spfile文件中没有指定db_name。spfile是由pfile生成的,但是查看pfile文件中确实已经设置了。回看步骤时发现上面有一个隐蔽的错误。那就是生成的spfile文件的方式。以上步骤中没有指定pfile位置,这时oracle找的pfile文件并不是启动时使用的pfile文件,而是$ORACLE_HOME/dbs下的默认的pfile文件,里面的内容是这样的:

[oracle@node1 dbs]$ vi initxcky1.ora

SPFILE='+DG1/xcky/parnew/spfilexcky.ora'

所以通过这个pfile文件创建出的spfile文件当然是缺少参数的。

所以重新创建spfile文件:

SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initxcky_001.ora'

ORACLE instance started.

 

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

 

SQL> create spfile='+DG1/XCKY/parnew/spfilexcky.ora' from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initxcky_001.ora.bak.bak';

 

下面我们关库、启库,看一下状态,如下:

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

SQL> startup

ORACLE instance started.

Total System Global Area  730714112 bytes

Fixed Size                  2216944 bytes

Variable Size             557845520 bytes

Database Buffers          167772160 bytes

Redo Buffers                2879488 bytes

Database mounted.

Database opened.

数据库已经成功启动了。

 

*******************************************蓝的成长记系列****************************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装(Linux下10g、11g)

蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人

蓝的成长记——追逐DBA(7):基础命令,地基之石

蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记——追逐DBA(12):七天七收获的SQL

蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机......”

蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

蓝的成长记——追逐DBA(17):是分享,还是消费,在后IOE时代学会成长

******************************************************************************************************************

 

********************************************足球与oracle系列*************************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!

足球与oracle系列(4):从巴西惨败于德国,想到,差异的RAC拓扑对比! 

足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包!

足球与oracle系列(6):伴随建库的亚洲杯——加油中国队

******************************************************************************************************************

<think>好的,我现在需要解决用户在Oracle 19c RAC单节点数据库启动时遇到的ORA-12560 TNS协议适配器错误。首先,我得回忆一下ORA-12560错误的常见原因和处理方法。这个错误通常与TNS监听器配置、环境变量设置或者实状态有关。不过用户是在RAC环境中,而且是单节点启动,可能需要考虑RAC特有的配置问题。 首先,用户提到的是单节点启动,可能需要确认是否正确的设置了ORACLE_SID环境变量。在RAC环境中,每个节点通常有唯一的实名,比如加上节点号的后缀。如果用户没有正确设置ORACLE_SID到当前节点的实名,可能会导致无法连接到实,从而引发ORA-12560。这时候需要检查.bash_profile或者对应的shell配置文件,确认ORACLE_SID是否正确。如,节点1的实可能是ORCL1,而不是ORCL。 其次,检查监听器状态。在RAC环境中,每个节点都有自己的监听器,或者可能使用SCAN监听器。用户需要确认监听器是否在运行,使用lsnrctl status命令查看监听状态。如果监听器没有启动,或者没有正确注册实,可能导致连接问题。此外,TNSNAMES.ORA文件中的配置是否正确,特别是服务名和实名的对应关系是否正确,需要核实。比如,是否使用了正确的服务名或者SID。 另外,数据库实是否真的已经启动。有时候用户可能认为实已经启动,但实际上可能由于参数文件错误、存储问题等导致实未能成功启动。使用ps -ef | grep pmon命令检查PMON进程是否存在,确认实是否在运行。如果实未启动,需要查看alert日志文件,找到具体的启动错误原因。 还有,检查sqlnet.ora文件中的配置,特别是ADR设置或者认证方式是否有问题。如,SQLNET.AUTHENTICATION_SERVICES参数是否设置为NONE或者包含了合适的认证方式,比如ALL或者NTS(在Windows上)。不过用户的环境是Linux,可能需要不同的设置。 此外,在RAC环境中,可能需要检查集群资源的状态。使用crsctl status resource -t命令查看数据库资源是否在线。如果资源未在预期节点上运行,可能需要手动启动资源或者检查集群配置问题。 用户提供的引用[1]和[2]中提到了一些目录创建和参数设置的样。比如,在引用[2]中提到了备库目录的创建,以及集群相关参数需要去掉。这可能意味着在单节点启动时,某些原本适用于集群的参数可能被错误保留,导致实无法正确启动。因此需要检查参数文件(spfile或pfile)中的参数是否正确,特别是与集群相关的参数如CLUSTER_DATABASE是否被设置为FALSE,或者是否去掉了与RAC相关的参数。 另外,用户的问题可能涉及到TNS配置是否正确。如,在tnsnames.ora中是否配置了正确的服务名、主机名和端口。如,是否指向了本地监听器的地址(比如LISTENER_NODE1),或者SCAN监听器的地址。如果配置的是SCAN监听器,但当前节点监听器未运行,可能导致连接问题。 总结一下,可能的解决步骤包括: 1. 检查ORACLE_SID环境变量是否正确设置。 2. 确认监听器状态,并确保实已注册到监听器。 3. 检查实是否真正启动,查看alert日志。 4. 检查参数文件中的集群相关参数是否正确。 5. 验证TNSNAMES.ORA和LISTENER.ORA的配置是否正确。 6. 确保sqlnet.ora中没有不合适的配置。 7. 检查集群资源状态,必要时重启资源。 在逐步排查这些可能性后,应该能找到问题的根源并解决ORA-12560错误。</think>### Oracle 19c RAC单节点启动ORA-12560错误解决方案 #### 1. 检查环境变量配置 - **确认`ORACLE_SID`是否正确** 在RAC环境中,每个节点的实名通常带有节点编号(如`ORCL1`、`ORCL2`)。执行以下命令检查: ```bash echo $ORACLE_SID ``` 若未正确设置,需在用户配置文件(如`.bash_profile`)中修正,如: ```bash export ORACLE_SID=ORCL1 ``` 修改后执行`source ~/.bash_profile`生效。 - **验证`ORACLE_HOME`路径** 确保`ORACLE_HOME`指向正确的RAC安装目录: ```bash echo $ORACLE_HOME ``` #### 2. 检查监听器状态 - **查看本地监听器是否运行** 执行以下命令检查监听状态: ```bash lsnrctl status LISTENER_NODE1 # 替换为实际监听器名称 ``` 若未启动,执行`lsnrctl start LISTENER_NODE1`。 - **确认实注册状态** 在监听器状态输出中检查实是否显示为`READY`。若未注册,手动注册: ```sql ALTER SYSTEM REGISTER; ``` #### 3. 检查数据库实状态 - **确认实是否已启动** 通过进程检查: ```bash ps -ef | grep pmon ``` 若无相关进程,尝试启动实: ```sql sqlplus / as sysdba SQL> STARTUP ``` - **查看告警日志定位问题** 检查`$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log`,分析启动失败的具体原因(如参数错误、存储权限问题)[^2]。 #### 4. 验证参数文件配置 - **检查`CLUSTER_DATABASE`参数** 单节点启动时需确保参数`CLUSTER_DATABASE=FALSE`,若需临时启动单实,可通过以下方式修改: ```sql CREATE pfile='/tmp/pfile.ora' FROM spfile; -- 修改pfile.ora中CLUSTER_DATABASE=FALSE,删除集群相关参数 SQL> STARTUP PFILE='/tmp/pfile.ora'; ``` - **移除冗余集群参数** 确保参数文件中未包含`CLUSTER_NODES`、`REMOTE_LISTENER`等集群专用参数。 #### 5. 检查网络配置 - **验证`tnsnames.ora`配置** 检查连接描述符是否指向正确的主机和端口,如: ```tnsnames ORCL1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = ORCL1) ) ) ``` - **确认`listener.ora`配置** 确保监听器配置包含实的静态注册(仅限未自动注册时): ```listener.ora SID_LIST_LISTENER_NODE1 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = ORCL1) ) ) ``` #### 6. 检查集群资源状态 - **查看数据库资源状态** 使用`crsctl`检查资源是否在线: ```bash crsctl status resource -t ``` 若数据库资源未运行,尝试启动: ```bash srvctl start database -d ORCL -node node1 ``` #### 7. 其他可能原因 - **检查`sqlnet.ora`配置** 确保未设置`SQLNET.AUTHENTICATION_SERVICES=NONE`导致认证失败。 - **权限问题** 确认`/u01/app/oracle/admin`等目录权限为`oracle:oinstall`[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值