Oracle Linux is a complete enterprise Linux solution available from Oracle. In fact, it is, we firmly believe, the best enterprise Linux solution available. Both for generic use of Linux and in particular and especially when using any Oracle product on top. It's important to remember that Oracle Linux is not just for running Oracle products on top of Linux. Oracle Linux is a complete generic Linux distribution that's fully supported underneath any Linux application. There are no restrictions from our end as to what you can run on it (as long as they're apps built to run of course). You can run 3rd party Linux applications just fine, use it as an NFS server or as a webserver or whatever you want to use the system for. Many customers I talk to somehow believe that it's unique for Oracle products and I have to point out that while we have great, unique advantages and extra benefits running Oracle products on Oracle Linux, it's certainly not in anyway restricted for that. It's the opposite, all you needs is Oracle Linux for any and every Linux server in house.
Why the best, you ask? Well, we do an incredibly amount of testing on a daily basis (1000's of servers run various types of QA on Oracle Linux amounting to over 100,000 hours of QA happening every single day), we have a huge amount of internal use as consumers (end-user/customer use), we have many years of experience helping enterprise customers in general and extend that down to Operating System support, we can scale using the greater Oracle infrastructure, etc.
The support team is a large group of dedicated professionals globally that are trained to handle serious issues, deal with mission critical environments and cases, know their product, have a focus on server use first and foremost, understand, in particular also the other products around it enough to be able to understand that ASM doesn't stand for -assembler language- (in our customer-base) but stands for automatic storage management. (you laugh? I can assure you it's not a joke) A single phone call, if a database problem is an OS issue, no worries, we deal with it internally, no need to go call someone else that might think a database is a dirty word, or someone that 's an expert in gnome (no offense) but not quite in a complex environment where you have a product use 50GB of RAM and has 2000 processes running and is doing massive amounts of IO and woops something is going wrong. "Reboot?" doesn't cut it.
When we do Linux development, the focus is basically on two things. 1) find ways to enhance Linux to run our products better, ways that are generic, and also help other applications. A database does disk/network IO, lots of processes, lots of memory access, if we make our product run better, others also benefit... 2) help make Linux a better OS. improve stability, help add features that an OS needs, unrelated to our own product stack but important for customers to run the operating system, no matter what application. Having access to in-house hardware such as very big x64 servers like the x4800 (4TB ram, 160 threads) and TB and TB of storage allows us to test things at very, very large scale. Offering the Unbreakable Enterprise Kernel(UEK) as part of Oracle Linux alongside what we call the Red Hat-Compatible kernel gives us the ability to provide current, modern, tested code to customers without reducing reliable and availability.
A CTO of another company a little while back implied on twitter that UEK is too current and reduces reliability because the code is new. Can I point something out here? One thing we decided to do, with UEK, was to not backport features from new kernels. The goal is to stay close (but not too close as we don't ship a development tree) to the "Linus kernel" and focus on testing the heck out of it and fixing any bug that we would find, any regression.. This is good for the Linux community because when we do find a problem, we fix it and it's immediately also relevant to the mainline kernel. So this helps us and the kernel community. It's a symbiotic relationship. The alternative : take a version of Linux that's 3 years old and take code from a more or less current version, after 100's of 1000's of lines of code changes and architectural changes have happened, and make that new code, somehow work in the old tree. The result : old patched up, totally unique code. Someone spending all their time retrofitting complex stuff into an old version. Testing is unique, bugs found are mostly only relevant in that version and not so much in newer versions unless they're greater design bugs or one liners. No one else really ever tested it because, well, it's unique, no other company is providing that seriously forked kernel that has 1+M of lines of differences. Somehow, I prefer our approach. At least the folks at SuSE seem to believe the same.
One advantage we have with our kernel is that we made it possible to install in an existing Oracle Linux 5 environment and you are not required to move to Oracle Linux 6 to get the benefit of new kernel features and new drivers and new performance benefits. Moving from one major version to the next is a very costly effort because you basically always end up doing a re-imaging of the servers. Most customers are driven to new major releases for a hardware refresh. We don't require you to do that, you can run both OL5 and OL6, your choice, your timeframe. You can reboot between 2.6.18 and 2.6.32 or even 2.6.39 (3.0.24) without problem, at any time.
The complete source code for Oracle Linux is available from oss.oracle.com (OL5 or OL6). The source code for our UEK and UEK2 kernels is available in a public GIT repository (UEK 2.6.32 or UEK2 2.6.39. Don't worry, it's not just a tar file and you don't have to go browse webpages behind a userid/password to figure out what all changed and try to piece it together yourself. It's all there, both the mainline kernel changelog and our changes on top. Transparent.
The binaries for Oracle Linux are available from edelivery in the form of ISO images of the installable DVDs for the major releases and all the update releases (OL5.1...5.8, OL6, OL6.1, OL6.2 etc). You are not required to first get a support subscription, you can just go and download the software, no activation keys, no trial period, production use OK, distribute to your friends? no problem, no need to remove logos. Errata/bug updates are available through ULN (ULN is our Oracle Linux customer portal where we have extra channels with extra software bits for subscribers, or from public yum (public yum is an open, free, no registration, no subscription site). All Oracle Linux errata/packages are published on both sites at the same time. If you have a set of servers where support is not needed, just a standard Oracle Linux, and then a set of servers where you do need support because they're production systems etc, you can install OL on both and you subscribe for the systems you need to have support for. One distribution installed across the entire company. No need to find a free distribution and a pay to use distribution. If you no longer need support services for a system, don't worry, we won't ask you to de-install.
But wait, there's more..
How about managing Oracle Linux... well, included in Oracle Linux support subscriptions, is the use of Oracle Enterprise Manager 12c and Oracle Enterprise Manager OpsCenter 12. This is management software that can handle 1000's of servers from a single managed web-based interface. It offers features like :
this is all included, for no additional fee. Any server with Oracle Linux support subscriptions include the above. No extra pack, no per server additional fees. Or if you don't really care for that and just want a very simple yum based setup, you can do that as well, just grab the rpms, put them on a server, create a repository and have your servers connect to that. So, very basic and simple, to very complete and comprehensive. Same cost.
And there is even more...
Oracle Real Application Clusters makes use of the Oracle Clusterware(CRS). CRS is cluster software that is capable of protecting any kind of application in a failover cluster. Not just Oracle. It is the basis for any clustered environment and provides generic availability eliminating the need for other third party cluster solutions. You can protect your own application using this enterprise grade clustering stack. Without additional fees. It's included in Oracle Linux support subscriptions (basic/premier).. have your own nfs server? webserver? want to monitor it and restart it in a cluster no problem? Go for it. Using the exact same software we use for the most mission critical clustered systems. Want to run Oracle Linux virtualized? 1 guest? 10 guests? 20 guests? You only need one subscription per physical server and we don't charge more if you run 1 or more than 1. And how much for all this?
We also have a premier support subscription which adds the ability to use Oracle ksplice technology to apply your kernel security fixes online, while the system is running at full speed, while the applications are running, while the users are working, without downtime. And I mean apply, not just install. The installed fixes are instantly effective at runtime. zero reboots. zero downtime scheduling. zero administrative program/planning management.. Or premier backport support, critical fixes for a specific bug in the specific version of the rpm you run in a mission critical environment. Or lifetime support, now with virtualization more useful than ever before. Virtual hardware can remain the same for much longer than the support lifecycles.
See our store for pricing, and our Unbreakable Linux Network site for policies and references to the above.
Ok there you have it. Almost a novel but we just have that much to offer, and wait 'til I get to Oracle VM.. it just gets even better.
Financial Gateway
and
Global Payroll
To comply with the new Euro zone payments requirements and allow customers to leverage the value of a singular payments platform, PeopleSoft Global Payroll leverages the Financial Gateway, which is part of the Cash Management product within the PeopleSoft Financials suite.
The Financial Gateway is a robust and flexible payment hub that manages large volumes of payments, in several formats. One of the supported formats is the SEPA Credit Transfer. This solution will make SEPA implementation, compliance and maintenance easier over time, as more Euro zone payments will transition to SEPA rules in the future.
The SEPA (Single European Payment Area) project is an additional step in the construction of a unified European market, following the creation of the Euro Zone in 1999.The goal is to standardize the payment format used in cross border payments. This provides flexibility, security and reduced costs as well as enabling increased trade and investments in the SEPA area. The SEPA format was introduced in 2008 and will become mandatory for any Euro credit transfer from 2012 onwards. Direct Debit payment messages have also been introduced and will become mandatory in the coming years.
In order to reduce current and future SEPA changes impact on payroll processing, Oracle has fully leveraged the existing Financial Gateway capabilities to generate payment files and manage interactions with banks, while minimal changes have been implemented in the PeopleSoft Global Payroll product to prepare those payments.
The first SEPA update delivered by Oracle enables customers to manage:
The PeopleSoft Global Payroll product has been integrated with the Cash Management module from the PeopleSoft Financials Suite through PeopleTools Integration Broker 8.51.The PeopleSoft Global Payroll Core banking process prepares all the payment data, while the Financial Gateway feature from the Cash Management product will:
It is critical to provide audit support in any payment process. To support that effort, the integration between Global Payroll and the Financial Gateway provides the following:
I really thought I’d blogged about this before, but it appears not!
First of all, this isn’t something I’ve worked out, I’m just recycling something that John Beresniewicz (who seems to be better known as JB) shared during one of his presentations at the UKOUG Conference 2011. This wasn’t a big part of the presentation, but it jumped out at me as a gem of knowledge that I was unlikely to get from anywhere else. In fact, as I recall, John described how he only became aware of the functionality as a result of discussing what he was working on, and the problem he had, to a member of the database server development team at Oracle.
That nicely brings me to the usual, and very important, point about Oracle functionality that isn’t documented: It is not supported (unless someone from Oracle tells you otherwise).
So, did you know that as well as the GV$ views in an Oracle database there is a GV$ function?
Keeping it really simple to start with…
Selecting INSTANCE_NAME for all instances via GV$INSTANCE
SQL> select instance_name from gv$instance; INSTANCE_NAME ---------------- ORCL1 ORCL2 SQL>
Selecting INSTANCE_NAME for all instances via V$INSTANCE with the GV$ Function
SQL> select instance_name from TABLE(GV$(CURSOR(select instance_name from v$instance))); INSTANCE_NAME ---------------- ORCL1 ORCL2 SQL>
So, apart from being cool because it’s undocumented, what good is the GV$ function? Well, in the above example it is no use at all apart from allowing you to type more characters and confuse anyone that is looking over your shoulder!
However, what it is doing is executing the statement in CURSOR( ) on each instance in the cluster database and returning the results to the Query Coordinator (QC) session.
I don’t remember the specifics of what John was working on, but as I recall the issue was that, on the basis of performance, he didn’t want to retrieve all the relevant rows from two GV$ views in order to join them locally. I’ll try to demonstrate the point below using a join between [G]V$SQL and [G]V$SESSION
Preparation
The first step was to execute the same statement a number of times in each of my two instances.
Having obtained the SQL_ID for the statement the next step was to query the GV$ views in order to get some output – Note this is an artificially simple statement compared with where you would get a major benefit from this approach.
Querying GV$ Views
I’ve used autotrace as it’s a nice way to get the statement, results and execution plan without having to type/run too many commands…
SQL> select se.inst_id 2 , se.sql_id 3 , sq.executions 4 from gv$sql sq 5 , gv$session se 6 where se.sql_id = sq.sql_id 7 and se.inst_id = sq.inst_id 8 and se.sql_id = 'cw1knhbvzvdbf' 9 / INST_ID SQL_ID EXECUTIONS ---------- ------------- ---------- 1 cw1knhbvzvdbf 15 2 cw1knhbvzvdbf 10 Execution Plan ---------------------------------------------------------- Plan hash value: 3376983457 ---------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | ---------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 55 | 1 (100)| 00:00:01 | | | | |* 1 | HASH JOIN | | 1 | 55 | 1 (100)| 00:00:01 | | | | | 2 | PX COORDINATOR | | 1 | 34 | 0 (0)| 00:00:01 | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) | |* 4 | VIEW | GV$SQL | | | | | Q1,00 | PCWP | | |* 5 | FIXED TABLE FIXED INDEX | X$KGLCURSOR_CHILD (ind:2) | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 6 | PX COORDINATOR | | 1 | 21 | 0 (0)| 00:00:01 | | | | | 7 | PX SEND QC (RANDOM) | :TQ20000 | 1 | 99 | 0 (0)| 00:00:01 | Q2,00 | P->S | QC (RAND) | |* 8 | VIEW | GV$SESSION | | | | | Q2,00 | PCWP | | | 9 | NESTED LOOPS | | 1 | 99 | 0 (0)| 00:00:01 | Q2,00 | PCWP | | | 10 | NESTED LOOPS | | 1 | 86 | 0 (0)| 00:00:01 | Q2,00 | PCWP | | |* 11 | FIXED TABLE FULL | X$KSUSE | 1 | 60 | 0 (0)| 00:00:01 | Q2,00 | PCWP | | |* 12 | FIXED TABLE FIXED INDEX| X$KSLWT (ind:1) | 1 | 26 | 0 (0)| 00:00:01 | Q2,00 | PCWP | | |* 13 | FIXED TABLE FIXED INDEX | X$KSLED (ind:2) | 1 | 13 | 0 (0)| 00:00:01 | Q2,00 | PCWP | | ---------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("SQL_ID"="SQL_ID" AND "INST_ID"="INST_ID") 4 - filter("SQL_ID"='cw1knhbvzvdbf') 5 - filter("KGLOBT03"='cw1knhbvzvdbf') 8 - filter("SQL_ID"='cw1knhbvzvdbf') 11 - filter("S"."KSUSESQI"='cw1knhbvzvdbf' AND BITAND("S"."KSSPAFLG",1)<>0 AND BITAND("S"."KSUSEFLG",1)<>0) 12 - filter("S"."INDX"="W"."KSLWTSID") 13 - filter("W"."KSLWTEVT"="E"."INDX") Note ----- - statement not queuable: gv$ statement Statistics ---------------------------------------------------------- 12 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 753 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 2 rows processed SQL>
The next part was to use the GV$ funtion.
Querying V$ Views with GV$ Function
Running effectively the same statement with the GV$ function.
SQL> select * from TABLE(GV$(CURSOR(select i.instance_number inst_id 2 , se.sql_id 3 , sq.executions 4 from v$sql sq 5 , v$session se 6 , v$instance i 7 where se.sql_id = sq.sql_id 8 and se.sql_id = 'cw1knhbvzvdbf'))) 9 / INST_ID SQL_ID EXECUTIONS ---------- ------------- ---------- 1 cw1knhbvzvdbf 15 2 cw1knhbvzvdbf 10 Execution Plan ---------------------------------------------------------- Plan hash value: 1284594253 -------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 100 | 3400 | 1 (100)| 00:00:01 | | | | | 1 | PX COORDINATOR | | 100 | 3400 | 1 (100)| 00:00:01 | | | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | 100 | 4200 | 1 (100)| 00:00:01 | Q1,00 | P->S | QC (RAND) | | 3 | VIEW | | | | | | Q1,00 | PCWP | | | 4 | MERGE JOIN CARTESIAN | | 100 | 4200 | 1 (100)| 00:00:01 | Q1,00 | PCWP | | |* 5 | HASH JOIN | | 1 | 29 | 1 (100)| 00:00:01 | Q1,00 | PCWP | | | 6 | VIEW | V_$SQL | 1 | 21 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 7 | VIEW | V$SQL | 1 | 21 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 8 | VIEW | GV$SQL | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 9 | FIXED TABLE FIXED INDEX | X$KGLCURSOR_CHILD (ind:2) | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 10 | VIEW | V_$SESSION | 1 | 8 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 11 | VIEW | V$SESSION | 1 | 8 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 12 | VIEW | GV$SESSION | 1 | 21 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 13 | NESTED LOOPS | | 1 | 99 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 14 | NESTED LOOPS | | 1 | 86 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 15 | FIXED TABLE FULL | X$KSUSE | 1 | 60 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 16 | FIXED TABLE FIXED INDEX| X$KSLWT (ind:1) | 1 | 26 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 17 | FIXED TABLE FIXED INDEX | X$KSLED (ind:2) | 1 | 13 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 18 | BUFFER SORT | | 100 | 1300 | 1 (100)| 00:00:01 | Q1,00 | PCWP | | | 19 | VIEW | V_$INSTANCE | 100 | 1300 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 20 | VIEW | V$INSTANCE | 100 | 1300 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 21 | VIEW | GV$INSTANCE | 100 | 2600 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 22 | MERGE JOIN CARTESIAN | | 100 | 6000 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 23 | MERGE JOIN CARTESIAN | | 1 | 60 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 24 | FIXED TABLE FULL | X$KSUXSINST | 1 | 26 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 25 | BUFFER SORT | | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | |* 26 | FIXED TABLE FULL | X$KVIT | 1 | 34 | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 27 | BUFFER SORT | | 100 | | 0 (0)| 00:00:01 | Q1,00 | PCWP | | | 28 | FIXED TABLE FULL | X$QUIESCE | 100 | | 0 (0)| 00:00:01 | Q1,00 | PCWP | | -------------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 5 - access("SE"."SQL_ID"="SQ"."SQL_ID") 9 - filter("KGLOBT03"='cw1knhbvzvdbf' AND "INST_ID"=USERENV('INSTANCE')) 15 - filter("S"."KSUSESQI"='cw1knhbvzvdbf' AND "S"."INST_ID"=USERENV('INSTANCE') AND BITAND("S"."KSSPAFLG",1)<>0 AND BITAND("S"."KSUSEFLG",1)<>0) 16 - filter("S"."INDX"="W"."KSLWTSID") 17 - filter("W"."KSLWTEVT"="E"."INDX") 24 - filter("KS"."INST_ID"=USERENV('INSTANCE')) 26 - filter("KVITTAG"='kcbwst') Note ----- - statement not queuable: gv$ statement Statistics ---------------------------------------------------------- 6 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 753 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 6 sorts (memory) 0 sorts (disk) 2 rows processed SQL>
As you can see from the executions plans above:
I, for one, think that’s pretty cool
Note – In both cases the statements had previously been executed so the execution statistics don’t include the initial parse recursive calls… Just in case you were wondering.
Earlier i used to maintain different sql script files for one function for every database version. As some of the older release dont have some of columns available in new release’s view/tables. I started updating my scripts to maintain a single script using Tanel Poder’s snapper script’s idea of using SQL*Plus variables to automatically comment out the version specific code in the script (if its not applicable for logged in database version), so that it does not generate the syntax error.
So initialize the variables (_IF_ORA_9iR2_OR_HIGHER, _IF_ORA_10gR1_OR_HIGHER etc) with single line comment “–” and if version of logged in database is applicable, then remove the “–” from its value and set relevant variable to empty string (“”). I was doing this via my header.sql script which is called in every script. Later i moved that bit of code to login.sql, as i wanted it execute only during initial database connection instead of during every execution of every script.
For example, now i can use the following SELECT statement even on 9i databases where SQL_ID column does not exists in v$session view.
SELECT sid &_IF_ORA_10gR1_OR_HIGHER , sql_id from v$session
I used to get the version of logged in database using a query from v$version and parsing the output. I recently noticed that SQL*Plus by default sets given below variables in every sqlplus session at logon time. This also includes the _O_RELEASE which has the database version in it. Now i can make use of this variable, instead of querying from v$version and parsing the output myself.
In 9.2.x.x release
From 10gR1 onwards (all above and following)
See the output below from various version of SQL*Plus connection to their respective version databases. If sqlplus and database version are different, you will get the different values for _SQPLUS_RELEASE and _O_RELEASE variables, but you get the idea.
################# <strong>9204</strong> ######################## DEFINE _CONNECT_IDENTIFIER = "9204" (CHAR) DEFINE _SQLPLUS_RELEASE = "902000400" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production" (CHAR) DEFINE _O_RELEASE = "902000400" (CHAR) ################# 9206 ######################## DEFINE _CONNECT_IDENTIFIER = "9206" (CHAR) DEFINE _SQLPLUS_RELEASE = "902000600" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.6.0 - Production" (CHAR) DEFINE _O_RELEASE = "902000600" (CHAR) ################# 9207 ######################## DEFINE _CONNECT_IDENTIFIER = "9207" (CHAR) DEFINE _SQLPLUS_RELEASE = "902000700" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.7.0 - Production" (CHAR) DEFINE _O_RELEASE = "902000700" (CHAR) ################# 9208 ######################## DEFINE _CONNECT_IDENTIFIER = "9208" (CHAR) DEFINE _SQLPLUS_RELEASE = "902000800" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.8.0 - Production" (CHAR) DEFINE _O_RELEASE = "902000800" (CHAR) ################# 10103 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10103" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1001000300" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1001000300" (CHAR)</pre> ################# 10104 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10104" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1001000400" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1001000400" (CHAR) ################# 10105 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10105" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1001000500" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1001000500" (CHAR) ################# 10201 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10201" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000100" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1002000100" (CHAR) ################# 10202 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10202" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000200" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1002000200" (CHAR) ################# 10203 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10203" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000300" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production With the Partitioning, OLAP and Data Mining options" (CHAR) DEFINE _O_RELEASE = "1002000300" (CHAR) ################# 10204 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10204" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000400" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1002000400" (CHAR) ################# 10205 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "10205" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000500" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1002000500" (CHAR) ################# 11106 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "11106" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1101000600" (CHAR) ################# 11107 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "11107" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1101000700" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1101000700" (CHAR) ################# 11201 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "11201" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1102000100" (CHAR) ################# 11202 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "11202" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1102000200" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1102000200" (CHAR) ################# 11203 ######################## DEFINE _DATE = "17-MAY-12" (CHAR) DEFINE _CONNECT_IDENTIFIER = "11203" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR) DEFINE _SQLPLUS_RELEASE = "1102000300" (CHAR) DEFINE _EDITOR = "ed" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining, Oracle Database Vault and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1102000300" (CHAR)
Hope someone finds this useful.
Tuesday May 15th, Nieuwegein – The Netherlands: During an intense day and evening, close to 120 Forms developers and architects gathered for discussions, explorations and exchange of experience around the use of Oracle Forms and more importantly: the future of the current Forms applications, Forms-using organizations and Forms developers. Various scenarios, approaches and tools and technology stacks were discussed, hybrid landscapes sketched and pros and cons evaluated.
An interesting line up of international experts on Forms had joined their collective forces and minds to present the most complete overview of the Future of Forms available anywhere in the world today. From relatively new and specialized solutions such as OraPlayer and Yo!Forms to more proven (OraFormsFaces) and mature, architecturally driven future scenarios from PITSS and Oracle Consulting complemented with Forms modernization and integration stories as well as the official strategy from Oracle product management.
This article provides access to most presentations that were on offer during this day. Some other resources are listed as well.
Every speaker did a general presentation of about 30 minutes as an introduction to his or her special approach. Most speakers did a second presentation of 45 minutes in break out sessions to cover in more detail what was discussed briefly and as a teaser in the general session. Most speakers also did a hands-on, technical deep dive or Q&A session in the evening for an even more focused audience.
General sessionForms to Future – history, evolution, architecture and future – Lucas Jellema
Oracle Forms Product Strategy and Statement of Direction – Grant Ronald
To infinity and beyond: Extend the life of your Oracle Forms application by running your existing Forms from next generation technologies/platforms without migration – Mia Urman (and the video for the demo Mia showed: download 2Mb video)
Forms 11g, ADF and APEX: Co-existence in Enterprise Applications – Madi Serban
Rendering Forms to alternative platforms using YoForms – Oliver Tickell and Don Smith (slides for this presentation are not yet available)
JHeadstart: Real world experiences for migrating Forms to ADF – Steven Davelaar
Parallel Break-Out sessions
Modernizing Forms using Pluggable Java Components and the Forms Look and Feel project – François Degrelle (this session consisted of demo, Q&A and technical discussions; no slides are available)
JHeadstart: Real world more detailed experiences for migrating Forms to ADF – Steven Davelaar (this session was a more detailed rendition of the general session by Steven Davelaar; there is no specific slide set for this session)
Demonstrating YoForms – on your laptop/ smartphone – Oliver Tickell and Don Smith (slides for this presentation are not yet available)
Forms 11g, ADF and APEX: Co-existence in Enterprise Applications – Madi Serban
Note: this session also showcased a number of demonstrations, available on YouTube:
1) Recording a simple Oracle Forms scenario using the unique OraPlayer Toolbar ;
2) Using the OraPlayer generator wizard to Wrap the scenario file recorded in step 1 with a Java API, then import it into Jdeveloper to create an ADF DataControl;
3) Create a default page in ADF to attach to the Forms business logic – http://youtu.be/A8eYcHWcx7s ;
4) Running an ADF system that runs 2 seperate Oracle Forms scenario’s from ADF buttons and ADF text boxes binded to OraPlayer output parameters (Oracle forms wrapped by OraPlayer)
Additional Resources
Some additional resources around the Future of Forms are listed here:
Tweets on the Future of Forms event
Gartner Report on Oracle Forms modernization options
Oracle Forms Product Statement of Direction
Mia Urman’s blogpost on the 15th of May event
Lucas Jellema – The Future of Forms – Article in ODTUG Technical Journal, Q1 2012
Websites and blogs for speakers, solutions and vendorsOracle Forms Community – Pluggable Java Components & Java Beans; Library
PITSS.CON (Madi Serban)
YO!Forms (Oliver Tickell and Don Smith)
JHeadstart 11g Product Center on OTN
Oracle JHeadstart Blog (Steven Davelaar et al.)
AMIS Technology Blog (Lucas Jellema et al.)
OraFormsFaces (Wilfred van der Deijl)
Oracle is announcing the general availability of Oracle VM version 3.1. With this new release we have introduce many improvements, fixed bugs and added more functionality. Our main focus continues to be improved usability, faster and efficient deployment and additional support for backup and availability. In this post we will go over some of the interesting new additions in Oracle VM 3.1
Improved UsabilityIn this release we have made a significant upgrade to the user interface and the result is a new UI which requires less clicks and is laid out in a much more convenient way. Working closely with our customers we have reviewed all the wizards and made them simpler and much more intuitive. The opening screen of Oracle VM now includes the Quick Start Guide to help users get started and allow them to follow step by step to get their environment setup and ready to go.
We continue enhancing the user experience and trying to give the look and feel of a native application. In this release we also allow the user to simply drag and drop VMs from one server to another and servers from one cluster to another. This is made possible by using Oracle Application Development Framework.
<img width="626" height="373" src="data:image/jpeg;base64,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86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzo+3W//AD0T86wqKAN37db/APPRPzrzr4gftBxeBf2gvh54GGnLdjx5DqcpvvtWz7D9jhjkx5ew+Zv8zH3l24zznFdRXjP7Qfwg8ZeJfj38M/HPhK18M6kfBEWqxXVjq+qz6d9o+2QxRqUkitrj7uxiQVHb14UX7yvtr+Wg7M9B+Kn7VngD4K+JLbSfEmvGyvp7b7c6RWNzdpZW3mCL7TcvDG6W0G9tvmzlEyG+b5Wxm+LP22Phl4L+IUHhbUPEjrrNxfWemKINMvLm1W7uwDb27XMcTQJLIp3BGcHb8xAXmvGvi7+y38RPiB4l8Y6rp/8AwhVlJ8VPCkXhjxBb3Oo3M66CY2lUXFo4tl+1gxTyfu5Et/nVTvwTjyjxV8AfE3gD4w2XgPwxYahr2hXnj7w74lnv59F1NJLNLOGBJ1a5a1FiybIFcSLcl9xMXlszZBDWSjLq0v8Aya34LW4T0V49Ff8AC6+96H15pf7a/wAM9X+KkHgy38RyPr93eXWnW6f2XeLaXFxaxmS5jjujF9ndolB37ZDtOFOGIBd4X/bV+GHjCTV/sXiqERaLp8urTz3Nnc2lvPZROySXVvLLGqXMCspBlgZ0yV5+Zc/I/gX4G+J7r9oPwl4Jg06+uPB/hTxD4o1KXWn0TU7KRYNQguEAeS6tYrdmWWcqv2eaYSgh8Iqc6/hX/gmNrlx8NLzwvrk2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
Securing applications is complex because it involves providing the right level of visibility to auditors, application owners and developers. Application security has primarily been hard coded into applications and difficult to change. In addition, auditors have a difficult challenge verifying security controls for applications. The complexity has left applications vulnerable to fraud and audit violations. By taking a platform approach to application security, Oracle provides all of the components to address the application security value chain. See the embedded slides below.
A better waytosecureapps-finalv1 View more PowerPoint from OracleIDM
I was debugging some GlassFish code today. This one Admin Command needed to find out if a given node was local or remote. It is (obviously, clearly) impossible for the node to change this attribute during this command call. The code calls this method:
node.isLocal()
Now if you write a final getter method this is perfectly OK because the compiler will simply inline the code so that it becomes a simple variable access.
But NO WAY is that happening in this case. The "node" object is a proxy. The value needs to get processed through code that resolves tokens, etc. The stack shows 8 calls to get this value. So it is an expensive call.
I had a breakpoint in this method. It was called over TWENTY times by the same command! That's 152 or so pointless method calls.
What it needed was just ONE line of code:
boolean isLocal = node.isLocal();
雨が降らない限り週末は戸外で遊ばせることにしている我が家。週末の度に擦り傷が増えるちび怪獣。保育園の連絡帳には毎週月曜、「手足擦り傷」の文字が並ぶ。一昨日は階段で転んで顎に擦り傷、昨日は駐輪してあった自転車を倒して自分も転倒、後頭部に切り傷。念のため受診したら問題ないとのことだったが、後頭部の出血を見たときは一瞬頭が真っ白になってしまった。これからちび怪獣の大好きな水遊びの季節。ジャブジャブ池の季節だが怪我をしないか心配だ。
勉強の方はGrid Infrastructure関連の新機能の技術資料を読み込んでいる途中である。私の場合、実機をいじる機会がないためなかなか頭に入らない。技術資料を読めば読むほど、実機で確認したい事柄が増えていく。VMで構築すればいい話なのだが、時間がなくてどうにもならない。
Although it’s great fun to travel the world speaking at events such as Oracle Openworld, Collaborate and ODTUG KScope, Rittman Mead in the UK still consider the UK Oracle User Group Conference, held in Birmingham in November or December each year, to be our “home” conference and our main showcase for what we’ve been up to in the last year. Like most of the big annual conferences, the UKOUG event has multiple streams and the one we’re particularly interested in is the Business Intelligence and Data Warehousing stream, covering topics and products such as OBIEE, ODI, Essbase and Oracle OLAP, BI methodologies and the BI Applications.
Jon Mead is on the board of directors for the UKOUG, and both Jon and I have chaired the Business Intelligence & Reporting Tools SIG within the UKOUG in previous years. I’m particularly keen that we get some good, new and in-depth content around Oracle BI, DW and ETL for this year’s event, and I’d imagine papers on the following topics might go down well:
I’ll be putting a paper in on real-world use of the Exalytics In-Memory Machine, based on testing we’ll be doing over the summer along with feedback from customer PoCs. All speakers get a three-day pass to attend all of the other sessions, and if you get accepted you’ll be presenting at Europe’s biggest Oracle conference as well as knowing you’re contributing to a great event. There’s also a number of great social events and awards over the three days of the conference, and the photo below is of Debra Lilley (UKOUG President) and Lisa Dobson (Vice President) giving the awards whilst Vikki Lira (OTN and the ACE Program) stands in the foreground.
The call for papers website is here, and you’ve got until the 1st of June to get your abstracts in. Hopefully I’ll see some of you attend, and maybe present,
Related articles:
© Eddie Awad's Blog, 2012. |
Permalink |
Add a comment |
Topic: Links, Oracle |
Tags: bigdata
When you click on @_sites, as you can see below, the IDE lets you open the file registered under that namespace, in this case, "/macros/sites.ftl":
But I'm thinking that any FreeMarker support would be better if it were embedded in the HTML Editor.
That means, the following needs to happen:
The above gets you here, which is not perfect, but on the way to where it probably should be, i.e., HTML support within a FreeMarker editor:
Click to enlarge the image above to get a fuller perspective.
Oracle Apps Framework Here I will be sharing all the Oracle Applications Development Framework related articles
Item Type
Author
1
Puneet Rajkumar
1. Create a New Application
New > Applications > Fusion Web Application (ADF)
Application Name – HelloWorld
Directory -- (Jdev install dir)/jdeveloper/(project name)
Application Package Prefix – Demo.adf.helloworld
2. Create JSF page
You will see Model and ViewController in HelloWorld application. Now Click on ViewController and choose New
Web Tier > JSF > JSF Page
File Name – HelloWorld.jspx
Check “Create XML Document (*.jspx)”
Select “Blank Page” in “Initial Page Layout and Content” Section
Select “Automatically Expose UI Components in a New Managed Bean” in “Page Implementation” Section
3. Drag Decorative Box from Layout option available in Component Palate
4. Drag item of type “Input Text”, “Button” on the center face of decorativeBox from Common Components Section
5. Drag item of type “Output Text” on Top of decorativeBox from Common Components Section
6. Select “af:decorativeBox” then go to Property Pallete and Double Click “Panel Group Layout” in “Layout” Section
Select “af:panelGroupLayout – scroll” and set following property
Halign -- center
7. Select “top” then go to Property Pallete and Double Click “Panel Group Layout” in “Layout” Section
Select “af:panelGroupLayout – scroll” under “top” and set following property
Halign – center
8. Set Bind Action Property for commandButton
Double Click on commandButton that will open set Bind Action Property window as shown below
Click Ok and then Write Following Code in cb1_action() which you have created just now
public String cb1_action()
{ RichInputText inputText = getIt1();
String name = "Hello "+(String)inputText.getValue()+ "!!";
ot1.setValue(name);
return null;
}
9. following properties for commandButton, input text and outputText
Set Following Properties for inputText item
Label – Name
Id – it1
Set Following Properties for commandButton item
Id – Go
Action – cb1_action()
Text – Go
Set Following Properties for outputText item
Id – ot1
Value – Null (Blank)
InlineStyle -- color:Red; font-family:Georgia, 'Times New Roman', times, Serif; font-size:xx-large;
Color – Red
Font -- Georgia, 'Times New Roman', times, Serif
Size -- xx-large
10. Congratulation you have successfully finished. Test Your Work Your Hello World Page is Ready
1.
The tough challenge that seems to have been faced by this developer was that the ID, name and value passed into the procedure needed to be either applied as an update if the name existed, or else inserted as a new row. You might think you could just use MERGE, or maybe attempt the update, capturing the ID value with a RETURNING clause, then if that found no rows insert a new row using seq_somethings.NEXTVAL for the ID. But wait, that wouldn't be complicated enough, would it?
Here's the table:
create table something ( id integer not null constraint pk_something primary key , name varchar2(100) , publicsomething number default 0 not null );Here's what they came up with:Thanks Boneist for this. By the way she mentioned she counted 6 WTFs, "some more subtle than others". I'm not sure whether we're counting the stupid redundant brackets around the IF condition (drives me crazy), the novel 5-character indent or the design WTF in which the "name" column is expected to be unique but has no constraint or indeed index. I'm definitely counting SQLCODE || ': ' || SQLERRM though.