Skip to main content

The Exadata move

The move to Exadata and Cloud at Customer - Database: 


Why Exadata: 

Performance - Exadata is engineered to run the Oracle database, and we can now eliminate hardware as a cause of performance problems, eliminate storage latency issues.

Every feature of the Oracle Database - enough said.


Why Cloud at Customer: 

Alleviates problems with hardware and avoiding patching and hardware problems seems like a big win to me.
Data security: Unfortunately we have some very important information stored in our system and the cloud was not an option
Scalability: With PAAS we will be able to meet our horizontal scalability needs.

Interesting findings and other notes:


1) Maximum 8 VM's on the Exadata
2) Active / Active and RAC

Database conversion:
1) Character Set Conversion: https://docs.oracle.com/database/121/NLSPG/ch11charsetmig.htm#NLSPG983 there is a document and a utility (DMU), color me surprised. (https://www.oracle.com/technetwork/database/database-technologies/globalization/dmu/overview/index.html)

2) Varchar2 sizes and upgrade to greater than 4000 chars: With the conversion to avoid truncation we moved to 4000 char instead of bytes and extended our string size. MAX_STRING_SIZE

3) Moving nightly jobs to the database using dbms_scheduler: Ended up being quite easy, just the zipping we where doing needed a bit of effort.

4) Export import
5) Possible 18c upgrade


Comments

Popular posts from this blog

ADF sort of generic screen for tables with the same structure

We have a couple (about a hundred) of tables with the same structure (Code, Description, Create Date, Update Date). So I wanted to do something simple so that I did not have to create all these screens 1) EO   I created the EO based on one of the tables I had that had the above columns. I then Added a transient attribute called table name to my EO based on a groovy expression. (the expression needs to change as I am reading web tier stuff from the model layer but I will fix this later) I then generated a java class for my EO. And added the following overriden method to my newly created java class. protected StringBuffer buildDMLStatement(int i, AttributeDefImpl[] attributeDefImpl,   AttributeDefImpl[] attributeDefImpl2, AttributeDefImpl[] attributeDefImpl3, boolean b) {   StringBuffer statement = super.buildDMLStatement(   i, attributeDefImpl, attributeDefImpl2, attributeDefImpl3, b); return new StringBuffer(StringUtils.replace(statement.to...

MANIFEST.MF merge JDeveloper for an executable jar

Goto your project > properties. Then click on deployment in the menu. Edit or add a jar deployment profile. Fill in the details under jar options (select Include manifest and give it a main class name) Also remember that the merge functionality only works with a BLANK line at the end of the merge file. REALLY this caught me. My merge file contents: Class-Path: commons-codec-1.3.jar [...empty line here CRLF...]

Util code

public static MethodExpression getMethodExpression( String expr, Class returnType, Class[] argTypes){ FacesContext fc = FacesContext.getCurrentInstance(); ELContext elctx = fc.getELContext(); ExpressionFactory elFactory = fc.getApplication().getExpressionFactory(); return elFactory.createMethodExpression( elctx, expr, returnType, argTypes); } public static javax.faces.el.MethodBinding getMethodBinding( String expr, Class[] argTypes){ FacesContext fc = FacesContext.getCurrentInstance(); ELContext elctx = fc.getELContext(); return fc.getApplication().createMethodBinding(expr, argTypes); } SetPropertyListener listener = new SetPropertyListener( ActionEvent.class.getName()); listener.setFrom(link.getRoute()); listener.setValueExpression("to", JSFUtils.getValueExpression("#{pageFlowScope.route}", String.class)); action.addActionListener(listener); AdfFacesContext.getCurrentInstance().getPageFlowScope() .put("route", lin...