Feed aggregator

New release model for JUL17 (or Oracle 17.3): RU and RUR

Yann Neuhaus - Tue, 2017-05-30 04:58
Updated June 5th

When reading about new version numbering in SQL Developer, I took the risk to change the title and guess the future version number for Oracle Database: Oracle 17.3 for the July (Q3) of 2017. Of course, this is just a guess.

Updated June 10th

Confirming the previous guess, we start to see some bugs planned to be fixed in version 18.1 which is probably the January 2018 Release Update.
Capture18.1

News from DOAGDB17 – May 30th

Oracle Database software comes in versions: 10g in 2004, 11g in 2007, 12c in 2013
In between, there are releases: 10gR2 in 2005, 11gR2 in 2009, 12cR2 in 2017
In between, there are Patch Sets: the latest 11gR2 is 11.2.0.4 (2 years after 11.2.0.3) and 12cR1 is 12.1.0.2 (one year after 12.1.0.1)
Those are full install: full Oracle Home. It can be in-place or into a new Oracle Home but it is a full install. There are a lot of changes in the system dictionary and you run catupgrd.sql to update it. It takes from 30 minutes to 1 hour on average depending on the components and the system.

Their primary goal is to release features. You should test them carefully. For example, the In-Memory option came in the first Patch Set of 12cR1

This will change in 2017 with annual feature releases. Well, this looks like a rename of Patch Set.

All releases are supported several years, with fixes (patches) provided for encountered issues: security, wrong result, hanging, crash, etc. Rather than installing one-off patches, and requesting merges for them, Oracle supplies some bundle patches: merged together, tested as a whole, cumulative, with a quarterly release frequency. Depending on the content and the platform, they are called Bundle Patches (in Windows), CPU (only security fixes), SPU (same as CPU but renamed to SPU), PSU (Patch Set Update), Proactive Bundle Patch (a bit more than in the PSU)…
The names have changed, the versioning number as well as they now include the date of release.
You apply patches into the Oracle Home with OPatch utility and into the database dictionary with the new datapatch utility.

Their primary goal is to get stability: fix issues with a low risk of regression. The minimum recommended is in the PSU, more fixes are in the ProactiveBP for known bugs.

This will change in 2017 with quarterly Release Updates. Well, this looks like a rename of PSU to RUR (Release Update Revision) and a rename of ProactiveBP as RU (Release Update).

The goal is to reduce the need to apply one-off patches on top of PSUs.

Here is all what I know about it, as presented by Andy Mendelsohn at DOAG Datenbank 2017 keynote:

IMG_3976

It is not common to have new announcements in the last fiscal year quarter. Thanks DOAG for this keynote.

 

Cet article New release model for JUL17 (or Oracle 17.3): RU and RUR est apparu en premier sur Blog dbi services.

ADF PopUp Event Context Launcher

Andrejus Baranovski - Tue, 2017-05-30 02:30
I will describe how you could use ADF popup event context to pass parameters into popup. This could be useful if you want to develop reusable popup, which should accept different type of parameters from various launcher components.

In this example - popup is loaded from context info. Launcher component - output text is assigned with attribute, reading its value from binding. Our goal is to pass attribute value into popup:


In order to be able to read attribute value from launcher parent component, make sure to set eventContext="launcher" for ADF popup:


You can reference parent UI component from launcher property, this can be done in popup fetch listener - where value will be copied to managed bean property:


We could process launcher parent component in managed bean, extract values, etc.:


Value retrieved from popup launcher is displayed in the popup:


Download sample application - PopUpEventContextApp.zip

Enterprise Linux Upgrade : It’s a Sorry State!

Tim Hall - Tue, 2017-05-30 01:54

It’s 2017 and it’s still not possible to reliably upgrade an Enterprise Linux distribution between major versions!

At this point you are scrolling down to the comments to “educate me” about the redhat-upgrade-tool, because you read about it somewhere and you once heard someone successfully upgraded an installation on a lab machine. Unless you have an ultra vanilla starting point, you are going to end up with a mess that probably won’t boot. By the time you come to upgrade a “real server”, there have been years of changes and it is unlikely to resemble some pristine minimal installation.

I know your next comment is going to be something about the architectural changes brought in by project X and version Y in RHEL7, which is why it is all so hard. Stop now! You are boring me already! Is it an enterprise distribution or isn’t it? If it is, you should be able to upgrade it reliably!

Next up comes, “But you have to reinstall when you get new hardware!” I present to you virtual machines. Physical hardware upgrades with no need to reinstall the OS on the VM.

I can’t believe I’ve been using Linux for about 19 years and this is where we are at.

Cheers

Tim…

Enterprise Linux Upgrade : It’s a Sorry State! was first posted on May 30, 2017 at 7:54 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Export from Oracle EBS to excel

Tom Kyte - Tue, 2017-05-30 00:46
Hi Tom, When I export an Oracle Payables invoice to excel, the invoice number looks like 2016192010000759 but in MS-Excel it looks like 2016192010000750, and actually its a different number. how can I get along with this? Kind regards Antonio ...
Categories: DBA Blogs

Refresh Referential data from source control

Tom Kyte - Tue, 2017-05-30 00:46
I'm trying to create a script to be run during each release of our application to refresh (add/update/delete) referential data. I'm a SQL Server developer new to Oracle. I understand that in Oracle you cannot create short lived temporary tables like ...
Categories: DBA Blogs

12.2 Index Deferred Invalidation (Atomica)

Richard Foote - Mon, 2017-05-29 20:14
One of the useful little features quietly introduced with Oracle Database 12c Release 2 is the ability to now defer the invalidation of dependent SQL cursors when an index is created or modified. This can be useful when you say create a new index which you know will have no impact on any existing SQL […]
Categories: DBA Blogs

Using Oracle Compute API Part 3 of 3 - Creating Compute Instance

In the last two post you have seen how to get an Authentication Cookie, how to reserve a public IP and how to create storage. Now let take a look at creating a compute instance. What is an Oracle...

We share our skills to maximize your revenue!
Categories: DBA Blogs

Oracle 12cR2: exchange partition deferred invalidation

Yann Neuhaus - Mon, 2017-05-29 14:36

In a previous post I introduced the new 12cR2 feature where some DDL operations can use the same rolling invalidation than what is done with dbms_stats. On tables, DDL deferred invalidation is available only for operations on partitions. Here is how it works for partition exchange.

Here is my session environment:

SQL> whenever sqlerror exit failure
SQL> alter session set nls_date_format='hh24:mi:ss';
Session altered.
SQL> alter session set session_cached_cursors=0;
Session altered.
SQL> alter session set optimizer_dynamic_sampling=0;
Session altered.
SQL> alter system set "_optimizer_invalidation_period"=5;
System SET altered.
SQL> show user
USER is "DEMO"

I create a partitioned table with one local index

SQL> create table DEMO (n number, p number) partition by list(p) (partition P1 values(1), partition P2 values(2));
Table DEMO created.
SQL> create index DEMO on DEMO(n) local;
Index DEMO created.

I create the table with same structure for exchange

SQL> create table DEMOX for exchange with table DEMO;
Table DEMOX created.
SQL> create index DEMOX on DEMOX(n);
Index DEMOX created.

The CREATE TABLE FOR EXCHANGE do not create the indexes, but for rolling invalidation we need them. Without the same indexes, immediate invalidation occurs.

In order observe invalidation, I run queries on the partitioned tables, involving or not the partition I’ll exchange. I also run a query on the table used for exchange.

SQL> SELECT * FROM DEMO partition (P1);
no rows selected
SQL> SELECT * FROM DEMO partition (P2);
no rows selected
SQL> SELECT * FROM DEMO;
no rows selected
SQL> SELECT * FROM DEMOX;
no rows selected

Here are the cursors and some execution plans:

SQL> select sql_id,sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;
 
SQL_ID SQL_TEXT CHILD_NUMBER INVALIDATIONS LOADS PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME LAST_ACTIVE_TIME IS_ROLLING_INVALID
------ -------- ------------ ------------- ----- ----------- ---------- --------------- -------------- ---------------- ------------------
dd3ajp6k49u1d SELECT * FROM DEMO 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
1ft329rx910sa SELECT * FROM DEMO partition (P1) 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
9pp3h276waqvm SELECT * FROM DEMO partition (P2) 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
by2m6mh16tpsz SELECT * FROM DEMOX 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
 
SQL> select * from table(dbms_xplan.display_cursor('1ft329rx910sa',0,'basic +partition'));
 
PLAN_TABLE_OUTPUT
-----------------
EXPLAINED SQL STATEMENT:
------------------------
SELECT * FROM DEMO partition (P1)
 
Plan hash value: 3520634703
 
------------------------------------------------------
| Id | Operation | Name | Pstart| Pstop |
------------------------------------------------------
| 0 | SELECT STATEMENT | | | |
| 1 | PARTITION LIST SINGLE| | 1 | 1 |
| 2 | TABLE ACCESS FULL | DEMO | 1 | 1 |
------------------------------------------------------
 
SQL> select * from table(dbms_xplan.display_cursor('dd3ajp6k49u1d',0,'basic +partition'));
 
PLAN_TABLE_OUTPUT
-----------------
EXPLAINED SQL STATEMENT:
------------------------
SELECT * FROM DEMO
 
Plan hash value: 1180220521
 
---------------------------------------------------
| Id | Operation | Name | Pstart| Pstop |
---------------------------------------------------
| 0 | SELECT STATEMENT | | | |
| 1 | PARTITION LIST ALL| | 1 | 2 |
| 2 | TABLE ACCESS FULL| DEMO | 1 | 2 |
---------------------------------------------------

I exchange the partition P1 with the table DEMOX. I include indexes and add the DEFERRED INVALIDATION clause


SQL> alter table DEMO exchange partition P1 with table DEMOX including indexes without validation deferred invalidation;
Table DEMO altered.

If I do the same without the DEFERRED INVALIDATION clause, or without including indexes, or having different indexes, then I would see all cursors invalidated. Here only the select on the DEMOX table is invalidated:


SQL> select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;
 
SQL_TEXT CHILD_NUMBER INVALIDATIONS LOADS PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME LAST_ACTIVE_TIME IS_ROLLING_INVALID
-------- ------------ ------------- ----- ----------- ---------- --------------- -------------- ---------------- ------------------
SELECT * FROM DEMO 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
SELECT * FROM DEMO partition (P1) 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
SELECT * FROM DEMO partition (P2) 0 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N
SELECT * FROM DEMOX 0 1 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:12 N

I expected to see the IS_ROLLING_INVALID flag changed to ‘Y’ as we can observe with other operations. I have opened an SR for that.

Rolling invalidation sets a timestamp at next execution:


SQL> SELECT * FROM DEMO partition (P1);
no rows selected
SQL> SELECT * FROM DEMO partition (P2);
no rows selected
SQL> SELECT * FROM DEMO;
no rows selected
SQL> SELECT * FROM DEMOX;
no rows selected
 
 
SQL> select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;
 
SQL_TEXT CHILD_NUMBER INVALIDATIONS LOADS PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME LAST_ACTIVE_TIME IS_ROLLING_INVALID
-------- ------------ ------------- ----- ----------- ---------- --------------- -------------- ---------------- ------------------
SELECT * FROM DEMO 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMO partition (P1) 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMO partition (P2) 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMOX 0 1 2 1 1 2017-05-26/10:06:12 2017-05-26/10:06:14 10:06:14 N

I expected to see IS_ROLLING_INVALID going from ‘Y’ to ‘X’ here when the random time is set for invalidation.

By default, the random time is set within a 5 hours window, but I changed “_optimizer_invalidation_period” to 5 seconds instead and I wait for this time window to be sure that invalidation occurs. And then run my queries again.


SQL> host sleep 5
 
SQL> SELECT * FROM DEMO partition (P1);
no rows selected
SQL> SELECT * FROM DEMO partition (P2);
no rows selected
SQL> SELECT * FROM DEMO;
no rows selected
SQL> SELECT * FROM DEMOX;
no rows selected
 

Here are the new child cursors created for the ones that were marked for rolling invalidation. The IS_ROLLING_INVALID did not display anything, but it seems that it works as expected:


SQL> select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;
 
SQL_TEXT CHILD_NUMBER INVALIDATIONS LOADS PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME LAST_ACTIVE_TIME IS_ROLLING_INVALID
-------- ------------ ------------- ----- ----------- ---------- --------------- -------------- ---------------- ------------------
SELECT * FROM DEMO 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMO 1 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:19 10:06:19 N
SELECT * FROM DEMO partition (P1) 1 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:19 10:06:19 N
SELECT * FROM DEMO partition (P1) 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMO partition (P2) 1 0 1 1 1 2017-05-26/10:06:12 2017-05-26/10:06:19 10:06:19 N
SELECT * FROM DEMO partition (P2) 0 0 1 2 2 2017-05-26/10:06:12 2017-05-26/10:06:12 10:06:14 N
SELECT * FROM DEMOX 0 1 2 2 2 2017-05-26/10:06:12 2017-05-26/10:06:14 10:06:19 N

Here is the confirmation that those 3 cursors were not shared because they have passed the rolling invalidation window:


SQL> select sql_id,child_number,reason from v$sql_shared_cursor join v$sql using(sql_id, child_number) where sql_text like 'S%DEMO%';
 
SQL_ID CHILD_NUMBER REASON
------ ------------ ------
1ft329rx910sa 0 033Rolling Invalidate Window Exceeded(3)2x414957859751495785979
1ft329rx910sa 1
by2m6mh16tpsz 0
dd3ajp6k49u1d 0 033Rolling Invalidate Window Exceeded(3)2x414957859771495785979
dd3ajp6k49u1d 1
9pp3h276waqvm 0 033Rolling Invalidate Window Exceeded(3)2x414957859781495785979
9pp3h276waqvm 1

So what?

The first observation is that deferred invalidation works with partition exchange, despite the fact that the V$SQL.IS_ROLLING_INVALID flag is not updated. I was surprised to see that rolling invalidation occurs even for the cursors accessing to the partition which was exchanged. However, the rolling invalidation occurs only if the indexes are the same. If we do not exchange the indexes, then all cursors are invalidated immediately. This means that probably the cursor parsed is compatible to run after the exchange as the indexes are guaranteed to have same structure, type, compression,…
This is a very nice feature when exchange partition is used to keep the fact table when loading new data: you load into a table and then exchange it with the latest partition. The new values are now exposed immediately and this new feature avoids a hard parse peak.

 

Cet article Oracle 12cR2: exchange partition deferred invalidation est apparu en premier sur Blog dbi services.

Which privilege for CREATE PLUGGABLE DATABASE from DB LINK?

Yann Neuhaus - Mon, 2017-05-29 13:59

When cloning a PDB from a remote CDB you need to define a database link to be used in the CREATE PLUGGABLE DATABASE … FROM …@… command. The documentation is not completely clear about the privileges required on the source for the user defined in the database link, so here are the different possibilities.

Remote clone

Here is what the documentation says:CapturePDBPrivsClone

So you can connect to the CDB or to the PDB.

In order to connect to the CDB you need a common user with the CREATE SESSION system privilege:

SQL> create user C##DBA identified by oracle;
User C##DBA created.
SQL> grant create session to C##DBA container=current;
Grant succeeded.

No need for CONTAINER=ALL here because you connect only to the CDB$ROOT.

Then you need the CREATE PLUGGABLE DATABASE system privilege on the PDB. You can grant it from the CDB$ROOT with the CONTAINER=ALL but it is sufficient to grant it locally on the source PDB:

SQL> alter session set container=PDB1;
Session altered.
SQL> grant create pluggable database to C##DBA container=current;
Grant succeeded.

Note that, not documented, but the SYSOPER administrative privilege can replace the CREATE PLUGGABLE DATABASE so we can run the following instead of the previous one:

SQL> alter session set container=PDB1;
Session altered.
grant sysoper to C##DBA container=current;
Grant succeeded.

Both ways are usable for cloning, you create a database link to this common user, on the destination, and run the CLONE PLUGGABLE DATABASE:

SQL> create database link CDB1A connect to C##DBA identified by oracle using '//localhost/CDB1A';
Database link CDB1A created.
SQL> create pluggable database PDB1CLONE from PDB1@CDB1A file_name_convert=('CDB1A/PDB1','CDB2A/PDB1CLONE');
Pluggable database PDB1CLONE created.
SQL> alter pluggable database PDB1CLONE open;
Pluggable database PDB1CLONE altered.

This was using a common user but you can also define the user locally on the source PDB:

SQL> alter session set container=PDB1;
Session altered.
SQL> create user PDBDBA identified by oracle;
User PDBDBA created.
SQL> grant create session to PDBDBA container=current;
Grant succeeded.
SQL> grant create pluggable database to PDBDBA container=current;
Grant succeeded.

There again you have the alternative to use SYSOPER instead of CREATE PLUGGABLE DATABASE:

SQL> alter session set container=PDB1;
Session altered.
SQL> create user PDBDBA identified by oracle;
User PDBDBA created.
SQL> grant create session to PDBDBA container=current;
Grant succeeded.
SQL> grant sysoper to PDBDBA container=current;
Grant succeeded.

With one of those, you can clone from the target with a database link connecting to the local user only:

SQL> create database link CDB1A connect to PDBDBA identified by oracle using '//localhost/PDB1';
Database link CDB1A created.
SQL> create pluggable database PDB1CLONE from PDB1@CDB1A file_name_convert=('CDB1A/PDB1','CDB2A/PDB1CLONE');
Pluggable database PDB1CLONE created.
SQL> alter pluggable database PDB1CLONE open;
Pluggable database PDB1CLONE altered.

Then which alternative to use? The choice of the common or local user is up to you. I probably use a common user to do system administration, and cloning is one of them. But if you are in a PDBaaS environment where you are the PDB administrator, then you can clone your PDB to another CDB that you manage. This can mean cloning a PDB from the Cloud to a CDB on your laptop.

PDB Relocate

Things are different with the RELOCATE option where you drop the source PDB and redirect the connection to the new one. This is definitely a system administration task to do at CDB level and requires a common user. Trying it from a database link connecting to a local user will raise the following error:

ORA-17628: Oracle error 65338 returned by remote Oracle server
 
65338, 00000, "unable to create pluggable database"
// *Cause: An attempt was made to relocate a pluggable database using a
// database link to the source pluggable database.
// *Action: Use a database link that points to the source multitenant container
// database root and retry the operation.

Here is what the documentation says:CapturePDBPrivsRelocate

So, we need to have a common user on the source CDB, with CREATE SESSION privilege, and it makes sense to use an administrative privilege:

SQL> create user C##DBA identified by oracle;
User C##DBA created.
SQL> grant create session to C##DBA container=current;
Grant succeeded.
SQL> alter session set container=PDB1;
Session altered.
grant sysoper to C##DBA container=current;
Grant succeeded.

The documentation mentions that you can use either SYSDBA or SYSOPER, but from my tests (and Deiby Gómez ones) only SYSOPER works without raising an ‘insufficient privileges’. The documentation mentions that CREATE PLUGGABLE DATABASE is also necessary. Actually, it is not. And, with a relocate, it cannot be an alternative to SYSOPER. The user must be a common user, the CREATE SESSION must be granted commonly, but the SYSOPER can be locally for the PDB we relocate.

In summary

To clone a remote PDB you can use a common or local user, with SYSOPER or CREATE PLUGGABLE DATABASE privilege. To relocate a PDB you need a common user with SYSOPER.

 

Cet article Which privilege for CREATE PLUGGABLE DATABASE from DB LINK? est apparu en premier sur Blog dbi services.

OUD – Oracle Unified Directory 11.1.2.3, How to change the Java version of OUD 11.1.2.3 with Weblogic and ODSM

Yann Neuhaus - Mon, 2017-05-29 08:50

In this blog, I would like to show how to change the Java version used by OUD and WebLogic, in case you use the ODSM. The OUD (Oracle Unified Directory) is written purely in Java, not like OID for example, and so, it relies heavily on your installed Java version. From a security point of view, updating the Java version is a task that you might do frequently and you want to do it as easy as possible. E.g. by just changing a symbolic link. In my case, I would like to update the Java version from 1.7.0_131 to 1.7.0_141. The first time you do the change, you have a few steps of manual steps to do, but the next Java updates will be much easier, by just changing a symbolic link.

So … the first question that might popp up is, where can I get Java 7 downloads? You can find them
in the Java SE 7 Archive Downloads, however, the Java 1.7 is freely available only until version 1.7.0_80, and for OUD you have to use Java 1.7 because this is the only supported version. Here is the link to the Java 1.7 archive downloads.

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

Hint: In case you use SSLv3, the following announcement might be of interest for you. Starting with the January 20, 2015 Critical Patch Update releases JDK 7u75 and above, the Java Runtime Environment has SSLv3 disabled by default. For more information check out the following web page.

http://www.oracle.com/technetwork/java/javase/documentation/cve-2014-3566-2342133.html

OK. So, where do I get the latest Java version which is 1.7.0_141 at the moment? Since July 2015, the updates for Java 7 are no longer available to the public. Oracle offers updates to Java 7 only for customers who have purchased Java support or have Oracle products that require Java 7. That means, you have to go to MOS and search for the following note:

Information Center: Installation & Configuration for Oracle Java SE (Doc ID 1412103.2)

There you will find a link which points you to the JDK/JRE 7 Update 141 and “Patch 13079846: Oracle JDK 1.7.0″.

Java download

OK. Now that we go the latest 1.7 version, we can start with the upgrade procedure which consists of 8 steps.

1. Check the current version
2. Install the new Java version
3. Stop WebLogic and the OUD
4. Adjust the symlink
5. Update OUD configuration files (java.properties)
6. Update WebLogic configuration files
7. Start WebLogic and the OUD
8. Check the new version

1. Check the current version of your Java installation, WebLogic Server and OUD.

The Java version can be checked via “java -version”

[dbafmw@dbidg01 ~]$ echo $JAVA_HOME
/u01/app/oracle/product/Middleware/11.1.2.3/jdk1.7.0_131	
[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/jdk1.7.0_131/bin/java -version
java version "1.7.0_131"
Java(TM) SE Runtime Environment (build 1.7.0_131-b12)
Java HotSpot(TM) 64-Bit Server VM (build 24.131-b12, mixed mode)

To check the Java vendor and Java version used by WebLogic Server, I use usually the Admin Console. Just go to Environment > Servers > Your Server > Monitoring > General

That page should have all the information that you need, like on the following screen shot:

WebLogic 131
To check the Java version used by OUD, simply login to the ODSM and on the Home page you will see it immediately.

OUD version 131

Or use the status script from the command line.

[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/bin/status -D "cn=Directory Manager" -j ~/.oudpwd  | grep "Java Version"
Java Version:             1.7.0_131
2. Install the new Java version
[dbafmw@dbidg01 ~]$ cd /u01/stage/
[dbafmw@dbidg01 stage]$ unzip p13079846_17000_Linux-x86-64.zip
...
...
[dbafmw@dbidg01 stage]$ mv jdk-7u141-linux-x64.tar.gz /u01/app/oracle/product/Middleware/11.1.2.3/

[dbafmw@dbidg01 stage]$ cd /u01/app/oracle/product/Middleware/11.1.2.3/
[dbafmw@dbidg01 11.1.2.3]$ tar -xzvf jdk-7u141-linux-x64.tar.gz
...
...
[dbafmw@dbidg01 11.1.2.3]$ rm jdk-7u141-linux-x64.tar.gz

[dbafmw@dbidg01 11.1.2.3]$ ls -l | grep jdk
lrwxrwxrwx  1 dbafmw oinstall     12 Mar 27 10:36 jdk -> jdk1.7.0_131
drwxr-x---  8 dbafmw oinstall   4096 Dec 12 23:34 jdk1.7.0_131
drwxr-xr-x  8 dbafmw oinstall   4096 Mar 14 06:10 jdk1.7.0_141
3. Stop WebLogic and the OUD

Stop WebLogic

[dbafmw@dbidg01 bin]$ . /u01/app/oracle/product/Middleware/11.1.2.3/wlserver_10.3/server/bin/setWLSEnv.sh
[dbafmw@dbidg01 bin]$ java weblogic.version -verbose
[dbafmw@dbidg01 bin]$ cd /u01/app/oracle/product/Middleware/11.1.2.3/user_projects/domains/base_domain/bin
[dbafmw@dbidg01 bin]$ ./stopWebLogic.sh
...
...

Stop OUD

[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/bin/stop-ds
...
...
4. Adjust the symlink
[dbafmw@dbidg01 11.1.2.3]$ rm jdk
[dbafmw@dbidg01 11.1.2.3]$ ln -s jdk1.7.0_141 jdk
[dbafmw@dbidg01 11.1.2.3]$ ls -l | grep jdk
lrwxrwxrwx  1 dbafmw oinstall     12 May 29 14:10 jdk -> jdk1.7.0_141
drwxr-x---  8 dbafmw oinstall   4096 Dec 12 23:34 jdk1.7.0_131
drwxr-xr-x  8 dbafmw oinstall   4096 Mar 14 06:10 jdk1.7.0_141
5. Update OUD configuration files (java.properties)

The update of the OUD java.properties file is usually done in the INSTALL_HOME and the INSTANCE_HOME, and the activated via the dsjavaproperties script from the appropriate location. The dsjavaproperties script is quite good documented by Oracle. See the following link for more information.

http://docs.oracle.com/cd/E52734_01/oud/OUDAG/appendix_cli.htm#OUDAG01148

Ok. Let’s do it once for your INSTALL_HOME

[dbafmw@dbidg01 11.1.2.3]$ vi $MW_HOME/Oracle_OUD1/config/java.properties
... 
default.java-home=/u01/app/oracle/product/Middleware/11.1.2.3/jdk/jre

Now you can apply the new java configuration with dsjavaproperties shell script.

[dbafmw@dbidg01 11.1.2.3]$ cd $MW_HOME/
[dbafmw@dbidg01 11.1.2.3]$ cd Oracle_OUD1/bin
[dbafmw@dbidg01 bin]$ ./dsjavaproperties
The operation was successful.  The server commands will use the java arguments
and java home specified in the properties file located in
/u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/config/java.properties

And now for your INSTANCE_HOME

[dbafmw@dbidg01 11.1.2.3]$ vi $MW_HOME/asinst_1/OUD/config/java.properties
...
default.java-home=/u01/app/oracle/product/Middleware/11.1.2.3/jdk/jre

And apply the new java configuration with dsjavaproperties shell script here as well.

[dbafmw@dbidg01 11.1.2.3]$ cd $MW_HOME/
[dbafmw@dbidg01 11.1.2.3]$ cd asinst_1/OUD/bin/
[dbafmw@dbidg01 bin]$ ./dsjavaproperties
The operation was successful.  The server commands will use the java arguments
and java home specified in the properties file located in
/u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/config/java.properties
6. Update Weblogic configuration files

Adjust the JAVA_HOME in the following files and point it now to the symlink which we have previously created. So, the new Java home should be:

JAVA_HOME=/u01/app/oracle/product/Middleware/11.1.2.3/jdk

These are the files where you typically need to adjust it:

~/.bash_profile  # of the Application owner of the WebLogic/OUD installation
$MW_HOME/wlserver_10.3/common/bin/commEnv.sh
$MW_HOME/wlserver_10.3/samples/domains/wl_server/bin/setDomainEnv.sh
$MW_HOME/wlserver_10.3/samples/domains/medrec/bin/setDomainEnv.sh
$MW_HOME/wlserver_10.3/samples/domains/medrec-spring/bin/setDomainEnv.sh
$MW_HOME/wlserver_10.3/common/nodemanager/nodemanager.properties
$MW_HOME/utils/bsu/bsu.sh 
$MW_HOME/utils/uninstall/uninstall.sh
$MW_HOME/utils/quickstart/quickstart.sh
$MW_HOME/user_projects/domains/base_domain/bin/setDomainEnv.sh

To double check it, you might want to run the following find command, to see if you have somewhere else still the old 131 JDK.

[dbafmw@dbidg01 11.1.2.3]$ cd $MW_HOME
[dbafmw@dbidg01 11.1.2.3]$ find . -type f -name "*.sh" -exec grep -il jdk1.7.0_131 {} \;
7. Start WebLogic and the OUD

Start WebLogic

[dbafmw@dbidg01 bin]$ . /u01/app/oracle/product/Middleware/11.1.2.3/wlserver_10.3/server/bin/setWLSEnv.sh
[dbafmw@dbidg01 bin]$ java weblogic.version -verbose
[dbafmw@dbidg01 bin]$ cd /u01/app/oracle/product/Middleware/11.1.2.3/user_projects/domains/base_domain/bin
[dbafmw@dbidg01 bin]$ nohup ./startWebLogic.sh &
...
...

Start OUD

[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/bin/start-ds
...
...
8. Check the new version
[dbafmw@dbidg01 bin]$ echo $JAVA_HOME
/u01/app/oracle/product/Middleware/11.1.2.3/jdk
[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/jdk/bin/java -version
java version "1.7.0_141"
Java(TM) SE Runtime Environment (build 1.7.0_141-b11)
Java HotSpot(TM) 64-Bit Server VM (build 24.141-b11, mixed mode)

To check the Java vendor and Java version used by WebLogic Server, use again the  WebLogic Admin Console like previously mentioned.

WebLogic 141

And login to the ODSM.

OUD version 141
Or use the status script from the command line.

[dbafmw@dbidg01 bin]$ /u01/app/oracle/product/Middleware/11.1.2.3/asinst_1/OUD/bin/status -D "cn=Directory Manager" -j ~/.oudpwd  | grep "Java Version"
Java Version:             1.7.0_141
Conclusion

A few manual steps are involved, when you want to change the Java version the first time, however, the next time you do it, you simply need to stop WebLogic and OUD, install the new JDK and change the symbolic link and start WebLogic and OUD again.

 

 

Cet article OUD – Oracle Unified Directory 11.1.2.3, How to change the Java version of OUD 11.1.2.3 with Weblogic and ODSM est apparu en premier sur Blog dbi services.

Integrating REST Services in Oracle JET

Oracle Javascript Extension Toolkit includes a common model and collection framework for interacting with external REST Services. You create Model or Collection objects which represent a single...

We share our skills to maximize your revenue!
Categories: DBA Blogs

ORA-01704: string literal too long error while using regexp_substr, Any alternative solution?

Tom Kyte - Mon, 2017-05-29 06:26
We are getting - ORA-01704: string literal too long -> Following query is built dynamically and will get executed. If it is going beyond 4000 then it is giving "ORA-01704: string literal too long". Is there any alternative for this? SELECT reg...
Categories: DBA Blogs

ORA-24247 while debugging from SQL Developer

Tom Kyte - Mon, 2017-05-29 06:26
<code>sys@ORA12C> create user demo identified by demo 2 default tablespace users 3 quota unlimited on users; User created. sys@ORA12C> grant create session,create procedure to demo; Grant succeeded. sys@ORA12C> grant debug connect...
Categories: DBA Blogs

Passing dbms_sql.desc_tab (or desc_tab2) as a function parameter

Tom Kyte - Mon, 2017-05-29 06:26
Hi, I'm having issues with the use of certain parts of the dbms_sql package. What I am trying to do, in brief, is: * take an existing sys_refcursor and convert it for use with the dbms_sql package using <code>app_curs := dbms_sql.to_cursor_num...
Categories: DBA Blogs

temporary lobs

Tom Kyte - Mon, 2017-05-29 06:26
Hi Tom, Here is my query to check the temporary lob. select sum(cache_lobs) sum_cache_lobs from v$temporary_lobs; SUM_CACHE_LOBS -------------- 0 This is my simple standalone function with return type clob CREATE OR REPLACE FUNCTION ...
Categories: DBA Blogs

Using Oracle Compute API Part 2 of 3 - Creating IP Reservations and Compute storage

Now that we have our authentication cookie, we can now begin to use the API with orchestration to create our Oracle Compute components.  What is an...

We share our skills to maximize your revenue!
Categories: DBA Blogs

Can EBS Nodes Be at Different Operating System Levels?

Steven Chan - Mon, 2017-05-29 02:00

Oddly, a category of EBS architecture questions that I'd thought long-settled is starting to reemerge.  I've recently seen several queries along the lines of:

  1. Can EBS database nodes and application tier nodes be on different operating systems?
  2. Can multiple EBS database nodes be on different operating systems or levels?
  3. Can multiple EBS application tier nodes be on different operating systems or levels?

Here are the answers to these questions:

1. Can EBS database nodes and application tier nodes be on different operating systems?

Yes.  In some cases, the operating systems certified for EBS database nodes cannot be run on the application tier. These are called "database tier only" certifications. It is quite common to see this configuration, especially in large EBS environments.

2. Can multiple EBS database nodes be on different operating systems or levels?

No.  From our "Installation Guide: Using Rapid Install" documentation:  

"All database tier nodes must be at the same operating system patch level."

3. Can multiple EBS application tier nodes be on different operating systems or levels?

No. From our "Installation Guide: Using Rapid Install" documentation:  

"All application tier nodes must be at the same operating system patch level."

Here's a screenshot from our EBS 12.2 documentation (emphasis in red):

References

Related Articles

Categories: APPS Blogs

Scripting, Groovy and Java for extending the product

Anthony Shorten - Sun, 2017-05-28 23:55

In a recent past release of the Oracle Utilities Application Framework, we introduced Groovy as an alternative development technology for server side extensions on our products. This now means we have three technologies that can be used to extend our products:

  • XPath/Xquery based scripting engine known as scripting
  • Java
  • Groovy

Now, the issue becomes which technology do I use for my extensions. Here are a few guidelines to help you:

  • In terms of performance, there is not much difference between the technologies as, at the end of the day, they all result in byte code that is executed by the product. The product runtime does not discriminate the technology at that level. There is a slight advantage of Java/Groovy over Scripting for extremely large volumes.
  • If you are doing complex algorithmic or operating system level interaction it is recommended to use either Groovy or Java instead of scripting. While scripting can satisfy the most common of extensions, it may not be as efficient as Java/Groovy.
  • If you are intending to move to the Oracle Utilities SaaS offerings, you cannot use Java for any extensions. This is due to the fact that Java tends to be low level and also you cannot deploy your own JAR/WAR/EAR files in a Saas environment. If you use Oracle PaaS then you have full access so you can use Java in those cases.
  • Groovy was adopted as a language as it is the foundation of the Oracle Cloud offerings in general for extensions. The Groovy implementation across the Oracle Cloud is whitelisted so that it is restricted to accessing classes that do not have direct access to operating system resources. In this case we supply Groovy libraries to provide a contained integration with these resources.
  • One of the major considerations is total cost of ownership. Typically if you use a mixture of languages in your implementation then the cost of maintenance of those extensions tends to be higher if you chose to use a single language. This is true for any product that has multiple ways of extension as while flexibility is a great asset, it can come with additional costs. I usually recommend that you pick one of the technologies and stick with it for your extensions unless, for some reason, you need to use a mixture.
  • In terms of best practices, a lot of implementation partners tend to use scripting for the vast majority of their extensions and only use Groovy/Java when scripting is not applicable for some reason.
  • One of the big advantages of scripting and Groovy is that the code assets are actually contained in the database and migration is all handled by either Bundling (for small migrations) or using Configuration Migration Assistant (CMA). The use of Java for extensions, typically requires a manual synchronization of data as well as code.

From a vendor perspective, it does not matter which technology you choose to use. Personally, I would use scripting and the only use Groovy as necessary, it is easier to manage and you do not have physical JAR/WAR/EAR files to manage which makes your code/data synchronization much less an issue in a complex migration strategy. It also means you can move to the cloud a lot easier, in the future.

Configuring Oracle Traffic Director 12c with WebGate

Amis Blog - Sun, 2017-05-28 15:01

At a recent customer install, I was faced with configuring Oracle Traffic Director (OTD) 12.2.1.2.0 Webgate with Oracle Access Manager.

Deploying Webgate on OD 12c is very well described in the documentation. See A Configuring OAM Agent (WebGate) for Oracle Traffic Director 12.2.1.2

There is however a flaw in the documentation. I came across that when I reached the point where Webgate get’s configured in the conf files of OTD.

When you configure Webgate for OTD 12c, the OTD Conf files such as magnus.conf and virtual-server-*-obj.conf are updated. (on a collocated installation)
If you follow the documentation completely, you will end up with conf files that either have no WebGate configuration in them or with the configuration dedicated to the first OTD instance on both servers. In the latter case, the second instance will no longer start.
I created a Service Request at Oracle support to address the issue. They didn’t have a solution for the problem and I ended up being bounced between the OTD and the WebGate support teams. Finally one of the guys from the WebGate team really tried to help me, but couldn’t resolve the issue. So I went along and solved the problem myself. As I will describe below.

When you reach pt.5 of the documentation A.2 Configuring Oracle Traffic Director 12c WebGate

Change the EditObjConf line as follows

./EditObjConf -f Domain_Home/config/fmwconfig/components/
OTD/otd_configuration_name/config/virtual_server_name-obj.conf -w webgate_instanceDirectory [-oh Oracle_Home] -ws otd

For example

OTD Configuration Name: TST1
OTD Instance 1: otd_TST1_host1.domain.local
OTD Instance 2: otd_TST1_ host1.domain.local
Domainhome: /u01/app/oracle/config/domains/otd_domain_tst

./EditObjConf -f /u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/
OTD/TST1/config/virtual-server-tst1-obj.conf -w /u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/
OTD/instances/otd_TST1_ host1.domain.local -oh $ORACLE_HOME -ws otd

Where TST1 is the name of the configuration and host1.domain.local is the name of the first server.
This will change the magnus.conf and virtual-server-tst1-obj.conf for Webgate.
In virtual-server-tst1-obj.conf there are no instance specific references.
However in the magnus.conf there are references to the first instance, since this is the one that we used with EditObjConf.

This is what the magnus.conf in the OTD configuration section (on global level) looks like after EditObjConf command.
Notice the hardcoded instance name in four places.

less /u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/ OTD/TST1/config/magnus.conf&amp;amp;lt;/pre&amp;amp;gt;
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
#

Init fn="load-modules" shlib="libwebapp-firewall.so"

# Oracle WebGate Init FNs start #WGINITFN
Init fn="load-modules"
funcs="OBWebGate_Init,OBWebGate_Authent,OBWebGate_Control,
OBWebGate_Err,OBWebGate_Handle401, OBWebGate_Response"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/
components/OTD/instances/otd_TST1_host1.domain.local"
#ESSO#Init fn="load-modules"
funcs="EssoBasicAuthInit,EssoBasicAuth,EssoClean"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/
components/OTD/instances/otd_TST1_host1.domain.local"
Init fn="OBWebGate_Init"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/
components/OTD/instances/otd_TST1_host1.domain.local" Mode="PEER"
#WebGateLockFileDir="&amp;amp;amp;lt;some_local_dir&amp;amp;amp;gt;"

# WebGateLockFileDir: Optional directive specifying the location to create
# webgate lock files.
#
# If configured, then all webgate lock files will be created under
# &amp;amp;amp;lt;WebGateLockFileDir&amp;amp;amp;gt;/&amp;amp;amp;lt;Hash of WebGateInstancedir&amp;amp;amp;gt;. The hash subdir is to
# ensure uniqueness for each webserver instance and avoid locking conflicts
# if two different instances have configured the directive with same value.
#
# If the dir does not exist before, will try to create it first. If dir
# creation failed or the directive not configured, webgate falls back to old
# model, i.e. use same location as original file that lock is based upon.
#
# This directive is useful when webgate instance is located on NFS mounted
# disks and performance greatly impacted. Configure it to local dir will solve
# the issue.
#ESSO#Init fn="EssoBasicAuthInit"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/
components/OTD/instances/otd_TST1_host1.domain.local" Mode="PEER"
# Oracle WebGate Init FNs end #WGINITFN

Leaving it like this will result in this hardcoded instance name being distributed to all instance. Hence only one instance would start.

Now how to fix this.

Open magnus.conf with an editor

Replace the hardcoded instance name with a variable called ${INSTANCE_NAME}
(I picked up the existence of this variable in the server.xml which is also on the OTD Configuration level and get distributed all instances.)

In our example the magnus.conf now looks like this.

#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
#&amp;amp;lt;/pre&amp;amp;gt;
Init fn="load-modules" shlib="libwebapp-firewall.so"

# Oracle WebGate Init FNs start #WGINITFN
Init fn="load-modules"
funcs="OBWebGate_Init,OBWebGate_Authent,OBWebGate_Control,
OBWebGate_Err,OBWebGate_Handle401,OBWebGate_Response"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/${INSTANCE_NAME}"
#ESSO#Init fn="load-modules"
funcs="EssoBasicAuthInit,EssoBasicAuth,EssoClean"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/${INSTANCE_NAME}" Init fn="OBWebGate_Init"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/${INSTANCE_NAME}" Mode="PEER"
#WebGateLockFileDir="&amp;amp;amp;lt;some_local_dir&amp;amp;amp;gt;"
# WebGateLockFileDir: Optional directive specifying the location to create
# webgate lock files.
#
# If configured, then all webgate lock files will be created under
# &amp;amp;amp;lt;WebGateLockFileDir&amp;amp;amp;gt;/&amp;amp;amp;lt;Hash of WebGateInstancedir&amp;amp;amp;gt;. The hash subdir is to
# ensure uniqueness for each webserver instance and avoid locking conflicts
# if two different instances have configured the directive with same value.
#
# If the dir does not exist before, will try to create it first. If dir
# creation failed or the directive not configured, webgate falls back to old
# model, i.e. use same location as original file that lock is based upon.
#
# This directive is useful when webgate instance is located on NFS mounted
# disks and performance greatly impacted. Configure it to local dir will solve
# the issue.

#ESSO#Init fn="EssoBasicAuthInit"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd" 
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/${INSTANCE_NAME}" Mode="PEER"
# Oracle WebGate Init FNs end #WGINITFN
Now to distributed these files

Open Enterprise ManagerFusion Middleware Control 12c and go to the OTD Configuration

Go to Virtual Server section and click Lock and Edit

EM will show the Pull Components Changes bar.

DON’T pull the changes!
This will replace the conf files of the configuration with those currently in use by the instances.

Instead make a minor, insignificant, change in the configuration.
For example add a hostname to the Virtual Server Settings. (We remove it later)
Now activate the changes
Again, don’t Pull the changes

Discard the Instance Changes and Activate Changes.

Again Discard Changes

And finally Discard Changes to distributed the correct conf files to the instances.

Now let’s look at the magnus.conf on both instances. (We already know that the virtual-server-tst1-obj.conf is the same everywhere)

On Instance 1

#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
#&amp;lt;/pre&amp;gt;
Init fn="load-modules" shlib="libwebapp-firewall.so"

# Oracle WebGate Init FNs start #WGINITFN
Init fn="load-modules"
funcs="OBWebGate_Init,OBWebGate_Authent,OBWebGate_Control,
OBWebGate_Err,OBWebGate_Handle401,OBWebGate_Response"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/
components/OTD/instances/otd_TST1_host1.domain.local"
#ESSO#Init fn="load-modules" funcs="EssoBasicAuthInit,EssoBasicAuth,EssoClean"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host1.domain.local" Init fn="OBWebGate_Init"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host1.domain.local" Mode="PEER"
#WebGateLockFileDir="&amp;amp;lt;some_local_dir&amp;amp;gt;"

# WebGateLockFileDir: Optional directive specifying the location to create # webgate lock files.
#
# If configured, then all webgate lock files will be created under
# &amp;amp;lt;WebGateLockFileDir&amp;amp;gt;/&amp;amp;lt;Hash of WebGateInstancedir&amp;amp;gt;. The hash subdir is to
# ensure uniqueness for each webserver instance and avoid locking conflicts
# if two different instances have configured the directive with same value.
#
# If the dir does not exist before, will try to create it first. If dir
# creation failed or the directive not configured, webgate falls back to old
# model, i.e. use same location as original file that lock is based upon.
#
# This directive is useful when webgate instance is located on NFS mounted
# disks and performance greatly impacted. Configure it to local dir will solve
# the issue.

#ESSO#Init fn="EssoBasicAuthInit"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host1.domain.local" Mode="PEER"
# Oracle WebGate Init FNs end #WGINITFN

And on Instance 2

#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
#&amp;lt;/pre&amp;gt;
Init fn="load-modules" shlib="libwebapp-firewall.so"

# Oracle WebGate Init FNs start #WGINITFN
Init fn="load-modules" funcs="OBWebGate_Init,OBWebGate_Authent,OBWebGate_Control,
OBWebGate_Err,OBWebGate_Handle401,OBWebGate_Response"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host2.domain.local"
#ESSO#Init fn="load-modules"
funcs="EssoBasicAuthInit,EssoBasicAuth,EssoClean"
shlib="/u01/app/oracle/product/otd1221/webgate/otd/lib/webgate.so"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host2.domain.local"
Init fn="OBWebGate_Init"
obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host2.domain.local" Mode="PEER"
#WebGateLockFileDir="&amp;amp;lt;some_local_dir&amp;amp;gt;"

# WebGateLockFileDir: Optional directive specifying the location to create
# webgate lock files.
#
# If configured, then all webgate lock files will be created under
# &amp;amp;lt;WebGateLockFileDir&amp;amp;gt;/&amp;amp;lt;Hash of WebGateInstancedir&amp;amp;gt;. The hash subdir is to
# ensure uniqueness for each webserver instance and avoid locking conflicts
# if two different instances have configured the directive with same value.
#
# If the dir does not exist before, will try to create it first. If dir
# creation failed or the directive not configured, webgate falls back to old
# model, i.e. use same location as original file that lock is based upon.
#
# This directive is useful when webgate instance is located on NFS mounted
# disks and performance greatly impacted. Configure it to local dir will solve
# the issue.

#ESSO#Init fn="EssoBasicAuthInit"

obinstalldir="/u01/app/oracle/product/otd1221/webgate/otd"
obinstancedir="/u01/app/oracle/config/domains/otd_domain_tst/config/fmwconfig/components/OTD/instances/otd_TST1_host2.domain.local" Mode="PEER"
# Oracle WebGate Init FNs end #WGINITFN

The files look good on both instances.

Now Restart Instances

Validate Restart operation on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host2.domain.local Validate Restart operation on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host1.domain.local ------------------------------------------------
Perform Restart operation on target /Domain_otd_domain_tst/otd_domain_tst/TST1
Perform Restart operation on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host2.domain.local
Perform Restart operation on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host1.domain.local
------------------------------------------------
Checking operation status on target /Domain_otd_domain_tst/otd_domain_tst/TST1
Operation Restart on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host2.domain.local succeeded
Operation Restart on target /Domain_otd_domain_tst/otd_domain_tst/otd_TST1_host1.domain.local succeeded

 

Now you’re good to go with WebGate correctly configured on OTD 12c.

I put the solution in the service request and got thanks from the guys at Oracle Support. They told me, they where going to change the documentation to match my solution. Always nice to get this kind of appreciation from them.

The post Configuring Oracle Traffic Director 12c with WebGate appeared first on AMIS Oracle and Java Blog.

CREATE_CHUNKS_BY_SQL

Tom Kyte - Sat, 2017-05-27 17:46
How to frame the select query which will divide the result set into required chunks by using CREATE_CHUNKS_BY_SQL by_rowid => true. For example: i have a table contains 100 records and my select query fetches after filtration 50 records, i want ...
Categories: DBA Blogs

Pages

Subscribe to Oracle FAQ aggregator