Log Buffer #323, A Carnival of the Vanities for DBAs

The onslaught of the blogs is hard to ignore and underestimate. It is the blogging which has become part of the technologists everywhere including the database professionals and evangelists. This Log Buffer Edition appreciates that and consists of blogs from Oracle, SQL Server and MySQL.

Oracle:

Dass Oracle in Version 11 unter bestimmten Umständen große serielle Full Table Scans (FTS) mit Hilfe von Direct Path Reads durchführen kann, ist schon häufig erwähnt worden (hier im Blog mindestens in drei Artikeln) – zuletzt hatte Tanel Poder darauf hingewiesen, dass die Entscheidung für diesen Zugriff seit 11.2.

Michael Snow highlights an active WebCenter partner with a recent success in the transportation vertical. Read on below to learn more about Redstone Content Solutions along with a great profile of their customer, Standard Forwarding LLC.

Mdinh got over 100+ saved sessions in PuTTY running on Windows and was looking for a way to move those session to Linux.

Data Pump is much faster than the old exp and imp client commands. Data Pump has a feature that helps to make it even faster by trading performance for resource consumption (CPU); this feature is called the “parallel” option.

SQL Gone Bad – But Plan Not Changed?

SQL Server:

Just when you thought you got a handle on SQL Server 2012, here comes the next version!  SQL Server 2014 was announced yesterday during the TechEd North America 2013 Day 1 Keynote.

Melissa Coates is integrating Data from Data Explorer into PowerPivot.

How Do You Handle Changes? Chris Shaw asks.

Mike Hillwig was looking at syntax of DBCC SHRINKDATBASE today and came across a little gem.

Richard Douglas has an interview with chairman of SQLRelay 2013.

MySQL:

Tokutek created the iiBench benchmark back in 2008. The point of the benchmark is to measure the performance of indexed insertions over time.

Madrid MySQL Users Group worth creating?

When looking at high availability for any CMS, and particularly for Drupal, the list of contenders for part or all of the solution is growing and can be daunting.

Engine condition pushdown is a MySQL internal mechanism that is intended to avoid to send non matching rows from the storage engine to the SQL layer.

Ever wondered how a database cluster ticks? Here’s how!

Parallel DML

Parallel DML is not enabled by default, and it’s easy to forget this and think you’ve made an operation “as parallel as possible” by declaring objects parallel or putting in hints for parallelism.

A recent question on OTN asked about speeding up a  materialized view refresh that seemed to be spending a lot of its time waiting on “PX Deq Credit: send blkd”. The manuals describe this as an “idle event”; but that’s not always true. The OP had supplied the output from tkprof for one of the sessions showing the “insert as select” that was the (complete) refresh and it was clear that the select was running in parallel, but the insert wasn’t – and that’s one case in which the “PX Deq Credit: send blkd” is arguably an “idle” wait (with a timeout of 2 seconds). It’s possible that the refresh could go faster if the OP enabled parallel DML.

The argument for calling this wait idle (in this case) is that N-1 of the parallel slaves that are trying to feed the query co-ordinator are waiting because the query co-ordinator is soaking up data from the Nth slave as fast as it can – the query co-ordinator can’t go any faster and the slaves are being told to wait until the query co-ordinator is ready for their input. On the other hand, if you don’t need those waits to happen at all you could argue that they aren’t idle because they are affecting the end-user response time. To stop them happening, you can minimise the messages from the PX slaves to the query co-ordinator by making the insert run in parallel; and since it’s important to recognise the difference in plans between a parallel and non-parallel insert I thought I’d give you a little model to test.

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

alter table t1 parallel (degree 2); 
alter table t2 parallel (degree 2); 

explain plan for 
insert /*+ append */ into t2 select * from t1; 

select * from table(dbms_xplan.display(null,null,'-note -cost -rows -bytes')); 

commit; 
alter session enable parallel dml; 

explain plan for 
insert /*+ append */ into t2 select * from t1; 

select * from table(dbms_xplan.display(null,null,'-note -cost -rows -bytes')); 

This code creates a couple of tables, declared as parallel, then inserts (twice) from one to the other. In the first case only the select can run parallel so all the data from the parallel slaves will be passed to the query co-ordinator to be inserted. In the second case both the select and the insert can take place in parallel, so each slave would build its own data segments, and the only messages sent to the query co-ordinator would be about the list of extents in each “private” segment that have to be merged. Here are the two execution plans:

 
----------------------------------------------------------------------- 
| Id  | Operation             | Name     |    TQ  |IN-OUT| PQ Distrib | 
----------------------------------------------------------------------- 
|   0 | INSERT STATEMENT      |          |        |      |            | 
|   1 |  LOAD AS SELECT       | T2       |        |      |            | 
|   2 |   PX COORDINATOR      |          |        |      |            | 
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T1       |  Q1,00 | PCWP |            |
-----------------------------------------------------------------------

-----------------------------------------------------------------------
| Id  | Operation             | Name     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------
|   0 | INSERT STATEMENT      |          |        |      |            |
|   1 |  PX COORDINATOR       |          |        |      |            |
|   2 |   PX SEND QC (RANDOM) | :TQ10000 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    LOAD AS SELECT     | T2       |  Q1,00 | PCWP |            |
|   4 |     PX BLOCK ITERATOR |          |  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS FULL| T1       |  Q1,00 | PCWP |            |
-----------------------------------------------------------------------

Both plans are so simple in shape that you basically read them from the bottom up. The first plan shows the data passing from the PX slaves to the QC (PX coordinator) which does the LOAD AS SELECT. The second plan shows the PX slaves loading as they select (the load is grouped as PCWP – parallel combined with child – with the tablescan), and information is sent to the QC only after the load has completed.

Bottom line: if the PX SEND QC is above (lower line number) the LOAD AS SELECT the slaves are doing the insert, if the LOAD AS SELECT is above the PX SEND QC the query coordinator is doing the insert (and you’ll probably see lots of “PX Deq Credit: send blkd” at that point as the PX slaves wait for the QC to load data into blocks).


Getting the Most Out of ASH online seminar

Just a little reminder – next week (10-11th June) I’ll be delivering my last training session before autumn – a short 1-day (2 x 0.5 days actually) seminar about Getting the Most Out of Oracle’s Active Session History. In the future it will act as sort of a prequel (or preparation) for my Advanced Oracle Troubleshooting class, as the latter one deliberately goes very deep. The ASH seminar’s 1st half is actually mostly about the GUI way of troubleshooting the usual performance problems (EM/Grid Control) and the 2nd half is about all my ASH scripts for diagnosing more complex stuff.

P.S. I’ll also have multiple very cool news in a few months ;-)

My thought on APEX 5.0 plans

The below content is based on a David Peake's presentation at APEX World 2013.

The below are plans for APEX 5.0, not marked in stone objectives... So there are no promises it will all make it in APEX 5.0 and things might be different in the final release. David didn't show any pre-release, but if this release follows previous version, most likely at ODTUG KScope '13 (end of June) the APEX team will show something live.

The focus in APEX 5.0 is on improved developer productivity, which is great to hear for us developers.
Below you find the main areas the APEX development team is looking into and what my thought are on them:

Modal Dialog

At the moment you can use some plugins to create modal dialogs, but in APEX 5.0 you'll be able to declaratively declare modal pages (so real pages no regions) with a nice UI where you can add buttons on the modal and have modals on top of modals. Yes!

Drag and Drop Layout Editor (different view)

With HTMLDB 1.5, the first public release of APEX, we had the Component View where you saw the definition of your page. Since APEX 4.0 we got next to the Component View the Tree View, which allowed you to see the definition of the page the way it gets rendered. Using that view also increased productivity as you could drill-down faster to certain areas or right click on components to create other things and, based on where you were, it would skip steps in the wizard.

APEX 5.0 will introduce a new view the "Design View". This is a more visual UI to build your pages. You find the Page Elements on the left, the Layout Editor - Source in the middle, and the Component Library below that and finally the Property Editor on the right. The following screenshot is showing the concept:



So you can do drag-and-drop to create your page elements and edit them straight in the property editor. You keep doing that till you are happy and after hitting Apply Changes button it gets saved. So when you edit your page, remember the changes won't be applied automatically only when you hit the button (which I find good).

I do wonder how the Layout Editor will work with for example responsive design; will it do ratios (percentage) or will it depends on the theme that it will be "pixel perfect"? When the early adopter comes out, it will probably be one of the first thing I want to see how the html gets generated behind the scenes.
I also wonder if this editor will work on a tablet (iPad). Would be cool to be in a meeting, grap your iPad and discuss requirements, you quickly drag items on the screen hit Apply Changes and presto they see immediate results.

It will also be interesting to see how they implement the Layout Editor behind the scenes as there is so much information on the screen. When do they get more data through an Ajax process or do they load most of it on the initial load?

The other thing that David asked was who would like the APEX team to keep maintaining all 3 views. Most people like to stick to what they know and don't like to give up something, but if the APEX team needs to maintain all 3 views, it will be time consuming. So if it comes down to get more features or get to keep the 3 views, I probably would give up a view for more/better features :-)

HTML5 capabilities

APEX 4.2 already introduced many HTML5 features and I'm a big fan of having more of those declarative available; things like new input types, improved HTML5 charts, incorporate more CSS3 instead of images, use CSS3 animations for transitions, latest jQuery Mobile features (panels, responsive table, dual range slider) etc.
Another thing I would find interesting is, if they looked into local storage and offline capabilities declaratively. I never heard that would be on the list for APEX 5.0, it's just something I threw in, in this section for the future to think of.

PDF Printing

Designing your pages for PDF Printing has been something that isn't as declarative and easy to do as creating for example pages. The APEX Listener has now build-in FOP support, so they can use that and in APEX 5.0 they will add additional declarative formatting options and will make it easier to work with different templates, add control break and master/detail reports.

Web Service Support

They look into improving the Restfull web services publising capabilities, so it's easier and more performant to integrate with other databases and be in a more SOA architecture.
In a next version of SQL Developer you'll be able to define DML stored procedures using future SQL Developer

Improved framework and enhancements to the packaged applications

This is something that is true for every version. Many small changes are done that makes APEX just a little bit better, more user-friendly and more productive.
The new packaged applications were already included in the latest APEX 4.2 patch set.
Another area they look into is allowing third-party apps to be included as packaged applications. This is especially useful in the Oracle Cloud.

Multi-Row Edit Region Type

The current tabular forms are a bit old school - they got introduced in HTMLDB 1.5 and got native  validations in APEX 4.0, but apart from that it's still a bit behind what you can do with normal page items. For example multiple checkboxes are not declarative in APEX 4.2 tabular forms.
APEX 5.0 will introduce the Multi-Row Edit Region Type. It will be a new Region Type, so it would be a manual change of your existing tabular forms to move to that.
The biggest advantage for the APEX team is that they don't need to maintain the old code. I'm more than happy to switch my tabular forms manually to get a more feature rich experience.
This new region type would also allow to create a master-detail-detail page.
Currently they are investigating different plugins; JQGrid is one of them which might be used behind the scenes.

Multiple Interactive reports

This has been on the list for some time, but it looks like APEX 5.0 will allow any number of IR to be defined on a single page.

Application Builder Security

The security in APEX is a big area and has been increased in every release. In APEX 5.0 they will allow different authentication schemes to be used to control developer access and there will be more  pre-built schemes to pick from. Although David didn't mention it, I hope SSO with AD is one of them and a remember me functionality will be declarative available.

Websheets

APEX 5.0 will continue to modernize and enhance websheet capabilities, improve usability, evolve the user interface and simplify the creation and maintenance of data grids.
Websheets are as good as every other Wiki, but with Data Grids, which are so much more powerful.


Again the above are things the APEX development team looks into, so it's not guaranteed it will make it in APEX 5.0. So when I said "APEX 5.0 will, read it as APEX 5.0 might".


You want a specific feature in APEX? Log it in the Feature Requests app: http://apex.oracle.com/vote
More info on Oracle Application Express (APEX): http://apex.oracle.com

Rman backup compression

Did you know you can make your backup at least twice faster with a single line ?

Demo :


RMAN> backup as compressed backupset database;
Starting backup at 2013-06-05_13:08:01
...
Finished backup at 2013-06-05_13:13:59

6 minutes for a compressed backup on a NAS with 24 Channels and 100Gb of raw data. Not bad. But look at this !


RMAN> configure compression algorithm 'low';
new RMAN configuration parameters are successfully stored
RMAN> backup as compressed backupset database;
Starting backup at 2013-06-05_14:06:09
...
Finished backup at 2013-06-05_14:08:29
RMAN> configure compression algorithm clear;
RMAN configuration parameters are successfully reset to default value

By configuring this magic parameter, it is now more than twice faster ! This is incredible !

Go to your cashier and grab some coins to get this amazing advanced compression option !

First 3 days as a Glass Explorer (Day 2)

Editor’s note: Read Anthony’s (@anthonyslai) full Glass adventure starting with the prologuethe week before, and Day 1 posts.

I met with Jake and Noel the next day I got the Glass.  To anyone who tried it, everyone seemed to be pleasantly surprised with  the current features.  At that time, no Twitter and Facebook integration even existed.  Just having Google search, photo taking, video recording, and GPS navigation already made it a great device.  Of course, it is still arguable whether it worth such a high price tag; on the other hand, it is all about economies of scale, and the price will go down, although probably not for this year.  To me, yes, I do think it is slightly expensive, but I think it is still worth it.

Regarding to the glass piece, the technology behind it is apparently a Google secret, as they were not willing to disclose it during the FireChat Session in Google IO.  I think this makes sense as the glass piece is probably the hardest to replicate and copy.  I just had a funny feeling as I often get asked, “Is that… Google Glasses?”  Well, technically, it is Glass, not Glasses, although I had the same misconception myself. 

The other question which I find interesting is, “Did you get it from Amazon?”  Although I answered the question seriously, maybe I should have said, “Yes, I got it from Best Buy with a promotional discount.”.  The questions I received normally ranged among the 2 extremes, either they know the technology really well, or they have no idea about what it is.    As it is not readily available to the general public, only people who are passionate about technologies would have looked into it.

Before Glass become widely available, Glass can be as an excellent ice breaker.  People were generally genuinely interested in the Glass experience, and they would approach you and they were about it.  In the afternoon, I went to Health 2.0 Refactored.  This was how I met up with couple people in the conference and get to know each other.

There were a lot of reports about Glass haters.  People mostly have privacy concerns, worried that you are taking pictures, recording videos secretly without their permission.  In this era where almost everyone are having a smartphone with a high resolution pixel camera, I do not think this is avoidable.  We will just have to live with it.

The other concern is that Glass can be used to pull up all your personal information by just looking at you.  My question would be, “Where and how do they find your information?”  Your name, maybe yes.  Social security number, probably not.  If they do know about your social security number, do they need to look at you to find it out?  As with all technologies, it can serve both good or evil.  For example, this can be useful when interviewing candidates.  Hopefully, people would have a peace of mind for now, knowing that facial recognition is banned by Google.  No more seeing the statistics of your opponent like in Dragon Z.
20756_dragon_ball_z

In my case, no one I met with dislike me wearing Glass, and my experience so far had been great and positive.Possibly Related Posts:

Thoughts on Intel’s Hadoop distribution

When I heard that Intel announced their own Hadoop distribution, my first thought was “Why would they do that?”. This blog post is an attempt to explore why would anyone need their own Hadoop distribution, what can Intel gain by having their own and who is likely to adopt’s Intel’s distribution.

Why does anyone need an Hadoop distribution? Hadoop is open source, and it would make sense that RedHat and Canonical would package Hadoop and add it to their own distribution – just like they do to MySQL and other open source applications. Instead, we have Cloudera, Hortonworks, MapR, EMC, Intel and probably many more, each with their own Hadoop distribution.

When you try to pick an Hadoop distribution, the first thing you’ll notice is that each one has slightly different set of components. Cloudera includes Flume and Scoop which HortonWorks doesn’t. HortonWorks includes Ambari and a platform by Talend. Having a distribution gives companies a chance to define Hadoop. This matters a lot to new adopters, and especially larger companies – we look at the distribution as an indication of which components are safe to use, and are reluctant to add components outside their distribution.  As an example,  Oozie and Azkaban are similar tools performing similar task of managing jobs in Hadoop. In my experience, Oozie is far more popular, not because its a superior tool, but because it is part of the popular Cloudera distribution.

There’s a reason Hadoop users prefer to use a distribution as a whole rather than mix and match toolchains: With many components in an Hadoop production system, matching the versions to make sure all the tools are working well together is a challenging task. Companies that release their own distribution pick the correct versions, test a lot and furiously patch to make sure all the components will work as one whole. This is somewhat similar to the way Oracle will announce that 11g is supported on RHEL5 but not RHEL6, except much more so. Of course, Redhat could do the same, as they do to all software in their Linux distribution, but as you can see, they don’t.

When users choose a well known distribution they don’t just get a well chosen and tested mix of components,  they also get the option of purchasing support for this distribution. Thats the main benefit for companies selling their own Hadoop distribution: You go to all the trouble of picking components and testing them, so that you are well positioned to provide support for them. Other companies can of-course sell support for the same distribution – Pythian will happily support any Hadoop distribution you choose. But the owner of the distribution has some advantage since it is much more difficult for 3rd party supporters to offer bug fixes in Hadoop code.

Of course, all this doesn’t apply to Intel, who show no intention of selling support.

So why would Intel need their own distribution?

Lets start from basics – Intel sells CPUs. Thats their main line of business. But they also write software. For example, Intel’s C compiler is first rate. I used to love working with it. Intel wrote their own compiler so executables generated with it will always use the best Intel features. This means that popular software would run faster on Intels, because their performance features will be used even when developers don’t know about them (Oracle Optimizer attempts to do the same, but with less success).

How does it apply to Hadoop? Clearly Intel noticed that Hadoop clusters tend to have lots of CPUs, and they are interested in making sure that these CPUs are always Intel, possibly by making sure that Hadoops run faster on Intel CPUs.

Lets look at Intel’s blog post on the topic: http://blogs.intel.com/technology/2013/02/big-data-buzz-intel-jumps-into-hadoop

“The Intel Distribution for Apache Hadoop software is a 100% open source software product that delivers Hardware enhanced performance and security (via features like Intel® AES-NI™ and SSE to accelerate encryption, decryption, and compression operation by up to 14 times).”

“With this distribution Intel is contributing to a number of open source projects relevant to big data such as enabling Hadoop and HDFS to fully utilize the advanced features of the Xeon™ processor, Intel SSD, and Intel 10GbE networking.”

“Intel is contributing enhancements to enable granular access control and demand driven replication in Apache HBase to enhance security and scalability, optimizations to Apache Hive to enable federated queries and reduce latency. ”

Intel is doing for Hadoop the same thing it did for C compilers – make sure they use the best hardware enhancements available in the CPUs and other hardware components available from Intel. The nice thing is that the enhancements are available as open source – Intel doesn’t care that the software is free, since they are selling the hardware!

And since its open source, we can take a peak at Intel’s Github repository: https://github.com/intel-hadoop

What can we find there?  We have Project Rhino (https://github.com/intel-hadoop/project-rhino) with Intel’s security enhancements and Project Panthera (https://github.com/intel-hadoop/project-panthera)  offering advanced SQL support for Hive and improved performance for HBase. There’s also  a benchmarking suite (https://github.com/intel-hadoop/HiBench) and  Performance Analyzer (https://github.com/intel-hadoop/HiTune) .

Improved Hadoop security is on the top of the list of things the enterprise needs from Hadoop http://tdwi.org/Blogs/Philip-Russom/2013/04/Hadoop-Functionality-that-Needs-Improvement.aspx - mixing Intel’s well known encryption support on the CPU with the enterprise requirement for improved security is a very smart move in my book. I know that security is much more than just fast encryption, but if Intel can leverage their security brand to create a strong security model for Hadoop, its a welcome effort.  The security offerings are promising indeed – key management, unified and integrated access management, and possibly even replacing Kerberos with something better integrated? Sign me on, and from what I heard – my customers are ready to sign too.

None of those were officially released yet, and I didn’t try to compile the code and run, so I can’t say much about what is actually delivered. Perhaps someone did and can comment. But I did notice another interesting detail. The Project Rhino README lists all the Hadoop components that Intel intends to include in its unified and integrated security model:

  • Core: A set of shared libraries
  • HDFS: The Hadoop filesystem
  • MapReduce: Parallel computation framework
  • ZooKeeper: Configuration management and coordination
  • HBase: Column-oriented database on HDFS
  • Hive: Data warehouse on HDFS with SQL-like access
  • Pig: Higher-level programming language for Hadoop computations
  • Oozie: Orchestration and workflow management
  • Mahout: A library of machine learning and data mining algorithms
  • Flume: Collection and import of log and event data
  • Sqoop: Imports data from relational databases

Looks familiar to anyone? Thats more or less identical to Cloudera’s Hadoop distribution. Why did Intel choose to use CDH? Possibly because of its focus on the enterprise toolchain – those are the tools you’ll need to build an ETL pipeline and a data-science practice on Hadoop. If Intel’s unified solution won’t include these tools, getting the enterprise adoption they are looking for will be a much bigger challenge. However, it does open new questions: Will Intel offer support for the distribution, or will they leave it to Cloudera who already support all the components? And can you have a “unified security solution” that leaves HortonWorks and MapR completely out of the plan?

Its far too early to tell where this will all go, but so far Intel made interesting decisions that make me look forward to the day when they’ll have more to download than just a PDF. If you have thoughts on where this is all going, I’m looking forward to reading your comments too.

Clustering Factor Calculation Improvement Part III (Too Much Rope)

In my previous post, I discussed how for larger tables that really do have randomised data, not even setting the new TABLE_CACHED_BLOCKS to its 255 maximum value is going to make any real difference to the resultant Clustering Factor (CF) of an index. The 255 maximum value here protects us somewhat from abusing this capability […]

ROWID

Here’s a suggestion to help you avoid wasting time. If you ever include the rowid in a query – not that that should happen very commonly – make sure you give it an alias, especially if you’re using ANSI SQL. If you don’t, you may find yourself struggling to work out why you’re getting an irrational error message. Here’s an example that appeared recently on the OTN forum, with the output cut-n-pasted from a system running 11.1.0.7:

select 
	'1' 
from 
	dual a
left join 
	(
	select	c.dummy, b.rowid
	from	dual b
	join	dual c
	on b.dummy = c.dummy
	) d
on 	a.dummy = d.dummy
;

select
*
ERROR at line 1:
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table

The error doesn’t really seem to fit the query, does it?
If you want to bypass the problem all you have to do is give b.rowid (line 7) an alias like rid.

As far as I can tell, the problem arises from a defect in the code that Oracle uses to transform the query before optimising it. Given the nature of the transformation it’s possible that you’re only going to see the problem manifest like this if the SQL uses ANSI forms; in this particular case changing from the ANSI left outer join syntax to Oracle’s standard (+) syntax also bypasses the problem. To narrow down the cause, I simply enabled event 10053 (the optimizer trace) and got lucky. The trace file showed an interesting “unparsed SQL” statement which, stripped of double-quote marks and re-formatted, was as follows (in 11.1.0.7 – this may vary with version of Oracle):

SELECT 
	A.DUMMY QCSJ_C000000000600000,
	from$_subquery$_007.DUMMY_0 QCSJ_C000000000600001,
	from$_subquery$_007.ROWID_1 ROWID 
FROM 
	SYS.DUAL A, 
	LATERAL( 
		(
		SELECT 
			D.DUMMY DUMMY_0,
			D.ROWID ROWID_1 
		FROM	(
			SELECT 
				from$_subquery$_005.QCSJ_C000000000500001_1 DUMMY,
				from$_subquery$_005.QCSJ_C000000000500003_2 ROWID 
			FROM	(
				SELECT 
					B.DUMMY QCSJ_C000000000500000,
					C.DUMMY QCSJ_C000000000500001_1,
					B.ROWID QCSJ_C000000000500003_2 
				FROM 
					SYS.DUAL B,
					SYS.DUAL C 
				WHERE 
					B.DUMMY=C.DUMMY
				) from$_subquery$_005
			) D 
		WHERE
			A.DUMMY=D.DUMMY
		)
	)(+) from$_subquery$_007

Note the alias of ROWID appearing in lines 4 and 15. If you tried to run this SQL from the command line (after fiddling the event to enable lateral() views), or even just the simple select running from lines 13 to 26, you would get error ORA-00923: FROM keyword not found where expected. My guess is that the context in which the optimisation takes place means that this error is re-raised as the error ORA-01445 that we ultimately see.


Another Go with the Chromebook

Anthony (@anthonyslai) has been using his Chromebook lately, by necessity, and a combination of recent speculation and my own gut tells me that I should try to work my Chromebook back into the regular rotation.

Actually, the speculation isn’t recent. Anton Wahlmann predicted a Chrome OS smartphone two years ago; he’s just updated his prediction based on the happenings at I/O.

He makes an interesting argument, and given the consolidation of Android and Chrome OS under Sundar Pichai, it makes sense. Also compelling to nearly everyone, the sudden and unexplained appearance of a chrome-plated Android robot at Google HQ.

So, I’m giving the little guy another chance to find a home in my gadget arsenal.

I’ve had a Chromebook for a few years, the Samsung Series 5 3G Chromebook, but like many gadgets, it’s gone unused. Picking it up again for the first time in a while, the first striking feature is how many updates I’ve missed.

Chrome OS has undergone some major changes, since I last used this device. Yes, I’m using it now. It now feels like an OS, rather than just a Chrome browser, with a desktop, a listing of “apps” and a system bar.

It also doesn’t feel dated, unlike most two-year-old devices do. For example, the Nexus S, which I got new at about the same time, is woefully under-powered running the most recent version of Android, Jelly Bean. Google has obviously taken care to architect Chrome OS to maximize the low-spec hardware.

The features of Google’s web apps, like Hangouts, make it seem more functional, and the speed Anthony references is still there, providing instant-on and snappy reboots for updates.

So, not surprisingly, the Chromebook is an ecosystem device. Google stuff looks good and runs well. Web stuff is mostly the same. Beyond that, you have to wade into deep water. Check Anthony’s post for examples.

One early show-stopper for me still exists, VPN support. It’s baked-in, but not for the VPN I need for work. That won’t change anytime soon.

Overall, it’s not bad to use. Unlike the Pixel, my Chromebook feels like exactly what it is, a cheap laptop. Not necessarily a bad thing, just an observation.

Actually, the device’s cost and its lack of local data make it a perfect traveling machine. Don’t want to carry your fancy laptop and its accessories on vacation? Just throw a Chromebook into your luggage. It’s fairly rugged, and the mental cost of losing it is much lower.

I did this equation in my head during a trip last year, and found it quite liberating to leave behind the Macbook Pro and laptop bag.

The size is nice, but it’s a bit too small for my lap and the keyboard feels a bit cramped after extended use. Google has rearranged a few keys, specifically the ctrl one, which has caused some relearning.

The trackpad also tends to catch my fingers as I type, moving the cursor around magically.

Otherwise, the device works very well. So, why wouldn’t Google create tablets and phones for it? Firefox OS is proving there is room at the other end of the smartphone market, where apps are less important than portable internet connectivity. They may have competition soon.

Find the comments.Possibly Related Posts: