Named Notation and SEM_MATCH Table Function

This is a short post about a strange behavior I discovered today…

The fact is that it is not really possible to use the named notation with the SEM_MATCH table function. In fact, even though the parameter’s names can be specified, the order of the parameters overrides the specification done with the named notation!?!

Here is an example:

  • With positional notation everything works as expected
SQL> SELECT count(*)
  2  FROM table(
  3    sem_match('SELECT * WHERE { GRAPH :gCH { ?s ?p ?o } }',
  4              sem_models('SEMDEMO_WORK'),
  5              NULL,
  6              sem_aliases(sem_alias(NULL,'http://www.semwebtech.org/mondial/10/meta#')),
  7              NULL
  8    )
  9  );

  COUNT(*)
----------
       601
  • The named notation seems to be supported… (notice that the parameters are specified in the same order as they are defined in the table function)
SQL> SELECT count(*)
  2  FROM table(
  3    sem_match(query     => 'SELECT * WHERE { GRAPH :gCH { ?s ?p ?o } }',
  4              models    => sem_models('SEMDEMO_WORK'),
  5              rulebases => NULL,
  6              aliases   => sem_aliases(sem_alias(NULL,'http://www.semwebtech.org/mondial/10/meta#')),
  7              filter    => NULL
  8    )
  9  );

  COUNT(*)
----------
       601
  • … but when the parameters are not specified in the same order as they are defined (the RULEBASES and ALIASES parameters were swapped), a PLS-00306 is raised!
SQL> SELECT count(*)
  2  FROM table(
  3    sem_match(query     => 'SELECT * WHERE { GRAPH :gCH { ?s ?p ?o } }',
  4              models    => sem_models('SEMDEMO_WORK'),
  5              aliases   => sem_aliases(sem_alias(NULL,'http://www.semwebtech.org/mondial/10/meta#')),
  6              rulebases => NULL,
  7              filter    => NULL
  8    )
  9  );

SELECT count(*)
*
ERROR at line 1:
ORA-06550: line 4, column 13:
PLS-00306: wrong number or types of arguments in call to 'ODCITABLEDESCRIBE'
ORA-06550: line 4, column 6:
PL/SQL: Statement ignored

As a result, even though using the named notation is better for readability, the order of the parameters cannot be changed! I’m puzzled.

How Movies Have Shaped UI

Last week, in a meeting, we got on the subject of Terminator vision. For the uninitiated, here’s what that looked like in Terminator 2: Judgement Day:

terminator_vision-600x224

Image from Orion Pictures, Terminator 2: Judgement Day

If you recall, Robocop had a similar overlay readout:

Image from Orion Pictures

Image from Orion Pictures, Robocop

So, for about 25 years, Hollywood has been seeding this vision (ha, pun) of augmented reality, i.e. an overlay of real-time information about visible objects in a heads-up display. Technology has been realizing this vision over the past decade, with Google Glass poised being the most recent, and most polarizing, iteration.

This post isn’t about Glass, though, it’s about how Hollywood, essentially art, has been driving our interfaces for a really long time.

And then came Minority Report, which upped the ante by showing a (dystopian) view where technology dances and jumps around the room at the flick of a wrist.

Kinect-Minority-Report-UI-2

Image from Twentieth Century Fox, Minority Report

Not too dissimilar from the experience provided by Microsoft’s Kinect, minus the gloves.

At this point, I need to backtrack and mention another film, The Matrix, which goes even further, by providing training directly to the brain (“I know kung fu.”) and altering human perception to see the non-augmented (and more dystopian), reality and manipulate it.

keanu-reeves-action-star

Image from Warner Brothers, The Matrix

Earlier this year, I read an interesting post about this very effect and its impact on modern interface design, How ‘Minority Report’ Trapped Us In A World Of Bad Interfaces. An interesting read, with a money quote:

The reality is, there’s a huge gap between what looks good on film and what is natural to use.

As we close the gap between art and technology, real physiological and usability issues emerge. Arms and shoulders get tired when they’re constantly in motion. Try shadow-boxing for a minute with no breaks and see how you feel. Then strap on 16-ounce gloves (competition weight) and compare. It gives you a new respect for boxing.

This is why, aside from chin down, hands up, the most common coaching mantra is, elbows in, relax your shoulders. Even then, it’s tiring. Floyd (@fteter) knows.

It seems odd, but one of the biggest challenges for interface designers is reeducating people on how interfaces should work, since we can’t any longer say they can’t work that way.

Anyway, food for thought. I’m sure I’ve missed a bunch of other influential movies, and let’s leave the discussion of what Hollywood thinks hackers can do for another day.

Find the comments.Possibly Related Posts:

Oracle Database Load Testing Tools – Overview

Someone just asked at Pythian’s internal forum the following question: “The team here is evaluating DB load testing tools (Hammerdb, Orion, SLOB, and Swingbench) and was wondering about our experience in using different tools and what is our opinion?” I have experience using some the tools mentioned. Therefore decided to answer using this public blog post as it could be useful for you too and easier for me to reference it in the future :)

Right tool for the right job

Most of the load testing tools could be grouped in the following categories:

  • IO subsystem testing tools
  • RDBMS Level testing tools
  • Application Level testing tools (DB Side)
  • Application Level testing tools (Apps Side)

Each of the next categories addresses the wider range of business testing problems/tasks. However each of the next category will requiter slightly more resources and involves a bit more challenges. You should clearly define your testing goals before starting to consider the right tool for the job. I would suggest that you consider tolls from the first category first than move to next category if tools in the first category doesn’t satisfy your business requirements. I hope that the overview will give you enough input to start putting your testing plans together.

IO subsystem testing tools

Those tools are easy to configure and run. However those are doing nothing but sending “simple/meaningless/no real data” IO requests to a storage device and measure response times. Most tools have the abilities to run read only tests, read write tests, random IO tests, sequential IO test, increase readers/writers count, warm up storage’s cache, and do a mixture of test mentioned.

Pros:

  • Easy to run
  • Short  learning curve ( add 2-4 hours to first few runs for an initial learning)
  • Low budget (4-16 hours should be enough for a testing project)
  • Easy to get and reproduce results
  • Easy to compare results with other platform

Cons:

  • May not represent your RDBMS or Application IO patterns
  • Doesn’t test anything else but Physical IO (fair enough)

Representatives:

  • orion (ORacle IO Numbers) – This tool is developed and maintained by Oracle. it is part of the latest Oracle DB distributions (e.g. 11.2.0.3). Orion was created to to test Oracle DB IO workload. It uses some of the typical system calls that Oracle database kernel uses to retrieve and write data from/to data files.
  • winsatModern Microsoft Windows distributions have winsat utility that is capable to do some basic IO testing.
    • Experience: I have used this utility to confirm orion results on Windows platform
    • References:
  • iometerMy friend (Artur Gaffanov) suggested iometer as alternative tool from the same category. This utility originally has been developed by Intel and is currently maintained  by an Open Source Community.
    • Experience: I do not have personal experience with the tool. However a quick search though Pythian Knowledge Base (Support Track) retrieved several references. I would say there is some experiences at Pythian.
    • References: http://www.iometer.org/

RDBMS Level testing tools

This group of tools works from within an Oracle Instance. Therefore some people (I bet if they read this post they know exactly who I am referencing  to ;) say these groups of tool could reproduce the RDBMS IO calls much closer than the fist group. I may not 100% agree that the first group doesn’t imitate RDBMS calls  close enough, but there is other benefits that this group of tools provides. Some of them could be used to test other system resources’ performance like CPU and memory.

Pros:

  • Use RDBMS calls to test  system resources (uses database the same way as your application does)
  • Can be used to test all main system’s resources (CPU, Memory, IO)
  • Relatively easy to run
  • Short  learning curve ( add 4-8 hours to first few runs for an initial learning)
  • Relatively low budget (1-3 days should be enough for a testing project)

Cons:

  • May not represent your Application IO patterns
  • Need a good basic understanding of RDBMS concepts
  • You may need to spent a bit more time verifying and adjusting an instance/test’s configuration to ensure that it tests exactly what you want to test
  • It would take you more time to run the same number of test than using a tool from the first group.
  • You may need to spend a bit more time to configure your Oracle Instance to test performance the way you want
  • You need an Oracle Database to be up and running to use those testing tools

Representatives:

  • SLOB – The Silly Little Oracle Benchmark from Kevin Closson. The framework uses a simple and typical database operation to put some load on a system. Depending on the amount of memory you allocate to data cache it would test ether CPU and memory (Logical IOs) or Storage (Physical IO). The tool uses index range scan and table blocks look-ups.
    • Experience: I did spent quite a bit of time running tests using SLOB utility. There are quite several folks around the world who are using SLOB for testing Oracle systems’ performance. From my experiences I should say that it takes a bit of time to understand the things to be careful with during testing. However as soon as you know what are you doing it takes less time time to test and compare different systems’ performance.
    • References:
  • Oracle Database I/O calibration feature - Some people  knows it as DBMS_RESOURCE_MANAGER.CALIBRATE_IO. Strictly speaking the procedure tests physical IO only. However if you add DBMS_STATS.GATHER_SYSTEM_STATS that collaborates CPU speed with a certain skepticism we can add those tools to this category of testing tools. As both procedures works within an Oracle Instance. The biggest disadvantage here is the lack of details on how the tools run tests. Those are limited from configuration perspective too. As for example you don’t have a good control over what data files the IOs are issues against.

Application Level testing tools (DB based)

Before going any further I must mention that this category includes tools that requires more time to setup, test and get comparable results. I have been part of several projects that targeted to mimic application behavior. Depending on a tool, application complexity and results you would want to archive a project from this category may take anything from ~20 hours to several months.

For the interest of keeping this blog post reasonably short I mention some of the tools from this category below with a few comments. If you consider using one of the tools from this category I would encourage you to run a pre-study that can take from several hours to several days itself.

  • Hammerora – this is a free multi databases testing tool. Originally it have been created to run TPC-C and TPCH application workloads. Today it supports application activity replay functionality (for Oracle Databases). I have used this tool to run TPC-C tests in the past.  Typical use case would be to run set of test on two different platforms to get some general ideal on difference in performance characteristics. You may not get as precise results as with previous group of tools. However you may get a reasonably good idea on general performance comparison.
  • Swingbench – from Dominic Giles (Oracle UK). This is a free tool similar to Hammerora that has a set of Supplied Benchmarks you may use to test performance of your Oracle based system. It allows you to build your own basic testing scripts. Originally the tool was developed to test Oracle RAC based systems. Dominic’s presentation gives good overview of the tool. Several folks at Pythian have been using this tool. My team members configured and ran the tests recently to compare source (old Solaris) and target (VM based Linux) system.
  • Simora – from James Morle and Scale Abilities. This tool mines Oracle SQL Trace files and Generates SQL to be executed to reproduce the load. Obviously you can take and replay the application load on a copy of the system where the trace files have been generated. As a good use case you may consider using it for testing application across Database version upgrades. As with Hammerora such testing projects need careful planning (how and when to recover database to get the right data, how to synchronize data updates to make sure that no application constraints are violated etc). I would estimate such testing project in anything starting from a week to 8 weeks depending on the complexity and other parameters.
  • Oracle Real Application Testing –  This is an Enterprise Database option from Oracle that allows to record a load on source system and reply on the destination environment. I have tried this functionality several times in a test environments. It works well. However it RAT based projects have common challenges as other two tools. It worth mentioning that the product isn’t free and needs additional licences. Saying that I have heard about  few clients who successfully used the product in their testing/migration projects.

Application Level testing tools (Apps based)

Testing tools in this category mimics end users’ behavior as users would work with the system from their workstations. That means that tools like HP LoadRunner interact with application servers using variety of protocols, e.g. HTTP, HTTPS, Oracle Forms, etc to test all components of the system at the same time. Needless to say that in order to do it a test scenarios need to be scripted, test data prepared, tested and maintained based on the changes in the application side. I personally was part of such project. The project length was several months. However we have archive a good results and spotted quite several critical inefficiency in custom application code.

Conclusions

As I mentioned at the beginning of this post you need to find the right testing tool for the task you have given.  I hope that this overview help you to get some idea on options available and resources you may lineup for your testing activities. I would appreciate if you share your experience with the any of the tools mentioned or, even better, mention some good tools that I didn’t listed in this blog post in the comments section below.

Yury

View Yury Velikanov's profile on LinkedIn

Compiling Oracle Forms against functions using the 11g Function Result Cache…

I came across a rather annoying little bug yesterday…

One of the guys was trying to compile an Oracle Form on the app server and got this message.

*** ASSERT at file pdw1.c, line 4061
PSDGON missing. Can't get object number
Source Location = XNSPC0P99_2013_06_12_17_44_38__AB[71, 7]

Uncle Google pointed me in the direction of this MOS Note [ID 1276725.1].

It turns out it is a problem with the 11.1.0.7 client, which happens to be the version that ships with Forms and Reports Services. The Forms compilation fails when the form references a database function that uses the Function Result Cache in 11g.

I didn’t fancy applying the patch last night, so I just commented out the RESULT CACHE clause in the packaged function, compiled the form, then put the RESULT CACHE clause back in. Job’s a good’un!

This morning I’ve followed the MOS note and applied the patch in out Dev environment and it seems to have fixed the issue.

Just so I don’t forget about this, I’ve also added a mention of it in my ever-growing Oracle Forms and Reports Services 11gR2 Configuration Notes article.

Cheers

Tim…

Update: See Gert’s comment below for his post on the subject 2.5 years ago. :)


Compiling Oracle Forms against functions using the 11g Function Result Cache… was first posted on June 13, 2013 at 10:17 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.

Not In Nasty

Actually it’s probably not the NOT IN that’s nasty, it’s the thing you get if you don’t use NOT IN that’s more likely to be nasty. Just another odd little quirk of the optimizer, which I’ll demonstrate with a simple example (running under 11.2.0.3 in this case):

create table t1
as
select	*
from	all_objects
where	rownum <= 10000
;

update t1 set
	object_type = null
where
	object_type = 'TABLE'
;

commit;

begin
	dbms_stats.gather_table_stats(
		ownname		 => user,
		tabname		 =>'T1',
		method_opt	 => 'for all columns size 1'
	);
end;
;

select
	sample_size, num_nulls, num_distinct, histogram
from
	user_tab_columns
where
	table_name = 'T1'
and	column_name = 'OBJECT_TYPE'
;

This code is going to give you 10,000 rows but the number of distinct values for object_type and the number of nulls will depend on the version and options installed; however you should get about 15 distinct values for object_type and about 1,000 nulls in that column.

If you want to run a query to count the rows where the object_type is not one of: ‘INDEX’,'SYNONYM’, or ‘VIEW’, there are two obvious ways of writing it, so let’s put them into a single query with a UNION ALL, and see what Oracle predicts as the cardinality (cut-n-pasted from an SQL*Plus session):

SQL> set autotrace traceonly explain
SQL> select
  2     count(*)
  3  from       t1
  4  where      object_type != 'INDEX'
  5  and        object_type != 'SYNONYM'
  6  and        object_type != 'VIEW'
  7  union all
  8  select
  9     count(*)
 10  from       t1
 11  where      object_type not in ('INDEX', 'SYNONYM', 'VIEW')
 12  ;

Execution Plan
----------------------------------------------------------
Plan hash value: 575959041

----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |     2 |    12 |    38  (53)| 00:00:01 |
|   1 |  UNION-ALL          |      |       |       |            |          |
|   2 |   SORT AGGREGATE    |      |     1 |     6 |            |          |
|*  3 |    TABLE ACCESS FULL| T1   |  5903 | 35418 |    19   (6)| 00:00:01 |
|   4 |   SORT AGGREGATE    |      |     1 |     6 |            |          |
|*  5 |    TABLE ACCESS FULL| T1   |  7308 | 43848 |    19   (6)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

3 - filter("OBJECT_TYPE"<>'INDEX' AND "OBJECT_TYPE"<>'SYNONYM' AND "OBJECT_TYPE"<>'VIEW')
5 - filter("OBJECT_TYPE"<>'INDEX' AND "OBJECT_TYPE"<>'SYNONYM' AND "OBJECT_TYPE"<>'VIEW')

Look at operations 3 and 5: the way you write the query makes a significant difference to the cardinality predicted by the optimizer – despite the fact that the NOT IN predicate is transformed internally so that the predicate sections of the two parts of the UNION ALL are exactly the same.

If you’re wondering, the NOT IN option is the one that does the rational arithmetic – it has calculated the number of rows where object_type is not null, then allowed for filtering out 3/15ths of those rows because the query rejects 3 rows out of the 15 distinct values reported by the statistics. The list of inequalities has applied some arithmetic that tries to allow for the nulls three times – the more values you reject the worse the estimate gets.

It’s quite likely that you won’t notice the effect in many cases – but if you run queries against a column with a large percentage of nulls, then the differences can be very large and knock-on effects of this error could be dramatic.


Oracle, Proxy, Obfuscation, Cookie Law, Talks, more…

It has been a long while since my last blog post. I have been very busy with Oracle security consulting, data security audits, teaching training courses and of course with my companies Database Security Scanner - PFCLScan . Oracle security....[Read More]

Posted by Pete On 20/06/12 At 02:23 PM

Hard drive Inner or Outer

To be precise I wonder if OUTERmost tracks of a spinning HDD are faster than INNERmost tracks? Should we put physical IO performance secretive data to OUTERmost parts of  the disk and less critical data to INNERmost parts as several vendors suggests? Well I didn’t find a better solution than grab all HDDs I have had and start testing :) Yes! It is a work in progress project ….

My HDDs

Disclaimer

Before you start criticize my testing results I would like to make a few points clear:

  • I am not an expert in the hardware space
    • I am just a curios Oracle Administrator opened to any suggestions on how to improve testing results and get closer to clarifying things
  • Some of you will say that it is a useless exercise as nowadays we don’t have any control over what areas of a single HDD data is placed
    • Well in some rare configurations like Exadata or Oracle Database Appliance we actually have this power and can possibly impact the IO performance
    • In other cases sometimes it is good to understand how things works to explain why there is a certain performance impact
  • As I am an Oracle DBA and Oracle databases most often are random IO bounded, I have focused my attention on random (8k) IO testing
  • I do believe there is a better ways to test HDDs. Unfortunately I don’t have enough knowledge about other options. I am open to your suggestions on how to do it in a better way.
    • Just keep in mind that I have Windows 7 (64 bit), Dell Latitude E6410 for this testing
  • At the moment I am waiting on SATA adapter to arrive. I will re-run some of the tests I did to confirm or adjust the testing results.
  • This is a work in progress project and I am not ready to make a final conclusions ( if will be ready to make those at all ;)

My expectations

Based on previous experience I expect that

  1. OUTERmost tracks will not be too faster than INNERmost tracks
  2. The worst performance should be when data is accessed from both OUTERmost and INNERmost tracks at the same time

I have focused my attention to 3 tests:

  • Data on OUTERmost tracks
  • Data on INNERmost tracks
  • Data distributed equally through full HDD surface

Note: I have made a fourth test where I run random IO test accessing data from OUTERmost and INNERmost tracks at the same time. The test results were very close to the full surface tests. Therefore I do not provide those in this blog post.

How and what did I test

Hardware

To start I took 7 HDDs that I happened to have and 2 SATA to USB adapters.

SATA to USB
Software

I have used 2 options to test and confirm IOPS results:

  • Windows 7 have a nice little (; silly ;) utility winsat. It didn’t take me too long to figure out how to make it do random 8k reads
winsat disk -ran -ransize 8192 -read -drive E
  • Oracle 11GR2 comes with Oracle native orion (ORacle IO Numbers) utility. I just installed it and used the command below to test random IOs
orion -testname e_hdd -duration 20 -cache_size 0 -write 0 -num_disks 1 -run advanced -size_small 8 -matrix row -num_large 0
# e_hdd.lun
\\.\e:

Assumption

To make things simple I have assumed that HDD controller (or windows, or who ever, … remember I am not an expert) allocates space starting from OUTERmost (fastest) tracks of the disk. Therefore I have allocated 1GB of unformatted space to E: drive first, then filled all space but last 1GB with an empty partition and created a 1GB G: drive. My assumption is that partition/drive E: is located on OUTERmoston tracks but partition/drive G: on the INNERmost (slowest) tracks. As you will see from the results below this assumption isn’t correct for all HDDs.

2013-06-11_2236To test full surface I have deleted all partitions and created one big partition.

Please let me know (using comment section bellow) if there is a better way to ensure that a partition is created on OUTERmost tracks of HDD or at least how to check what tracks the partition is created on (if it is possible).

Results

“Good” results

The following reflects IOPS testing for 3 HDDs that confirmed my expectations. It is clear that there is no less than 10% gain between OUTERmost and INNERmost tracks. However there is a significant performance impact if a HDD’s head should move across whole HDD surface to access data.

HDD Name Outer Inner Full Outer vs Inner Outer vs Full
WD 2.5″ 1TB 5400RPM / WDBBEP0010BRD 127 121 64 4.96% 98.44%
Hitachi 3.5″ 320GB 7200RPM / HDT725032VLA380 133 124 58 7.26% 129.31%
WD  2.5″ 160 GB 5400RPM / WD1600BEVT 112 103 61 8.74% 83.61%
“Other” results

A careful reader would notice that I didn’t provide all test results so far and you are right. The reason being the rest of the results doesn’t confirm my theory :). Have a look on the other 3 HDDs test results below (Note one of the 7 HDDs have had data on it therefore I have excluded it from OUTERmost and INNERmost tracks testing).

HDD Name Outer Inner Full Outer vs Inner Outer vs Full
HGST 2.5” 1TB 7200RPM / AT-0J22423 107 132 69 -18.94% 55.07%
Segate 2.5” 250GB 7200RPM / ST9250410AS 88 71 63 23.94% 39.68%
Seagate 3.5″ 1TB 7200RPM / ST31000333AS 141 92 69 53.26% 104.35%

The 3 HDDs above ether did show results that I can’t explain (AT-0J22423) as of now or performance difference in between OUTERmost and INNERmost tracks is more significant than for the first set of HDDs. However for both sets it is kind of clear that if a HDD moves head across whole surface there is a significant performance penalty. Those are expected result, aren’t those?

Intermediate conclusions

There are some HDDs models where there is no significant performance difference between accessing data located on OUTERmost or INNERmost tracks. However in some cases IO performance could be by 130% slower if HDD header travels across whole surface to return data.

This have 2 possible practical implications:

  • If someone states that a partition is created on a OUTERmost tracks of a HDD it isn’t necessary mean IO are significant faster from that partition than from any other region of the HDD
  • It could significantly slowdown IO operations if data to be accessed from both  OUTERmost and INNERmost tracks (e.g. if DATA is located on OUTERmost tracks but FRA on INNERmost tracks)
  • You may find that your storage performance degrades more “active” data you put on your hard drives (fill hard drives)

Keep in mind that there are possible exceptions. Based on my initial tests there some HDDs models where the difference between OUTERmost and INNERmost tracks is significant.

Please help to improve the test results

As I stated at the begging of this post a) I am not an expert in this space b) This is a work in progress project and I am looking for better ways to test random IOs c) I need your help to understand why there are exceptions and suggestions on how to adjust the HDDs testing  process to improve the test results and get closer to good conclusions.

Yury
View Yury Velikanov's profile on LinkedIn

After Earth…

Just got back from watching After Earth. The cinema was packed. Quite a surprise for a Tuesday evening.

You know pretty much know what to expect once you’ve watched the trailer, although there are a couple of scenes in there that are taken out of context. The premise is, a father and son are brought closer together by adversity. That adversity happens to be crash landing on Earth, the planet they left because we screwed it up.

I’m not really sure what accent Will Smith was trying to do in parts of the film. There were a couple of times when I though he was doing a bad British accent. Then others when it sounded almost like southern USA. Certainly nothing like I’ve heard before and certainly not consistent, unless that’s how they talk on the planet he comes from. Jaden was equally weak in that respect, but if Russell Crowe can’t tell the difference between an Irish and Nottingham accent, what hope does a kid have of getting it right?

It’s a family affair. Staring Jaden Smith and Will Smith. Story by Will Smith. Produced by Will Smith and Jada Pinkett Smith. Willow and Trey Smith must feel well left out. :)

If I hadn’t read the credits, I wouldn’t have realised M. Night Shyamalan was involved. It didn’t really feel like one of his films. None of the angles he tends to go for. I guess he had his Stuart Little and The Last Airbender hat on when doing this film. OK, there were a few grisly things that would shock younger kids, but nothing too intense.

At 100 minutes, it’s a pretty short film by today’s standards, but I think it would have been a mistake to stretch it out. It’s a bit cheesey in parts, but on the whole I thought it was OK. I wouldn’t demand you go and see it, but provided you can ignore bad accents, it’s not the worst thing you will ever see. I heard a couple of girls talking on the way out and they said the first 30 minutes was boring, but then is was “all right”. I think that’s a little unfair, but that’s life!

Cheers

Tim…

PS. If you are reading this Mr Crowe, when I watched your Robin Hood remake, the first thing I said was, why the XXXX have they made Robin Hood Irish? Being a Midlander, I can tell you now, the only people who talk like that in the Midlands are Irish people. :)


After Earth… was first posted on June 11, 2013 at 10:54 pm.
©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.

See You at Kscope 13

Kscope 13 (#kscope13), ODTUG’s (@odtug) annual conference begins in less than two weeks. I know, it sneaked up on me too.

If you happen to be making the trip to New Orleans for the show, which runs June 23-27, and you feel like getting up early on Monday morning, I’ll be speaking with Jeremy Ashley, the head of Applications User Experience.

So, why not come by our session, sip your coffee and hear about Fusion Applications as a platform for new experiences?

Here’s the skinny:

Oracle Fusion & Cloud Applications: A Platform for Building New User Experiences

Monday, June 24, 2013, Session 1, 8:30 am – 9:30 am

Do your users keep bringing new gadgets to work? Not just the latest tablets and smartphones, but wearable smart devices, and even cyborg-like glasses? Your users are no longer tied to their PCs, and neither are enterprise applications. See how Oracle’s Applications User Experience team is bringing Fusion Applications data to new devices and platforms. Find out what technology trends we are paying attention to, and what our own applications developers are exploring for the future.

Yeah, it’s at 8:30 AM, but you’ll be starting your Kscope 13 with a hot topic.

Thanks to Sten Verstli (@stenvesterli) for inspiring the title. Sten attended a super-secret AUX event at HQ last month, organized and hosted by Misha (@mishavaughan), and wrote the following:

Yesterday, the Oracle UX team hosted a confidential (strictly no photography!) event demoing some of the new stuff they are working on. If I told you the details I’d have to kill you, but what I can say is this: The future of ERP is as a platform, not an application.

I think that nicely encapsulates a lot of what I’ve been doing lately, so I borrowed it. Thanks Sten.

Anyway, if you’re planning your schedule for Kscope 13 and need a reason to get up early on Monday, come by our session, and even if you don’t make it, find me at show and say hi.

Always enjoy meeting readers IRL.Possibly Related Posts:

A most simple cloud: Is Amazon RDS for Oracle right for you?

Amazon Web Services has offered Relational Database Service as part of their cloud offering since 2011.  These days, RDS provides easy to deploy, on-demand database-as-a-service for MySQL, Oracle and SQL Server.  When you compare it to essentially any other method of hosting and licensing Oracle, RDS seems to have a variety of really appealing qualities:

With RDS/Oracle, you don’t really need a DBA to take care of your database. With the notable exception of tuning, most of the DBA tasks, such as database creation and configuration, backups, upgrades and disaster recovery are simply features of the service.

Oracle databases on RDS can be created with “license included.” This means that for certain Oracle editions, you can pay as you go for your license. Currently this is limited to Standard Edition One, but rumours abound that higher editions, including Enterprise Edition, will be available with license-included in the near future.

The Oracle versions available on RDS are limited to a few modern, stable releases. This keeps customers from encountering oddball bugs and version quirks.

So far, RDS seems like a clean, simple elegant solution, and it is. It clearly has a place with certain enterprises that use or want to use Oracle. So the question you might have is, “Is it right for me?” Since no solution is perfect for every deployment, it is helpful to explore the factors that can help you decide of RDS/Oracle will fit your needs.

Availability of technical personnel: If you already run an enterprise that employs DBAs, there may not be as great an upside to deploying a largely DBA-free solution like RDS. On the other hand, if your in-house database expertise is not deep, RDS has the advantage of low technical barriers to entry. With RDS/Oracle, provisioning, backups, monitoring, upgrades and patching are managed and controlled via the web API. The major missing component is tuning. With RDS/Oracle, you still need to have some knowledge of Oracle and SQL tuning to run a successful RDS service.

Tuning: While we are on the topic, let’s discuss Oracle tuning and RDS. As with conventionally-hosted databases, diagnostic pack (and ASH / AWR) is available and supported, as long as you are running Enterprise Edition and you are licensed for those options. AWS even provides Enterprise Manager DB Control as an option. For all other editions however, there is a major hitch. Statspack, the tried and true alternative to AWR, is not supported on RDS. You can still query the v$ views to access current and aggregated wait event information, but the lack of Statspack support is a big stumbling block. SQL tracing and event 10046 (and many other diagnostic events) are available on RDS, and a recent enhancement has provided access to these files via the web API. Previously, access to alert and trace files was via external tables and SQL only.

Privileges: RDS grants you limited management privileges for Oracle, but it stops short of the SYSDBA role, which would have total control over the system. Some applications require SYSDBA, especially during schema installation. If you have an application that absolutely cannot function without SYSDBA privileges, RDS is off the table. On the other hand, most of the application schema deployment scripts that purport to need SYSDBA privilege actually need no such thing. In many of these cases, minor changes to schema build scripts would make them RDS-compatible.

Loading/migration: Most Oracle customers are accustomed to migrating their databases from one hosting solution to another via datafile copy. In the case of vary large databases, migration by physical standby switchover is the method of choice. With RDS, there is no access to the underlying filesystem, so datafile-based migration methods are impossible. Since the only access to RDS/Oracle is via SQL Net, data must be loaded using database links. This means using Data Pump, DML over database link, or materialized views. This final option is particularly interesting. If they first pre-create all of the tables and indexes to be migrated in RDS, customers can then build fast-refresh materialized views on the tables, and continually refresh them from the source system. When the customer wants to cut over to RDS, it can be accomplished simply by stopping application access to the source, refreshing all MVs one more time, and converting the MVs in RDS back to tables by dropping the MV objects. While this method is prone to problems stemming from schema design, high rate of change and large transactions, it is likely the best and only solution to a minimal-downtime migrations to RDS/Oracle.

Database versions: If you are planning to migrate to RDS from a conventional hosting solution, and you don’t already use one of the Oracle versions supported by RDS, your migration to RDS will also amount to a database upgrade. There is nothing fundamentally wrong with this, since you will be moving to a version well tested and certified by Amazon. On the other hand, any third party (or homegrown) software will have to be checked and tested to make sure it is runs and is supported on one of the available versions under RDS. Also be aware that database upgrade can come with their share of issues. The most common upgrade issues are small numbers of SQL statements that perform worse after upgrade, because of optimizer regressions.

Backup and recovery: RDS/Oracle backs up the database using storage snapshots, and boasts point-in-time recovery. There are some clear advantages to this method. Backups complete quickly, and you can execute them as often as you want. On the other hand, because Recovery Manager is not supported, some of the nice things you can do with that tool are missing from RDS. For instance, simple small repairs such as single block, single datafile, or single tablespace recovery are impossible with RDS. Recovery using storage snapshots is an all-or-nothing proposition.

High availability and disaster recovery: On the plus side, RDS/Oracle provides a very easy way to set up redundancy across Amazon availability zones (which you can think of as separate datacenters in the same region). This configuration, called multi-zone, provides synchronous storage replication between your production RDS database and a replica in one of the other zones within the same region. For the MySQL version of RDS, the replica is readable. However, this is not so for Oracle or SQL Server. So multi-zone RDS provides redundancy for Oracle, but not a read replica. Significantly, because nearly all viable replication options are unsupported, including Data Guard (standby database) and Streams, RDS does not provide customers with a cross-region DR solution.

Limitations on features, parameters and character sets: RDS/Oracle has enabled and supports a broad range of Oracle features, parameter settings and character sets. However, a subset of each of these categories is not supported, either because of how RDS is architected, or because Amazon has not seen the demand for those things to be great enough to merit the engineering effort involved in supporting them. Depending on the needs of the application, any limitations arising from the following lists may or may not affect you.

Features supported / not supported on RDS/Oracle (note that RAC is not supported on EC2 either)
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.FeatureSupport

Character sets supported (note that this list does not include UTF8 or WE8ISO8859P1, AKA Latin-1, both very common)
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.OracleCharacterSets.html

The available parameters and allowed settings are dictated by the edition, options and version of Oracle you have deployed. The complete list can be obtained via the RDS web API.

To summarize, Amazon RDS for Oracle is a really exciting option. The right application with limited requirements might find RDS to be a totally suitable platform for hosting a database. However, as the enterprise requirements and resulting degree of complexity of the database solution increase, RDS is gradually ruled out as an option. For larger and more complex deployments, the issues around tuning, migration and HA/DR completely eliminate RDS as a solution. For these more complex cases, Amazon’s Elastic Compute Cloud (EC2) can provide a much broader range of possible solutions. I would never be one to discount anything Amazon Web Services offering. Any deficiencies I call out in a blog posting like this one will probably be made obsolete as Amazon announces new RDS capabilities.

Would you deploy your databases on Amazon RDS for Oracle?  Why or why not?