Feed aggregator

wait event ' buffer busy wait' on sys.aud$

Tom Kyte - Sat, 2017-05-06 09:06
Hi, In our prod database we could see more buffer busy wait events on query "insert on sys.aud$" table? Can you explain why buffer busy wait occurred on sys.aud$ table and how to avoid ?
Categories: DBA Blogs

How to identify the total number of distinct blocks (LIO) read by a particular SQL? Is it possible at all?

Tom Kyte - Sat, 2017-05-06 09:06
Hi, There are various ways to easily identify the LIO for SQL execution as a primary measure for performance analysis. As many of the index and table blocks are usually read multiple times over and over again for SQL execution, is there a way t...
Categories: DBA Blogs

char vs varchar2 when end result is filxed format value

Tom Kyte - Sat, 2017-05-06 09:06
We have a temporary table with about 500 columns that is used to generate a fixed format file (.txt). If we use all char fields, we can just build the data as field1 || field2 || field3 ... field500 If we use varchar2 we have to rpad each fiel...
Categories: DBA Blogs

The Hello World of Machine Learning – with Python, Pandas, Jupyter doing Iris classification based on quintessential set of flower data

Amis Blog - Sat, 2017-05-06 01:58

imagePlenty of articles describe this hello world of Machine Learning. I will merely list some references and personal notes – primarily for my own convenience.

The objective is: get a first hands on exposure to machine learning – using a well known example (Iris classification) and using commonly used technology (Python). After this first step, a second step seems logical: doing the same thing with my own set of data.

Useful Resources:

Starting time: 6.55 AM

6.55 AM Download and install latest version of Oracle Virtual Box (5.1.22)

7.00 AM Download Fedora 64-bit ISO image (https://getfedora.org/en/workstation/download/)

7.21 AM Create Fedora VM and install Fedora Linux on it from ISO image (create users root/root and python/python); reboot, complete installation, run dnf update (updates worth 850 MB, 1348 upgrade actions – I regret this step), install Virtual Box Guest Addition (non trivial) using this article: https://fedoramagazine.org/install-fedora-virtualbox-guest/.

8.44 AM Save a Snapshot of the VM to retain its fresh, mint, new car smell  condition.

8.45 AM Install Python environment for Machine Learning (Python plus relevant libraries; possibly install Notebook server)

8.55 AM Save another snapshot of the VM in its current state

now the environment has been prepared, it is time for the real action – based on the second article in the list of resources.

10.05 AM start on machine learning notebook sample – working through Iris classification

10.15 AM done with sample; that was quick. And pretty impressive.


It seems the Anaconda distribution of Python may be valuable to use. I have downloaded and installed: https://www.continuum.io/downloads .

Note: to make the contents of a shared Host Directory available to all users

cd (go to home directory of current user)

mkdir share (in the home directory of the user)

sudo mount -t vboxsf Downloads  ~/share/ (this makes the shared folder called Downloads in Virtual Box Host available as directory share in guest (Fedora)

Let’s see about this thing with Jupyter Notebooks (fka as IPython). Installing the Jupyter notebook is discussed here: https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch01/README.md . Since I installed Anaconda (4.3.1 for Python 3.6) I have the Jupyter app installed already.

With the following command, I download a number of notebooks:

git clone https://github.com/rhiever/Data-Analysis-and-Machine-Learning-Projects

Let’s try to run one.

cd /home/python/Data-Analysis-and-Machine-Learning-Projects/example-data-science-notebook

jupyter notebook ‘Example Machine Learning Notebook.ipynb’

And the notebook opens in my browser:


I can run the notebook, walk through it step by step, edit the notebook’s contents and run the changed steps. Hey mum, I’m a Data Scientist!

Oh, it’s 11.55 AM right now.


Some further interesting reads to get going with Python, Pandas and Jupyter Notebooks – and with data:

The post The Hello World of Machine Learning – with Python, Pandas, Jupyter doing Iris classification based on quintessential set of flower data appeared first on AMIS Oracle and Java Blog.

DBFS and XAG for Goldengate P1

Michael Dinh - Fri, 2017-05-05 16:53

What’s the difference between the 2 GoldenGate configurations below.

$ $GRID_HOME/bin/agctl config goldengate gg_xx

GoldenGate location is: /u03/gg/12.2.0
GoldenGate instance type is: target
Configured to run on Nodes: arrow1 arrow2
ORACLE_HOME location is: /u01/app/oracle/product/12.1.0/db_1
Databases needed: ora.emu1.db
File System resources needed: dbfs_mount
Extracts to monitor: 
Replicats to monitor: 
Critical extracts: 
Critical replicats: 
Autostart on DataGuard role transition to PRIMARY: no
Autostart JAgent: no

$ $GRID_HOME/bin/agctl config goldengate gg_xx

GoldenGate location is: /u03/gg/12.2.0
GoldenGate instance type is: target
Configured to run on Nodes: hawk1 hawk2
ORACLE_HOME location is: /u01/app/oracle/product/12.1.0/db_1
File System resources needed: dbfs_mount
Extracts to monitor: 
Replicats to monitor: 
Critical extracts: 
Critical replicats: 
Autostart on DataGuard role transition to PRIMARY: no
Autostart JAgent: no

Here are how they are added:

# $GRID_HOME/bin/agctl add goldengate gg_xx \
--instance_type target \
--oracle_home /u01/app/oracle/product/12.1.0/db_1 \
--nodes hawk1,hawk2 \
--network 1 --ip \
--user ggsuser --group dba \
--filesystems dbfs_mount \
--gg_home /u03/gg/12.2.0 \
--databases ora.emu1.db

# $GRID_HOME/bin/agctl add goldengate gg_xx \
--instance_type target \
--oracle_home /u01/app/oracle/product/12.1.0/db_1 \
--nodes arrow1,arrow2 \
--network 1 --ip \
--user ggsuser --group dba \
--filesystems dbfs_mount \
--gg_home /u03/gg/12.2.0 

One is actually source from Database and the other is target User Exits.
But, but, but –instance_type is target for both.
That’s right (meaning your observation is correct) – hehe
Bad implementation – don’t do that.

instance_type – OGG source or OGG target (source, target) (dual is bi-directional)

$XAG_HOME/bin/agctl add goldengate lax_ggate \
--gg_home /acfsmount/ggs112 \
--instance_type dual \
--nodes rac01,rac02 \
--vip_name lax-ggate1-vip \
--filesystems ora.dg_acfs.vg_acfs.acfs \
--databases ora.emu.db \
--oracle_home /u01/app/oracle/product/ \
--monitor_extracts ELAX,PLAX_DEN \
--critical_extracts ELAX,PLAX_DEN \
--monitor_replicats RDEN_LAX \
--critical_replicats RDEN_LAX

Why agctl is called from $GRID_HOME in one and $XAG_HOME in another?

$ $GRID_HOME/bin/agctl query releaseversion
The Oracle Grid Infrastructure Agents release version is 3.1.0

$ $GRID_HOME/bin/agctl query deployment
The Oracle Grid Infrastructure Agents deployment is bundled

agctl from GRID_HOME is bundled with install, but older version.
agctl from XAG_HOME is standalone, downloaded and installed from

Oracle Grid Infrastructure Standalone Agents for Oracle Clusterware 11g Rel. 2, 12c Rel. 1 and 12c Rel. 2

deadlock question

Tom Kyte - Fri, 2017-05-05 14:46
Hi, Forgive my pool english,I try my best to make my question clear. I think deadlock only accured in a tansaction ,etc, session 1 session 2 start transaction ...
Categories: DBA Blogs

how to concate rows into select

Tom Kyte - Fri, 2017-05-05 14:46
Hi Tom, <code>create table test3 (name varchar2(10), sub varchar2(10), marks number ); insert into test3 values('joe','maths',90); insert into test3(sub,marks) values('social',80); insert into test3(sub,marks) values('science',70); ...
Categories: DBA Blogs

Show rows where the running total is zero and all preceding rows

Tom Kyte - Fri, 2017-05-05 14:46
Hi Team, Data Setup: <code>create table test_item as with t1 as ( select 1 category, 'abc' Item_name,100 item_volume,12.3 item_price,to_date('04-may-2017 12:22:33 AM','dd-mon-yyyy hh:mi:ss AM') time from dual union select 1,'abc' ,-100 ,1...
Categories: DBA Blogs

Tables not visible based on Role

Tom Kyte - Fri, 2017-05-05 14:46
Hi In my Project, we have created two users 1) admin 2) Report One Role: Reporting Role Reporting role is granted to Report user. Now all the tables are created using admin user and select access is granted to reporting Role. N...
Categories: DBA Blogs


Tom Kyte - Fri, 2017-05-05 14:46
Hi Team, I have a requirement to generate audit report on a parent-child table. We are capturing changes to the tables using trigger. But when I am using the audit tables to reconstruct the history I am getting phantom rows which never existed in...
Categories: DBA Blogs

List of “Dashboard” Startups and Products

Nilesh Jethwa - Fri, 2017-05-05 14:14

The idea of building a dashboard application has become synonymous to the idea of a developer thinking let us build a "To-do" application.

This is evident by the sheer amount of dashboard related applications that developers/founders have submitted to Hacker News over the past several years.

The dashboards range from wide spectrum, on one side to personal dashboards, project management dashboards, network dashboards to full blown social media dashboards.

If you are looking to build the next dashboard application or just shopping, it is very interesting to look at all the "Show HN" Dashboard submissions

Read more at http://www.infocaptor.com/dashboard/list-of-dashboard-startups

I'm On a New Blog Platform!

Shay Shmeltzer - Fri, 2017-05-05 12:15

This happens every several years, our blogging platform at Oracle is switching to a new environment, and my blog is one of those moving. In the next few days I'll be testing to see if content migration did its magic and everything works.

If you run into any broken entries/links/samples please drop me a line or just comment on the specific blog entry, and I'll try to fix things.

Categories: Development

Golden Gate 12c and DIY Sequence Replication with PL/SQL

Amis Blog - Fri, 2017-05-05 10:58

Recently, while migrating AIX 11gR2 Databases to Oracle Linux 12cR1 on an ODA X5-2, our setup of Sequence Replication by Oracle Golden Gate appeared to be faulty. The target side sequences were not automatically incremented.

The problem came to light during the migration of acceptance databases, and under some time pressure it was devised to generate drop + create statements ( start with = DBA_SEQUENCES.LAST_NUMBER + DBA_SEQUENCES.INCREMENT_BY ) of all sequences in the Source, and to run these statements on the Target. Although this eventually resulted in the desired result, there were 2 side effects:

    With a total of 1270 sequences, the operation as a whole took more than an hour.
    Packages and triggers referencing these sequences became invalid.

Further research revealed that the Golden Gate Sequence Replication of Production suffered the same problem and I wondered if I could find a better solution with now a bit more time at hand. Well, I discovered that to set any desired sequence “currval” value, a one-time temporary adjustment of the increment and subsequent call to the sequence “nextval” pseudo column is sufficient. What follows is the output of a quick test, but check out what happens with “USER_SEQUENCES.LAST_NUMBER”, and what it really means in combination with the cache.

Create a test sequence

-- the sequence returns no current value yet
  ORA-08002: sequence TEST_SEQ_01.CURRVAL is not yet defined in this session.

-- check out last_number... it equals nextval because the cache doesn't exist yet
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01'; 
  10	      1000	       20	        10

-- generate the first number and create the cache

-- last_number is updated as the highest possible number of the cache
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01';
  10	      1000	       20	        20010

-- and now a current value is returned

Set the current sequence value = 20000 without recreating the sequence

-- adjust the increment

-- last_number equals the sequence next value
-- the last "alter sequence" command must have flushed the cache
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01';
  10	      19990	       20	        20000

-- generate the next value and create a new cache

-- last_number is updated as the highest possible number of the cache
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01';
  10	      19990	       20	        419800

-- the sequence has the desired current value

Reset the increment

-- set the increment_by value back to original

-- again, the cache is flushed and last_number equals the next value
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01';
  10	      1000	       20	        21000

-- generate the next value and create a new cache

-- last_number is updated as the highest possible number of the cache 
FROM user_sequences 
WHERE sequence_name = 'TEST_SEQ_01';
  10	      1000	       20	        41000

-- the increment is back to 1000

This test shows that “USER_SEQUENCES.LAST_NUMBER”:

  • Is identical with sequence “nextval” directly after a “create sequence” or “alter sequence” command, because the cache is not there yet after first definition or gets flushed with an alter.
  • Is updated and saved to disk as the highest possible cache number after a call to “nextval”.
  • Serves as safeguard ( i.e. after a crash ) to ensure that sequence numbers do not conflict with numbers previously issued.

  • I decided to use “DBA_SEQUENCES.LAST_NUMBER” instead of the “currval” pseudo column to compare sequences in Source and Target. The reason is that “currval” is only ( and by definition ) the value returned by my sessions last call to “nextval”. If my session has not called “nextval” yet, “currval” is undefined. So I would have to “nextval” 1270 sequences in Source and also in Target before I could even start with the comparison, while last_numbers are already there to compare with. Also, this activity is unwanted during the short inactive Source and inactive Target migration stage and would take too much time. Last but not least, an exact match of sequence “currval” values is not really necessary… a guarantee of higher sequence “currval” values in Target compared to those in Source is quite enough.

    The next short piece of code is what I eventually came up with and used in the Production migration. It took less than 3 minutes processing time, did not render any Oracle object invalid, and contributed highly to a very limited migration inactivity time.

    -- Code assumes:
    --   1. "nocycle" sequences with positive "increment_by" values
    --   2. identical number of sequences and sequence DDL in Source and Target Database 
    -- Grant 'alter any sequence' and 'select any sequence' to the owner
    -- Replace the database link and schema names with your own
    -- Run the code from Target
      v_ret PLS_INTEGER := 0;
      v_dummy VARCHAR2(100);
      v_ln number := 0;
      v_ib number := 0;
      v_cz number := 0;
      v_incr number := 0;
      for i in ( select sequence_owner  so
                      , sequence_name   sn
                      , last_number     ln
                      , increment_by    ib
                      , cache_size      cz 
                 from dba_sequences@<DBLINK_FROM_SOURCE2TARGET>
                 where sequence_owner in ('<SCHEMA01>','<SCHEMA02>','<SCHEMA03>','<SCHEMA04>') )
          select last_number
               , increment_by 
               , cache_size
            into v_ln
               , v_ib
               , v_cz 
          from dba_sequences
          where sequence_owner = i.so
            and sequence_name = i.sn;
    -- set the difference in last_numbers as increment if target.last_number < source.last_number
          if v_ln < i.ln then
            v_incr := i.ln - v_ln;
    -- set the cache as increment if last_numbers match  
          elsif v_ln = i.ln then
            v_incr := v_ib * v_cz;
          end if;
          if v_ln <= i.ln then    
            execute immediate 'alter sequence '||i.so||'.'||i.sn||' increment by '||v_incr;
            execute immediate 'select '||i.so||'.'||i.sn||'.nextval from dual' into v_dummy;
            execute immediate 'alter sequence '||i.so||'.'||i.sn||' increment by '||v_ib;
            v_ret := v_ret +1;
          end if;
      end loop;
      dbms_output.put_line('Nr. sequences adjusted: '||v_ret);

    The post Golden Gate 12c and DIY Sequence Replication with PL/SQL appeared first on AMIS Oracle and Java Blog.

    Setting up Redo Transport With Standby's for ZDLRA with EM 13.2

    Fuad Arshad - Fri, 2017-05-05 10:00
    Oracle ZDLRA or Zero Data loss Recovery Appliance allows for transporting redo from the protected database and stores it securely inside the Recovery Appliance. This allows for near zero Recovery Point Objectives to be met.
    Setting up Real time redo Transport involves setting up a wallet and redo_transport_user  parameter to the virtual private catalog user as well as definition and archive log destination that points to the Recovery Appliance . This allows redo to be shipped to the Appliance and Stored for future restores and recoveries.
    If the Database Environment does not have an associated Standby , this procedure is very simple and Enterprise manager can handle the setup or it can be done easily via command line as described here in the documentation. Since we are changing the redo_transport_user , this brings in some interesting considerations for standby databases. 
    The Default Behavior for redo shipping to a standby database  uses sys as the user that is used for transport and apply unless  there is a value in redo_transport_user.   The REDO_TRANSPORT_USER database initialization parameter can be used to select a different user password for redo transport authentication by setting this parameter to the name of any user who has been granted the SYSOPER privilege. This User will need to be created in the protected database and needs to be exactly the same as the Virtual Private Catalog user that has been created on the Recovery Appliance Catalog. The procedure to setup a protected database that is a part of a dataguard configuration is detailed in the Whitepaper here.
    With Enterprise Manager 13.2 this procedure has now been automated and is accessible via the Data guard administration menu

    In the Dataguard Administration screen you will see a button to add the Recovery Appliance

    The Add Recovery Appliance screen will ask you for the Recovery Appliance to configure with this protected database and since this is a standby will provide details on what will happen

    You will need to provide Host credentials for the Primary and Standby Databases. This will result in a Job being submitted to perform the tasks

    You can then view the Status of this procedure

    The End result will be the Protected Database as well as the Standby Database configured along with the Recovery Appliance.

    The Enterprise Manager team is hard at working on developing new features and hopefully this new feature will allow for easier and faster configurations of Protected Databases that also have a standby associated with them. 

    Getting the Database Backup Report for all Monitored Targets in Enterprise Manager

    Arun Bavera - Fri, 2017-05-05 09:05
    Use the following query in BIP:

    SELECT DATABASE_NAME                                  AS CONFIGURATION_TARGET_NAME    ,
     host                                                                                                                                            AS HOST_NAME                              ,
    'DB Backup Status'                                                                                                                        AS CONFIGURATION_STANDARD                ,
    status                                                                                                                                                AS ACTUAL_VALUE             ,
        CASE    WHEN ( mgmt$ha_backup.status = 'COMPLETED' AND round(sysdate-end_time)<=1 ) THEN 'YES'
                ELSE 'NO'
        output_device_type ,
    TO_CHAR(end_time,'YYYY-MM-DD HH24:MI:SS')                                                                            AS COLLECTION_DATE                                ,
        TO_CHAR(start_time,'YYYY-MM-DD HH24:MI:SS') START_TIME,
        TO_CHAR(end_time,'YYYY-MM-DD HH24:MI:SS') END_TIME,
        round(sysdate-end_time) LATEST,
        TIME_TAKEN_DISPLAY TimeTaken,
    FROM   mgmt$ha_backup
                                  from   mgmt$target_flat_members,
                                  where  member_target_type in ( 'rac_database' ,'oracle_database')
                                  and    aggregate_target_name = 'Prod-Grp'
                                  AND   mgmt$target_flat_members.MEMBER_TARGET_NAME = mgmt$target_properties.target_name
                                  AND   mgmt$target_flat_members.member_target_type = mgmt$target_properties.target_type
                                  AND   mgmt$target_properties.property_name = 'OpenMode'
                                  AND   mgmt$target_properties.property_value= 'READ WRITE'
                                  SELECT   s1.target_name
                                          MGMT$TARGET s5                 ,
                                          GC$ASSOC_INST_WITH_INVERSE s5a1,
                                          MGMT$TARGET s1
                                  WHERE  (   s5a1.SOURCE_ME_GUID = s1.TARGET_GUID
                                              AND s5a1.DEST_ME_GUID   = s5.TARGET_GUID
                                              AND s5.TARGET_TYPE      = 'rac_database'
                                              AND s5a1.ASSOC_TYPE     = 'member_of_cluster'
                                          AND s1.TARGET_TYPE = 'oracle_database')

    Categories: Development

    remote transaction timeout

    Laurent Schneider - Fri, 2017-05-05 08:08

    If you access one table via database link and the row is locked, you may get a timeout

    SQL> update emp@l set sal=sal+1
    where ename='SCOTT';
    1 row updated.
              SQL> update emp@l set sal=sal+2 
              where ename='SCOTT';
              update emp@l set sal=sal+2 
              ERROR at line 1:
              ORA-02049: timeout: distributed 
              transaction waiting for lock
              ORA-02063: preceding line from L
              Elapsed: 00:01:00.00
    SQL> sho parameter distr
    NAME                        VALUE
    --------------------------- -------
    distributed_lock_timeout    60

    This timeout (default 60 seconds) could be tuned, maybe to 300 seconds, if you are doing huge remote transactions

    But what if you don’t want to wait one minute to get an exception? Lock the row before update then !

              SQL> select ename, sal from emp@l
              where ename='SCOTT' 
              for update wait 2;
              select ename, sal from emp@l
              ERROR at line 1:
              ORA-30006: resource busy; 
              acquire with WAIT timeout expired
              ORA-02063: preceding line from L
              Elapsed: 00:00:02.01

    If you want to wait only 2 seconds and not one minute, or even NOWAIT (0 second), then lock the row first. Depending on your application, waiting one minute to get an exception may be unacceptable

    Video: The Moon, Jupiter, and Beyond: JavaFX and the Final Frontier

    OTN TechBlog - Fri, 2017-05-05 07:00

    Software development isn't rocket science -- except when it is.

    Sean Phillips, principal software engineer with A.I. Solutions, based in Washington DC, has his head beyond the clouds in his work with NASA's Goddard Space Flight Center. Sean specializes in data visualization and
    data analysis using Java and Java-based technologies, including JavaFX.

    Sean and the A.I. Solutions team developed a tool called the Deep Space Trajectory Explorer, which is used to design trajectories for deep space missions. Sean describes that work in this short DevLIVE interview recorded at the Oracle Code event held in Washington DC on March 27, 2017.

    If you'd like a more in-depth exploration of Sean's work, he will present a keynote session at the Oracle Code event in Atlanta on June 22, 2017. You'll find more information about the Atlanta event here.

    In the meantime, Sean suggests you check out two videos produced by A.I. Solutions that explain what the Deep Space Trajectory Explorer does:

    Additional Resources



    Recommended Approach for Oracle E-Business Suite 12.2 Mobile and Web Services Security

    This is the eleventh and final posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.

    Deploying Internet-based Oracle E-Business Suite web services requires proper configuration of the URL Firewall, both the url_fw.conf and url_fw_ws.conf and the use of a WAF – ideally the Oracle API Gateway. This recommendation applies equally to all whose only use of web services is the Oracle Supplier Network (OSN). One opening of the attack surface exposed to the Internet exposes the entire Oracle E-Business Suite.

    For Mobile and Smartphone applications, due to the overall complexity and additional license requirements, it is recommended to continue using VPN for deployment instead of using an External Node. 

    If you have any questions, please contact us at info@integrigy.com

    -Michael Miller, CISSP-ISSMP, CCSP, CCSK

    Web Services, DMZ/External, Oracle E-Business Suite
    Categories: APPS Blogs, Security Blogs

    Oracle VM Virtual Appliance for E-Business Suite 12.2.6 Now Available

    Steven Chan - Fri, 2017-05-05 02:00

    I am pleased to announce that the Oracle VM Virtual Appliance for E-Business Suite Release 12.2.6 is now available from the Oracle Software Delivery Cloud.

    Oracle Software Delivery Cloud

    You can use this appliance to create an Oracle E-Business Suite 12.2.6 Vision demonstration instance on a single, unified virtual machine containing both the database tier and the application tier.

    Compatible with Oracle VM Manager and Oracle VM VirtualBox

    This virtual appliance can be imported into Oracle VM Manager to deploy an E-Business Suite Linux 64-bit environment on compatible server-class machines running Oracle VM Server. It can also be imported into Oracle VM VirtualBox to create a virtual machine on a desktop PC or laptop. 

    Includes the Entire EBS Technology Stack 

    The virtual appliance delivers the full software stack, including the Oracle Linux 6.9 (64-bit) operating system, Oracle E-Business Suite, and additional required technology components. The embedded technology components are listed below:

    Component Version RDBMS Oracle Home Application Code Level Oracle E-Business Suite 12.2.6 Release Update Pack (My Oracle Support Knowledge Document 2114016.1) + AD and TXK Delta 8 (My Oracle Support Knowledge Document 2159750.1) Oracle Forms and Reports WebLogic Server 10.3.6 Web Tier JDK JDK 1.7 build 1.7.0_121-b15 Java Plugin J2SE 1.7 Critical Patch Update (CPU) October 2016

    Note: If you wish to deploy an Oracle E-Business Suite 12.2.6 virtual machine on the Oracle Public Cloud, we provide specialized images for that purpose.  Review the article EBS 12.2.6 Images Now Available in Oracle Cloud Marketplace on our sister blog Oracle E-Business Suite and Oracle Cloud for more information.


    Related Articles

    Categories: APPS Blogs

    Scripting Languages and Oracle Database Cloud: How To Do it

    Christopher Jones - Fri, 2017-05-05 00:50

    Oracle Cloud is a great fit for your application deployment.  Say no more! I've just published some how-to's on using scripting languages like Node.js, Python, PHP, R and Ruby with Oracle Database Cloud and with the PaaS "Oracle Database Express Cloud Service".  You can use any of the mentioned languages, use other OCI or OCCI-based languages, or take advantage of the Application Container Cloud Service to deploy of Node.js and PHP applications:



    Subscribe to Oracle FAQ aggregator