6.OAM及系统管理

2014年9月13日

20:40

参考资料:

1.Oracle Applications System Administrator's Guide - Configuration

http://download.oracle.com/docs/... acrobat/120sacg.pdf

2.Oracle Applications System Administrator's Guide - Maintenance

http://download.oracle.com/docs/... acrobat/120samg.pdf

3.Oracle Applications System Administrator's Guide - Security

http://download.oracle.com/docs/... acrobat/120sasg.pdf

4.Oracle 11i System Administrator Fundamentals

OracleApplicatinons Manager (OAM) 是一个 R12 的GUI管理工具,通常感兴趣的地方有

site map

dashboard

checkingpatch applied

runautoconfig

OAM的内容丰富。Oracle对GUI管理工具也在不断改善,所以值得去看,尝试使用。

=======================

R12 8-系统管理

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

系统管理通常不是 DBA 的职责,另有专人负责,不过我觉得DBA 了解基本的内容也是需要的。一方面在

自己学习的过程中,方便学习。比如说要开发一个custom的concurrentprogram,写好

程序后你也要会将它连到R12中,这就需要system administration的知识。

另外,在performancetuning 的过程中, 如果要给用户一个好的体验,system administration

方面的知识也很重要,比如说concurrent manager。如果只是看 CPU/Memory 又或者 数据库性能,

你可能只是看到系统很忙,资源不够,不过,如果你熟悉concurrent manager, 你还可以看看

processesnumber that the concurrent manager defines, what's the workshifts ,

what'sthe cache size . 另外, 还可以看看有什么负责purge 过期数据的concurrent request有没有

在系统schedule。这些东西都会影响系统性能,影响用户的体验。

下面列出一些我觉得重要的systemadmin 方面的知识,具体的内容可参考上面列出的参考资料。

1.Security 方面的内容:

这包括function security,responsibility,data group,data security 的概念。

OracleApplications 里面的security 的结构大致如下:

FND user=> responsibility => request group

=> menu   => function

=> menu=> function

=> data group =>applications <=> Oracle ID  =>tables

||

formsand programs

2. 有关user managment 方面的内容。

3. 有关profile option 方面的内容。

profileoption 大致相当于程序中的 global variable,它的scope 可以有以下几种:

user level

responsibility level

application level

site level

( Server , Organization level)

它的内容可以在以下表内查看:

fnd_profile_options

fnd_profile_options_tl

fnd_profile_option_values

大量的R12的设置由ProfileOption 决定,所以需要了解。

4. 有关Flexfield 方面的内容。

Flexfields包括如下两种:

-Descriptive Flexfields (DFF) : ATTRIBUTE1 .. n in tables

- KeyFlexfields (KFF) : eg. GL_CODE_COMBINATIONS ( CODE_COMBINATION_ID + SEGMENT1 +...)

5. 有关concurrent manager 方面的内容。

6. 有关printer setup and report generation 方面的内容。

7.Concurrent Processing

2014年9月13日

20:42

参考资料:

1.Oracle Applications System Administrator's Guide - Configuration

http://download.oracle.com/docs/... acrobat/120sacg.pdf

2.Oracle Applications System Administrator's Guide - Maintenance

http://download.oracle.com/docs/... acrobat/120samg.pdf

3.Oracle 11i System Administrator Fundamentals

4.Oracle Applications Developer's Guide

http://download.oracle.com/docs/... acrobat/120devg.pdf

并发处理 (Concurrent process) 和 并发管理器(Concurrent Manager) 是R12中负责

处理批作业 或后台作业的。 用的地方很多,所以需要多花点时间理解。

ConcurrentManager 管理的基础知识,比如 start/stop,output and logfile location 等,

前面已提及。

下面只是列出一些常用的内容,可以帮助理解concurrentmanager。

=====================================================

# 如何从 concurrent request id  找到 Oracle session id (sid)

很多时候我们需要从concurrent request 的request id 找到对应的

Oraclesession id (sid),可以用下面的方法, 由此我们也可了解

concurrentmanager 对应的 table 结构。

#当前正在运行的 concurrent request:

selectrequest_id, controlling_manager,  phase_code

fromfnd_concurrent_requests

wherephase_code='R';

# 根据request id 找到 对应的<controlling_manager>

selectrequest_id, controlling_manager,  phase_code

fromfnd_concurrent_requests

whererequest_id = <request_id>;

# 根据 <controlling_manager>
找到对应的<ORACLE_PROCESS_ID>:

selectOS_PROCESS_ID, ORACLE_PROCESS_ID

fromfnd_concurrent_processes

whereCONCURRENT_PROCESS_ID = <controlling_manager>;

# 根据 <ORACLE_PROCESS_ID>
就知道 SID

selecta.sid ,b.spid from v$session a , v$process b

whereb.addr=a.paddr and b.pid = <ORACLE_PROCESS_ID>;

# 另外一种SQL query 方法:

selectsession_id from fnd_concurrent_processes

whereCONCURRENT_PROCESS_ID = <controlling_manager>;

selectsid from v$session where audsid=<session_id>;

===========================================

# 统计 每个program 对应完成的 request 数量:

selecta.concurrent_program_id , b.CONCURRENT_PROGRAM_NAME, count(1)

fromfnd_concurrent_requests a, fnd_concurrent_programs b

wherea.concurrent_program_id = b.concurrent_program_id

group bya.concurrent_program_id,b.CONCURRENT_PROGRAM_NAME;

===============================================

# 列出concurrent program的种类

colLOOKUP_CODE for a10

colmeaning for a60

selectlv.lookup_code, lv.meaning from fnd_lookup_values lv

wherelv.lookup_type='CP_EXECUTION_METHOD_CODE' and language='US' order by 1;

# 列出concurrent program的种类对应的数量

selectlv.meaning , count(*) from fnd_lookup_values lv,

fnd_concurrent_programscp where lv.lookup_type='CP_EXECUTION_METHOD_CODE' and

language='US'and lv.lookup_code=cp.execution_method_code

group bylv.meaning order by 2;

selectcp.enabled_flag,lv.meaning , count(*) cp_count

fromfnd_lookup_values lv,fnd_concurrent_programs cp

wherelv.lookup_type='CP_EXECUTION_METHOD_CODE' and

language='US'and lv.lookup_code=cp.execution_method_code

group bycp.enabled_flag,lv.meaning

order bycp.enabled_flag, cp_count;

==========================================================

#列出正在运行的 concurrent manager processes:

selectCONCURRENT_QUEUE_NAME, control_code, running_processes, max_processes

fromfnd_concurrent_queues

whererunning_processes != 0

========================

# statuscode 对应的解释 <297909.1>

selectlookup_type,lookup_code, meaning from fnd_lookups

wherelookup_type like 'CP_%';

#fnd_concurrent_processes 的 status_code

selectlookup_code, meaning from fnd_lookups

wherelookup_type='CP_PROCESS_STATUS_CODE'

#如何手动停掉正在运行的 Concurrent Request <154688.1>

updatefnd_concurrent_requests set status_code='C',phase_code='c'

whererequest_id=4374195;

#<152763.1> , in that case, set status_code='X'

# checkthe meaning of status_code of requests from the note above

updatefnd_concurrent_requests set status_code='C' ,phase_code='C'

whererequest_id = 2722233;

# TheOracle server process might become runaway.

# findout the sid first to kill it manully if needed.

==================================

#如何在命令行上提交 concurrent request

CONCSUBapps/apps SYSADMIN "System Administrator" SYSADMIN WAIT=N CONCURRENTFND cusupt3 PROGRAM_NAME="custom update 3"

"cusupt3":concurrent executable in $FND_TOP/bin

# 如何trace concurrent program

===================================

metalinknote: 453527.1

1.concurrent program => define => "Enable Trace"

2.Profiles => System => Concurrent:Allow Debugging

3.submit request => Debug Options

# 各种 不同的concurrent programs

ConcurrentProgram 可以用不同的方式构成, 既可以用 shell,PL/SQL, C, JAVA 等

语言,也可以用Oracle Reports,SQL*loader 等工具。下面逐一介绍。

======================================

example1 : shell concurrent program

=======================================

cd$FND_TOP/bin

viWH1TEST.prog

cat./WH1TEST.prog

===========================

#!/bin/ksh

./applvis/apps/apps_st/appl/APPSVIS_mis.env

sqlplusapps/apps@VIS <<EOF

EOF

echo"END"

=========================

chmod +xWH1TEST.prog

### passparameter as separate variable

ln -s$FND_TOP/bin/fndcpesr WH1TEST

然后,在R12中逐一定义如下内容:

concurrentexecutable

concurrentprogram

Responsibility: Request

requestgroup (system Administrator Reports)

## startconcurrent program "WH1TEST" manually

CONCSUBapps/apps SYSADMIN "System Administrator" SYSADMIN WAIT=N CONCURRENTFND WH1TEST PROGRAM_NAME="WH1TEST"

selectCONCURRENT_PROGRAM_NAME, PROGRAM_TYPE from

fnd_concurrent_programswhere concurrent_program_name likE '%WH1%';

====================================================================

example2: c & pro*c concurrent program

========================================

基本上参考 metalink <113428.1>。因为内容比较长,不在这里列出。

example3: report concurrent program

===================================

这里只是copy现成的一个test Oracle Report 做示范。

cd$FND_TOP/reports/US

Note:the report file should be in US directory.

cp/applvis/apps/tech_st/10.1.2/reports/samples/demo/test.rdf ./WH1RPTCP.rdf

[applvis@misUS]$ pwd

/applvis/apps/apps_st/appl/fnd/12.0.0/reports/US

[applvis@misUS]$ ls -l WH1*

-rw-r--r--  1applvis dba 98304 Aug  9 17:40 WH1RPTCP.rdf

[applvis@misUS]$

thenregister this rdf as in other cases of the concurrent testing program

use"WH1RPTCP" as the Execution file name. (note: without the .rdfsuffix)

but inthe "define" part, choose "pdf" as output format .

=================================================

example4: PL/SQL concurrent program

===================================

参考 metalink <73492.1>。

[oravis@mis~]$ cat plconc.sql

createor replace procedure WH1plcp(errbuf out varchar2, retcode out varchar2) as

begin

fnd_file.put_line(FND_FILE.LOG,'WH1plcp begins');

fnd_file.put_line(FND_FILE.OUTPUT,'WH1plcp output');

insertinto t1 values('WH1PLCP');

commit;

fnd_file.put_line(FND_FILE.LOG,'WH1plcp ends');

end;

/

[oravis@mis~]$

###submit conc request in PL/SQL

### ref<221542.1>

### notethat CONC_REQUEST_ID returns -1. <878636.1>

declare

v_idnumber;

v_id2number;

begin

--(user_id,responsibility_id, app_resp_id)

--(sysadmin,system administrator, application system admin)

fnd_global.apps_initialize(0,20420,1);

--(appshort name, conc program short name )

v_id :=APPS.FND_REQUEST.SUBMIT_REQUEST('FND','FNDSCURS');

v_id2 :=FND_GLOBAL.CONC_REQUEST_ID;

commit;

dbms_output.put_line(v_id);

dbms_output.put_line(v_id2);

end;

/

### findout relevant info

select *from fnd_application_tl where application_id = 1 ;

select *from fnd_user where user_name ='SYSADMIN' ;

select *from fnd_responsibility_tl where responsibility_name = 'System Administrator';

select *from fnd_user_resp_groups where user_id = 0 ;

select *from fnd_conc_req_summary_v where program_short_name='FNDSCURS';

select *from fnd_conc_req_summary_v where request_id=  314020 ;

###check the stauts of an conc request

declare

l_req_idnumber;

l_phasevarchar2(30);

l_statusvarchar2(30);

l_dev_statusvarchar2(30);

l_dev_phasevarchar2(30);

l_msgvarchar2(2000);

statusboolean;

begin

l_req_id:= 314021  ;

status:=fnd_concurrent.get_request_status(REQUEST_ID=>l_req_id,

PHASE=>l_phase, STATUS=>l_status, DEV_PHASE => l_dev_phase,

DEV_STATUS=> l_dev_status, MESSAGE => l_msg ) ;

dbms_output.put_line(l_req_id||':'||l_phase||':'||l_status||':'||l_dev_phase||':'||l_dev_status);

end;

/

#####################################

example5: SQL*loader Concurrent program

========================================

vi .ctlfile in $PRODUCT_TOP/bin

example6: Java concurrent program

=================================================

参看 metalink <250964.1>。

cd $JAVA_TOP/oracle/apps/fnd/cp

mkdirsample

viHello.java

################################

packageoracle.apps.fnd.cp.sample;

importoracle.apps.fnd.cp.request.*;

publicclass Hello implements JavaConcurrentProgram {

publicstatic final String RCS_ID = "$Header$";

publicvoid runProgram (CpContext ctx) {

ctx.getLogFile().writeln("--Hello World!--",0);

ctx.getOutFile().writeln("--Hello World!--");

ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL,"");

}

}

###########################

javac$JAVA_TOP/oracle/apps/fnd/cp/sample/Hello.java

ls -l$INST_TOP/appl/fnd/12.0.0/secure/VIS.dbc

[applvis@missample]$ which java

/applvis/apps/tech_st/10.1.3/appsutil/jdk/jre/bin/java

java-Ddbcfile=$INST_TOP/appl/fnd/12.0.0/secure/VIS.dbc \

-Drequest.outfile=./outfile\

oracle.apps.fnd.cp.request.Run\

oracle.apps.fnd.cp.sample.Hello

#在R12中作如下设置:

executable:WH1JAVACP

program:WH1JAVACP

security> responsiblity > request

###另一个版本

catHello.java

packageoracle.apps.fnd.cp.sample;

importoracle.apps.fnd.cp.request.*;

importoracle.apps.fnd.util.*;

importjava.io.*;

importjava.sql.*;

publicclass Hello implements JavaConcurrentProgram {

publicstatic final String RCS_ID = "$Header$";

Stringc1Var ;

publicvoid runProgram (CpContext ctx) {

c1Var="HI";

ctx.getLogFile().writeln("--Hello World!--",0);

ctx.getOutFile().writeln("--Hello World!--");

ConnectionmJConn = ctx.getJDBCConnection();

ParameterListlPara = ctx.getParameterList();

ReqCompletionlRC = ctx.getReqCompletion();

StringlQuery = "select c1 from t1 where c1 = ?";

while(lPara.hasMoreElements() )

{

NameValueType aNVT = lPara.nextParameter();

c1Var = aNVT.getValue();

}

try{

PreparedStatement lStmt = mJConn.prepareStatement(lQuery);

lStmt.setString(1, c1Var);

ResultSet lRs = lStmt.executeQuery();

OutFilelOF = ctx.getOutFile();

LogFilelLF = ctx.getLogFile();

while  (lRs.next() )

{

lOF.writeln(lRs.getString(1));

}

lStmt.close();

ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL,"");

}

catch(SQLException e) {

lRC.setCompletion(ReqCompletion.ERROR,e.toString());

}

finally{

ctx.releaseJDBCConnection();

}

}

}

java-Ddbcfile=$INST_TOP/appl/fnd/12.0.0/secure/VIS.dbc \

-Drequest.outfile=./outfile\

oracle.apps.fnd.cp.request.Run\

oracle.apps.fnd.cp.sample.Hello\

"TOKEN1=HI"

8.Custom Application Integration

2014年9月13日

20:42

OracleApplications 比较灵活,易于做客户化开发。虽然DBA 通常不需要做开发, 但我觉得

了解客户化过程也很有帮助,因为可因此了解Oracle其他模块的开发方式和标准。

因为大家都遵循同样的开发标准,做过一次,就会熟悉,比如说,File system 里product 的目录结构,

adadmin的维护任务等等。

参考资料:

1.Oracle Applications Developer's Guide

http://download.oracle.com/docs/... acrobat/120devg.pdf

2.<176852.1>Integrating Custom Applications with Oracle ApplicationsRelease 11i

3.<70167.1> Step by Step guide to Creating a C or Pro*C StandaloneConcurrent program

forOracle applications

4.<70228.1> Running a Shell script as a Concurrent Program

复杂一点的开发可能用C/JAVA之类,如上面的metalink涉及的,简单的客户化可以只是一个

SQLstatement。

9.FNDCPASS、FND_STATS和FNDLOAD

2014年9月13日

20:43

11 和 12节 介绍 Oracle Applications 里几种常用的工具, FNDCPASS, FND_STATS,

FND_LOAD.

FNDCPASS 是用来修改fnd_user和fnd_oracle_userid上面用户的密码的。

### 例子1: 修改 apps 用户的password

shutdownapps tier,

FNDCPASSapps/apps 0 Y system/manager SYSTEM APPLSYS password

然后 运行AUTOCONFIG, 再start app tier 。

### 例子 2: 修改 sysadmin  用户的password

不用shutdown app tier,

FNDCPASSapps/password 0 Y system/manager USER SYSADMIN password

然后restart apache, forms, reports, 806 listener, and cm

### 例子3: 修改 gl, pa, etc. 用户的password

不用shutdown app tier

FNDCPASSapps/password 0 Y system/manager ALLORACLE password

FNDLOAD可以用来在不同的环境中copy configuration。例如,业务人员可能在

UAT设好config,可以用这个工具download 下来再传给Production,这样就避免

人工输入可能出现的错误。下面举几个例子:

- UsingFNDLOAD to download Concurrent Program definition

selectAPPLICATION_ID, CONCURRENT_PROGRAM_NAME

fromfnd_concurrent_programs

whereCONCURRENT_PROGRAM_NAME='FNDSCURS';

selectAPPLICATION_SHORT_NAME

fromfnd_application where APPLICATION_ID = 0;

###download the definition to file myACTIVEUSER.ldt

FNDLOADapps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct myactiveuser.ldtPROGRAM APPLICATION_SHORT_NAME="FND"CONCURRENT_PROGRAM_NAME="FNDSCURS"

- UsingFNDLOAD to download Lookup type and its value <419136.1>

selectLOOKUP_TYPE from FND_LOOKUP_TYPES  where lookup_type like 'FND%'order by 1

FNDLOADapps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/aflvmlu.lct mylookup.ldtFND_LOOKUP_TYPE VIEW_APPSNAME=FND LOOKUP_TYPE="FND_CP_PROGRAM_TYPE"

- UsingFNDLOAD to download profile options set on responsibiity level <566865.1>

selectRESPONSIBILITY_KEY from FND_RESPONSIBILITY ;

selectPROFILE_OPTION_NAME

fromFND_PROFILE_OPTIONS

wherePROFILE_OPTION_NAME like 'FND%'  ;

selectUSER_PROFILE_OPTION_NAME

fromFND_PROFILE_OPTIONS_VL

whereUSER_PROFILE_OPTION_NAME like 'FND%';

FNDLOADapps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afscursp.lct myresp.ldtFND_RESPONSIBILITY RESP_KEY="SYSTEM_ADMINISTRATOR"

FNDLOADapps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct myprofile.ldtPROFILE PROFILE_NAME="ICX_SESSION_TIMEOUT"APPLICATION_SHORT_NAME="ICX"

FNDLOADapps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct myprofile.ldtPROFILE PROFILE_NAME="FND_DIAGNOSTICS"APPLICATION_SHORT_NAME="FND"

===========================================

12.statistics

=======================================================

OracleApplications 并不直接用 DBMS_STATS 来 收集数据库的statistics,而是用自己的工具

FND_STATS。

例子如下:

#sqlplus apps/<apps_pwd>

SQL>exec fnd_stats.gather_schema_statistics('MRP');                   <- One schema

SQL>exec fnd_stats.gather_schema_statistics('ALL');                   <- All schemas

SQL>exec fnd_stats.gather_table_stats('MRP','MRP_FORECAST_DATES'); <- One table

SQL>begin                                                           <-Partitioned table

2     fnd_stats.gather_table_stats(ownname    => 'APPLSYS',

3                                tabname     =>'WF_ITEM_ACTIVITY_STATUSES',

4                                granularity => 'PARTITION');

5  end;

6  /

selectPARTITION_NAME from all_tab_partitions where upper(TABLE_NAME) ='GL_JE_LINES';

execFND_STATS.GATHER_TABLE_STATS('GL','GL_JE_BATCHES',10,8,NULL,'NOBACKUP',TRUE,'GLOBAL');

execFND_STATS.GATHER_TABLE_STATS('GL','GL_JE_HEADERS',10,8,NULL,'NOBACKUP',TRUE,'GLOBAL');

execapps.FND_STATS.GATHER_TABLE_STATS('GL','GL_JE_LINES',10,8,'JAN09','NOBACKUP',TRUE,'PARTITION');

###check global stats

selecttable_name, last_analyzed from dba_tables where table_name ='GL_JE_LINES'

###gather table stats

execapps.FND_STATS.GATHER_TABLE_STATS('GL','GL_JE_LINES',10,8,NULL,'NOBACKUP',TRUE,'ALL');

###check which columns do histogram

selecttable_name,column_name,hsize from applsys.fnd_histogram_cols;

参考资料:

<419728.1>How To Gather Statistics On Oracle Applications 11.5.10(and above)

<169935.1>Troubleshooting Oracle Applications Performance Issues

<429002.1>histogram collection

10. 性能调整基础

2014年9月13日

20:44

性能影响用户对系统的体验,所以显得很重要,不过因为涉及的地方比较多,

很难一下掌握,下面只是对于OracleApplications,列出一些通常注意的地方,

包括从应用服务器到后台数据库。

性能调整自然会涉及不同的参数,具体要设什么值,就要看具体情况具体分析。

1.应用服务器( technology stack)方面

Technologystack 方面的范围也比较广, 下面分点列出.

1.1 JVM

OracleApplications 11i 和 R12 都有着 大量的功能用 Java 实现, 所以JVM的调优要考虑,

但一般来说,不是太复杂。主要要点:

- JVM的数量

Bydefault, R12 有如下的JVM:

[applvis@misscripts]$ ./adopmnctl.sh status|grep OC4J

OC4JGroup:default_group         | OC4J

afm         |    5552 | Alive

OC4JGroup:default_group         | OC4J:forms        |    5459 | Alive

OC4JGroup:default_group         | OC4J

acore       |    5365 | Alive

一般来说,不用启动太多的JVM,因为Java 是multi thread的, 所以Oracle建议有俩个CPU

才用一个JVM,但如果你的connection数量非常大,也有很多CPU, 就可以考虑是否需要

增加 JVM的数量。Oracle 建议一个JVM 服务不超过100个 active connection。

如果想看详细点JVM的运行情况,你可以做threaddump ( kill -3 ) 来看当前thread 的状态。

-合理的memory配置

主要就是heapsize (XMX, XMS)的设置,我见过设得太大,导致系统出现paging,

以致很慢的,也见过设得太小, 导致 OOM error 和 GC 很忙的。所以,设置要适中。

其他还有一些JVM的参数,比如,stacksize,perm size , new size, new/old ratio,

parallelcollection 等等,就和你用的JVM有关 (AIX, Sun 的之类),比较复杂,

一般先用default值看看。

如果想看详细点,就要根据 Garbage Collection的情况。这是所有JVM tuning 都一样的,

R12也没什么不同。

GC的信息在jvm log 中,参见有关的jvm_start_options。

-Xloggc:/u02/inst/apps/PROD_mis/logs/ora/10.1.3/opmn/jvmoacore.log-XX:+PrintGCDetails

1.2.Apache

有关Apache 的常用的参数如下。

Timeout

Keeplive

MinSpareServers5

MaxSpareServers10

StartServers3

MaxClients512

LogLevel

SSLLogLevel

1.3 JDBC

DBC file( $INST_TOP/appl/fnd/12.0.0/secure/prod.dbc) 控制app tier 与数据库

的JDBC连接 (参考  metalink note <278868.1> AOL/J JDBC Poolin 11i
)。

每个 JVM都会 创建自己的 JDBC Pool. 常用的参数如下,根据具体情况配置:

fnd_jdbc_buffer_decay_interval=300

fnd_jdbc_buffer_decay_size=5

fnd_jdbc_usable_check=false

fnd_jdbc_buffer_min=1

fnd_jdbc_buffer_max=5

FND_JDBC_STMT_CACHE_SIZE=200

FND_MAX_JDBC_CONNECTIONS=500

1.4其他一些参数:

FND:View Object Max Fetch Size

FND:Enable Cancel Query

ICX:Session Timeout

s_sesstimeout: selfservice session timeout

s_frmConnectMode:FORMS使用socket mode 或servlet

具体的参数描述,见metalinknote <458282.1> : Context Variables.

2. 数据库方面

数据库方面跟其他应用的数据库调优并没有什么不同。也可以分两个层次:

2.1Instance level

与R12有关的Instancelevel参数, 可参看metalink note

<396009.1>Database initilization parameters for Oracle applications for R12

例如,_optimizer_autostats_job=false, 这是因为R12 采用自己的FND_STATS

package 来 collect stats。  sec_case_sensitive_logon = FALSE
,这是因为

R12不支持11g 的这个新特性。

另外,象sga/pga 这些参数,也可根据具体情况设置。

2.2 SQLlevel

象大多数数据库一样,今时今日,Instance level参数要注意的地方不多,一方面

Oracle在不断改善,越做越好,另一方面,DBA 也越来越熟悉这些地方。现在,

棘手的问题大多在SQLlevel。

处理的方法可以从AWRreport, v$active_session_history,或trace(concurrent manager

job或Forms 的 trace, 具体collection方法见前述 )中, 找到问题SQL,然后再具体分析。

一些有用的view:

v$sql/v$sql_plan/v$sql_bind_capture/v$sql_plan_statistics

解决的方法,要不是open SR (anyway, 这是Oracle 自己开发的程序),要不就用 SQL profile (10g)

SQL planbaseline (11g) 影响 optimizer 以得到正确的plan。

当然,在分析时,要保证表的statisitcs是 up-to-date,可以这样看:

setserveroutput on

set long10000

setlinesize 132

setpages 1000

execfnd_stats.verify_stats('GL','GL_DAILY_BALANCES');

===================================================================================================

Table  GL_DAILY_BALANCES

===================================================================================================

lastanalyzed     sample_size num_rows           blocks

05-17-200803:14  6199        61990              4527

Indexname                   last analyzed    num_rows  LB      DK      LB/key  DB/key  CF

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

GL_DAILY_BALANCES_N1         05-17-2008 03:14  61976    445     33848    1      1       60667

GL_DAILY_BALANCES_N2         05-17-2008 03:14  61976    299     194     1       146     28420

GL_DAILY_BALANCES_N3         05-17-2008 03:14  61976    300     151     1       188     28418

GL_DAILY_BALANCES_N4         05-17-2008 03:14  7547     31      5       6       359     1796

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

Histogram  Stats

Schema        Table Name                    Status     last analyzed     Column Name

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

GL            GL_DAILY_BALANCES             not presentTEMPLATE_ID

Legend:

LB :Leaf Blocks

DK :Distinct Keys

DB :Data Blocks

CF :Clustering Factor

PL/SQLprocedure successfully completed.

SQL>

3. 应用方面

应用层常见的需要注意的地方:

3.1.Concurrent manager

ConcurrentManager 方面,可以注意以下参数:

cachesize: number of pending requestes picked up each time

numberof work processes:

Workshift:

另外,一些常见的重要job:

"PurgeConcurrent Request and/or Manager Data"

"PurgeObsolete Workflow Runtime Data"

有关concurrent job 运行情况的表:

fnd_conc_req_stat( turned off by profile "Concurrent: Collect Request Statistics"

3.2.产品的参数表

有时候,有些product的参数表也需要考虑,例如 HR payroll 里的 pay_action_parameters,

需要注意的参数如下:

Threads: number of processes to use in the concurrent manager

Chunk_size: commit unit

4. OS(cpu/memory/disk/network)

Last butnot least, 任何tuning 都要考虑 OS 方面的东西,cpu/memory/disk/network。

11.从11i到R12的升级

2014年9月13日

20:45

参考资料:

1.Oracle Applications Upgrade Guide: Release 11i to Release 12.0.4

http://download.oracle.com/docs/... bat/r1204upg11i.pdf

2.<850008.1> Interesting Documents Concerning E-Business Suite 11i to R12Upgrades

3.<554509.1> Unable To Login To Oracle Applications After Upgrading

from11.5.10 to R12

4.<403339.1> Oracle 10gR2 Database Preparation Guidelines for

anOracle E-Business Suite Release 12.0.4 Upgrade

5. http://advait.wordpress.com/2008/03/04/

upgrading-oracle-application-11i-to-e-business-suite-r12/

11i 到R12 的升级过程比较复杂,下面分planning, preparing, upgrade, after upgrade

几个section简单介绍一下,只是一个大概的印象。主要还是靠阅读相关的metalink 文档。

除了techstack的升级外,一部分精力可能还在各个product 升级后,业务可能遇到的bug,

需要其他进一步的patch。不过,好在11iupgrade 通常也不是一两天的工作。

14.1planning for upgrade

=========================

首先清楚自己在什么版本,一般要求在11.5.10.2CU2 ,

metalink note <316366.1>: 11.5.10 Oracle E-Business SuiteConsolidated Update 2 (CU2)

有这样的解释:

"11.5.10.2Maintenance Pack (3480000.drv). This new release of the maintenance pack

includesCU2. You do not have to apply it separately"

"Likethe 11.5.10.2 Maintenance Pack, Rapid Install 11.5.10.2 also includesCU2,

so thereis no need to apply it separately. "

相关的11.5.10.2CU2 的patch number:

Patch3460000: 11.5.10 ORACLE E-BUSINESS SUITE CONSOLIDATED UPDATE 2

Patch3480000: ORACLE APPLICATIONS RELEASE 11.5.10.2 MAINTENANCE PACK

检查11.5.10 CU2 的 level:

selectbug_number from apps.ad_bugs where bug_number ='3460000';

检查 AD 的level:

selectpatch_level from fnd_product_installations where patch_level like '%AD%';

11i.AD.I.5

检查 checktablespace sizing

selectsum(bytes)/1024/1024,TABLESPACE_NAME from

dba_free_spacegroup by TABLESPACE_NAME;

selectcontents,extent_management,allocation_type

fromdba_tablespaces where tablespace_name='TEMP';

检查 OATMOracle Application Tablespace Model

检查multiple org 是否enabled

selectmulti_org_flag from apps.fnd_product_groups;

select *from apps.hr_operating_units;

profileoption: "MO:Operating Unit"

检查 dbparameters

recyclebin=off

14.2Preparing for the upgrade

================================

安装 TUMS(Upgrade Manual Script ) patch 5120936, 步骤如下:

adadmin=> adpatch

cd$AD_TOP/patch/115/sql

sqlplusapps/welcome @adtums.sql /usr/tmp

注意:/usr/tmp must be in the "utl_file_dir"

安装 ADpreparation patch: patch 5726010

cd5726010

sqlplusapps/welcome @adgncons.sql apps welcome

修改adcrtbsp.sql to reflect your current tablespace information

sqlplus<SYSTEM>/<SYSTEM PASSWORD> @adcrtbsp.sql

mkdir -p$ORACLE_HOME/appsutil/admin

cpadgrants.sql $ORACLE_HOME/appsutil/admin

sqlplus/ as sysdba

SQL>@$ORACLE_HOME/appsutil/admin/adgrants.sql APPLSYS

rungather statistics

14.3upgrade

================================

确认character sets of APPL_TOP

CharacterSets

You haveto be careful while selecting the character set for APPL_TOP.

###create /u01 ,/u02, /u03 for the R12 tech stacks.

/u01=> appl_top,common_top, 10.1.3,10.1.2

/u02=> inst_top

/u03=> rdbms home ,10.2.3

chown -Rapplvis:dba /u01

chown -Rapplvis:dba /u02

chown -Roravis:dba /u03

第一次运行rapidwiz 安装新的tech stack:

[root@misrapidwiz]# pwd

/media/usbdisk/r1204/StageR12/startCD/Disk1/rapidwiz

[root@misrapidwiz]# ./rapidwiz

选项如下:

=>upgrade to R12 => create upgrade file system => apps/welcome

Configurationfile written to: /u02/apps/PROD_mis/conf_PROD.txt

Configurationfile written to: /u03/db/tech_st/10.2.0/appsutil/conf_PROD.txt

Databaselogfile - /u03/db/tech_st/10.2.0/appsutil/log/PROD_mis/12121135.log

Appltoplogfile - /u02/apps/PROD_mis/logs/12121135.log

升级数据库 to10gR2

applypatch 6319846

[oravis@mis6319846]$ $ORACLE_HOME/OPatch/opatch napply -skip_subset -skip_duplicate

sql>@postinstall.sql

applypatch 6110331

如果 appsaccount locked ,unlock apps, enable maintenance

sourceR12's env, apply patch 6604842

#$APPL_TOP/admin/topfile.txt

###apply u6394500.drv

cd$AU_TOP/patch/115/driver

adpatchoptions=nocopyportion,nogenerateportion

可能问题如下:

1. mkdiradmin

2.ORA-02303: cannot drop or replace a type with type or table dependents

metalink:<603952.1> Script jtfpfcreate.sql fails during Upgrade to Release 12.0.4

nodependent objects found for type "JTF_PF_CLIENT_OBJECT"

droptype force for all the type listed in <603952.1>.

dropTYPE APPS.JTF_PF_CLIENT_OBJECT force;

useadctrl to restart failed job

###JTF  Java Technology Foundation, used by CRM , iStore,iMarketing

3.ORA-01653: unable to extend table APPLSYS.AD_DEFERRED_JOBS by 16 in tablespaceAPPS_TS_TX_DATA

restartadpatch

4./u01/apps/apps_st/appl/jtf/12.0.0/patch/115/sql/jtfpfstart.sql

apparentlyworkaround for point 2 is not good. causing issue here.

justmodify the sql and put exit.

5.restart a failed patch process

tellworker to shutdown ;

tellmanager that worker failed its job ;

tellmanager that worker acknowledges quit ;

restartadpatch;

#######################################

###autoconfig rdbms home

###第二次运行 rapidwiz 以配置系统。

[root@misrapidwiz]# ./rapidwiz

RapidInstall Wizard is validating your file system......

4 dvdlabels found

RapidInstall Wizard will now launch the Java Interface.....

[root@misrapidwiz]# Appltop logfile - /u02/apps/PROD_mis/logs/12151909.log

14.4  Upgrade
后可能的问题

#############################

can'topen any form after login:

javaconsole get this:

Loadedimage:

FollowingException occured: java.lang.IllegalArgumentException: Illegal argument forcolorScheme applet parameter

java.lang.IllegalArgumentException:Illegal argument for colorScheme applet parameter

at oracle.forms.engine.Main.initDesktop(Unknown Source)

at oracle.forms.engine.Main.start(Unknown Source)

atsun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

metalink<858367.1> matches .

justdeinstall java 1.5 and then open a form again it will pickup the java 1.6.

and ok.

noFND_COLOR_SCHEME in R12. only "java color scheme", and not set.

Oracle Applications DBA 基础(二)的更多相关文章

  1. 《Oracle Applications DBA 基础》- 9 - Concurrent Processing[Z]

    <Oracle Applications DBA 基础>- 9 - Concurrent Processing================================== 参考资料 ...

  2. 《Oracle Applications DBA 基础》- 9 - Concurrent Processing

    来自:http://www.itpub.net/thread-1411293-1-4.html <Oracle Applications DBA 基础>- 9 - Concurrent P ...

  3. Oracle Applications DBA 基础(一)

    1.引子 2014年9月13日 20:33 <oracle Applications DBA 基础>介绍Oracle Applications R12的系统架构, 数据库后台及应用系统的基 ...

  4. oracle入坑日记<二>认识oracle(含sqlplus基础使用)

    1.SID(数据库实例) 1.1. oracle安装的时候有一项叫[全局数据库名]的填写项,这个就是oracle的SID也是数据库的唯一标识符: 1.2.一个oracle数据库有且只有一个SID(一般 ...

  5. Oracle 的DBA考证

    转自 :https://www.cnblogs.com/chunge2050/archive/2013/04/16/3023730.html 详细的了解了几天之后,总结起来就是oracle为DBA认证 ...

  6. 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1

    [绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...

  7. 数据库学习---SQL基础(二)

    数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) 上篇复习的sql的增删改查,and ,or ,>=, <=,!=等逻辑运算符,还有in ...

  8. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  9. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

随机推荐

  1. ICL Auto Vectorization

    简介 此文简单介绍如何使用intel c++编译器实现向量化加速. 全文如下安排: base : 待优化的源代码. vectorization : 第一个向量化版本. aligned : 内存对其对向 ...

  2. 2017腾讯校招面试回忆(成功拿到offer)

    我本来报的岗位是企业事业群,后来把我分配到了技术工程群 希望对明年找工作的朋友们能有一点帮助 一面 21号 大概1小时 面试半小时 聊天半小时 1 二叉树的查找 我大笔一挥,在纸上写下了下面的的代码 ...

  3. DragVideo,一种在播放视频时,可以任意拖拽的方案

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53638896 前言 项目已开源到 ...

  4. Lua热更新(hotfix)

    Lua热更新(hotfix)(金庆的专栏)hotfixLua 5.2/5.3 hotfix. Hot update functions and keep old data.https://github ...

  5. Memcached - In Action

    Memcached 标签 : Java与NoSQL With Java 比较知名的Java Memcached客户端有三款:Java-Memcached-Client.XMemcached以及Spym ...

  6. UNIX网络编程——epoll 的accept , read, write(重要)

    在一个非阻塞的socket上调用read/write函数,返回EAGAIN或者EWOULDBLOCK(注:EAGAIN就是EWOULDBLOCK). 从字面上看,意思是: EAGAIN: 再试一次 E ...

  7. 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别

    http://www.cnblogs.com/AngelLee2009/p/3540527.html

  8. Windows平台下的多线程编程

    线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件.信号标识及动态分配的内存等.一个进程内的所有线程使用同一个地址空间,而这些线程的执行由系统调度 ...

  9. 调用MediaScannerConnection 发生内存泄露的解决方法

    调用MediaScannerConnection发起扫描时经常会发生内存泄露,例如: E ActivityThread: Activity FolderListActivity has leaked ...

  10. 【java线程系列】java线程系列之java线程池详解

    一线程池的概念及为何需要线程池: 我们知道当我们自己创建一个线程时如果该线程执行完任务后就进入死亡状态,这样如果我们需要在次使用一个线程时得重新创建一个线程,但是线程的创建是要付出一定的代价的,如果在 ...