1.从日志中发现系统修改了service_name
刚刚看日志发现了以下内容:
Mon Feb17 10:49:56 2014
The value(30) of MAXTRANS parameter ignored.
Mon Feb17 10:49:58 2014
ALTERSYSTEM SET service_names='SYS$SYS.KUPC$C_2_20140217104956.EPCDB'SCOPE=MEMORY SID='epcdb2';
Mon Feb17 10:49:58 2014
ALTERSYSTEM SETservice_names='SYS$SYS.KUPC$C_2_20140217104956.EPCDB','SYS$SYS.KUPC$S_2_20140217104956.EPCDB'SCOPE=MEMORY SID='epcdb2';
kupprdp:master process DM00 started with pid=43, OS id=30165
to execute -SYS.KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_01', 'GH', 'KUPC$C_2_20140217104956','KUPC$S_2_20140217104956', 0);
Mon Feb17 10:50:01 2014
ALTERSYSTEM SET service_names='SYS$SYS.KUPC$S_2_20140217104956.EPCDB' SCOPE=MEMORYSID='epcdb2';
Mon Feb17 10:50:01 2014
ALTERSYSTEM SET service_names='' SCOPE=MEMORY SID='epcdb2';
Mon Feb17 10:52:47 2014
ALTERSYSTEM SET service_names='epcdb' SCOPE=MEMORY SID='epcdb2';
修改了service_name,甚是奇怪,当时数据库也没有人去手动修改过,而且SYS$SYS.KUPC$C_2_20140217104956.EPCDB这个名字不像是人为取的,应该是系统取的。
后来想到我上午做过导出,用的是expdp,正好是这个时间段,怀疑在做导出的时候,系统自动修改了service_name。
2.去MOS上查了下,解释如下:
On RAC, expdp Removes the Service Name (文档 ID 1269319.1)
In this Document
Symptoms
Cause
Solution
References
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.
APPLIES TO:
Oracle Database - EnterpriseEdition - Version 10.2.0.2 to 11.2.0.1 [Release 10.2 to 11.2]
Information in this document applies to anyplatform.
SYMPTOMS
On RAC, before run of expdp, you have thefollowing services:
select name from dba_services;
SYS$BACKGROUND
SYS$USERS
alphaXDB
alpha
beta
beta2
Calling expdp causes the following type of entries to be written to thealert.log:
Mon Nov 15 11:06:07 2010
ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20101115110600.ALPHA'SCOPE=MEMORY SID='alpha1';
Mon Nov 15 11:06:07 2010
ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20101115110600.OMEGA','SYS$SYS.KUPC$S_1_20101115110600.ALPHA'SCOPE=MEMORY SID='alpha1';
kupprdp: master process DM00 started with pid=52, OS id=421934
to execute - SYS.KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS', 'KUPC$C_1_20101115110600','KUPC$S_1_20101115110600', 0);
kupprdp: worker process DW01 started with worker id=1, pid=68, OS id=766178
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');
kupprdp: worker process DW02 started with worker id=2, pid=70, OS id=397824
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');
kupprdp: worker process DW03 started with worker id=3, pid=244, OS id=827494
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');
kupprdp: worker process DW04 started with worker id=4, pid=245, OS id=348810
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS');
Mon Nov 15 11:10:07 2010
ALTER SYSTEM SETservice_names='SYS$SYS.KUPC$S_1_20101115110600.ALPHA','SYS$SYS.KUPC$C_1_20101115110600.ALPHA','alpha'SCOPE=MEMORY SID='alpha1';
Mon Nov 15 11:12:55 2010
ALTER SYSTEM SET service_names='SYS$SYS.KUPC$S_1_20101115110600.ALPHA','alpha'SCOPE=MEMORY SID='alpha1';
Mon Nov 15 11:12:56 2010
ALTER SYSTEM SET service_names='alpha' SCOPE=MEMORY SID='alpha1';
and all new services are broken.
CAUSE
This is caused by Bug:8513146 THE SERVICE_NAMES VALUE IS SETTO NULL AFTER RUNNING EXPDP IN RAC ENVIRONMENT.
This issue reproduces only when we executeEXPDP for the first time with the default SERVICE_NAMES value.
When we execute EXPDP for the first time, we miss to include the defaultSERVICE_NAMES value in the ALTER SYSTEM statement.
SOLUTION
Depending on the version of your database, Patch:8513146 mayexist.
As of Feb. 2013, this patch exists for:
- 10.2.0.4 / IBM AIX on POWER Systems (64-bit)
- 10.2.0.4.3 / Linux x86-64
- 10.2.0.5 / Linux x86, Linux x86-64 and IBM AIX on POWER Systems (64-bit)
If this fix does not exist on top of the latest available patchset for yourplatform, please log a new Service Request, provide evidences that you areencountering this issue and request for an interim patch for your platform.
As workaround, we recommend to:
- Either explicitly set the SERVICE_NAMES inthe instance parameter file.
- or after first execution of EXPDP command,manually set the SERVICE_NAMES parameter using ALTER SYSTEM statement.
REFERENCES
BUG:8513146 - THE SERVICE_NAMES VALUE IS SET TO NULL AFTER RUNNINGEXPDP IN RAC ENVIRONMENT.
3.关于bug:8513146
Bug属性
类型
B - Defect
已在产品版本中修复
12.1
严重性
2 - Severe Loss of Service
产品版本
10.2.0.4
状态
80 - Development to QA/Fix Delivered Internal
平台
212 - IBM AIX on POWER Systems (64-bit)
创建时间
2009-5-13
平台版本
NO DATA
更新时间
2013-4-23
基本Bug
N/A
数据库版本
10.2.0.4
影响平台
Generic
产品源
Oracle
相关产品
产品线
Oracle Database Products
系列
Oracle Database Suite
区域
Oracle Database
产品
5 - Oracle Database - Enterprise Edition
Hdr: 8513146 10.2.0.4 RDBMS 10.2.0.4 RAC PRODID-5 PORTID-212
Abstract: THE SERVICE_NAMES VALUE IS SET TO NULL AFTER RUNNING EXPDP IN RAC ENVIRONMENT.
*** 05/13/09 12:15 am ***
TAR:
----
7485714.993
PROBLEM:
--------The customer did not specified service_names value to the 2 node RAC system.
So the service name is set to DB_UNIQUE_NAME.DB_DOMAIN which is default
value.After running expdp, alert log says that the value is set to null and from
that time service_names value is null.
It does not make any problem while connection is established through
listener, butservice name is null from that time before db restart.Sun May 3 01:04:11 2009
ALTER SYSTEM SET service_names='SYS$SYS.KUPC$S_2_20090503010353.DBPBSA'
SCOPE=MEMORY SID='DBPBSA2';
Sun May 3 01:04:11 2009
ALTER SYSTEM SET service_names='' SCOPE=MEMORY SID='DBPBSA2';
value is set to null
--10.2.0.4.10中会自动将service_name修改回来
ALTERSYSTEM SET service_names='' SCOPE=MEMORY SID='epcdb2'; --先改为null
Mon Feb17 10:52:47 2014
ALTERSYSTEM SET service_names='epcdb' SCOPE=MEMORY SID='epcdb2'; --再修改为原来的