Friday, October 07, 2005

Next Book, Part II

I wanted feedback on my proposed topics and I got it.  Thanks very much to everyone that contributed.  I’ve modified the outline accordingly and I think it looks pretty good.  However, I’m open to more comments!

I put back in some dynamic SQL, in a newly added section on PL/SQL.  It makes sense there.  Beefed up the security section with more stuff.  Added a Design considerations section.

One thing I will not be covering is the use of specific application development tools such as HTML DB.  There are a couple of books coming out on HTML DB itself in the near future that I’m aware of.  I prefer to remain “tool independent”.  I believe the material I’m covering impacts every Oracle development shop – regardless of the tools used. And I’d like to keep it that way.

One other thing I will not be covering is the area of backup and recovery.  I cannot do it justice in a chapter, and there are in fact pretty good books out there already (Freeman, Oracle Press – RMAN book).

So, if you have further feedback, feed away – I’m going to stop comments on the other entry and point them here.

I) Introduction
Short light and fluffy section to get going – why you have to design if you want to have any of the following three items…
1) Design to perform  
Case studies, analogies to why performance is something you design into the “system”, not something you graft on later.  You need to understand a bit about the use patterns of your data and design accordingly.  Performance does not “just happen by accident”.  
2) Design to scale
Similar to prior section, but goes one step further.  Ok, so you have the fastest single user piece of code ever.  But if two people run it at the same time – it takes forever.  Single user doesn’t cut it – you need to design  your application with scalability in mind – and constantly benchmark mark throughout development in order to ascertain you can meet the required load.
3) Design to secure
Security doesn’t happen by accident.  Security is really hard to graft in after the fact.  Case studies and analogies (I have a favorite analogy using a “car” and what would happen if security wasn’t designed in)
4) Design to be available
Availability – when was the last time someone said “it is OK if you are down, no rush, take your time…”.  So, how do you design to be available…
5) Design to be portable
Same sort of concepts here as the prior sections….

II) Performance & Scalability
Very much like the existing work in Expert One on One but redone to cover the new tools, new options.  Statistics is all new, I ignore that in the first book.  
1) Performance Strategies
Overview of ‘how to tune’ which to me really starts with ‘how to design’, much easier to design than to ‘tune’.
2) Tools
Coverage of the classics – tkprof, statspack, runstats.  Coverage of the 10g new dbms_sqltune package and the like.  Might even mention the GUI (
3) Statistics
Statistics are an area of “gray fog” for many people.  This will be an introduction to what they are – what the defaults for gathering them imply – and suggestions for what to consider when gathering them/determining how/when to gather them
4) Instrumentation
The ins and outs and why of instrumentation.  Why it is crucial, vital, necessary – and most of all, helpful
5) Testing
What to test, how to test, how 1, 2, 3 above fit into testing.
6) All About Binding (includes sql injection)
All about binding covers everything – performance, scaling, memory utilization, SECURITY, peeking, cursor sharing exact, force and similar.
III) Security
I had FGAC the first time (but a LOT has changed), and a preliminary N-Tier (to be totally redone).  Grants, roles and the like – new.  Auditing – new.  Invokers and Definers rights will be perhaps the least changed of all chapters…
1) Grants, Roles and the like (least privilege as a theme)
how to use grants, roles and the like properly – meaning most implementations get it “wrong”, they over grant like mad “just in case”
2) Automating database logins
A good idea – how to automate database tasks “safely”
3) Fine Grained Access Control
All about VPD, maybe compare to OLS?
4) Auditing
The options you have for auditing, why auditing is relevant, why auditing is not overhead, why auditing should be designed into the application beforehand.  Ties in with last section way below however – on data purging…
5) N-Tier Proxy Authentication
description of what it is, how it fits in, why it is useful.  Examples of how to “use it”
6) Invokers/Definers Rights
What is the difference – roles and plsql – when do you use which kind.  Why plsql stored procedures rock and roll from a security perspective in further helping to carry the least privilege theme further on down..
IV) Advanced SQL Features
Lots to add to analytics!  Materialized views, much to add.  Practical Partitioning – in the Architecture book I described “how” they work, here I’d like to look at practical use cases.  So, it’ll be different from the Architecture.
1) Analytics
All about analytics, take existing chapter and update with more examples learned over the last 4 years and add new features.
2) Materialized Views
What they are, how they are, what they do – cover MV creation, maintenance, query rewrite, dimensions.
3) Practical Partitioning
Different from the architecture chapter where I described the physics behind partitioning, this will show “use cases” – when to use partitioning, how to decide when to use partitioning.
V) Advanced PLSQL Features
1) Using Datatypes (collections, arrays, etc)
Cover the ins and outs of using the various more “complex” datatypes in PLSQL, when to use what.
2) Dynamic SQL
When and Why to use dynamic sql (which is in reality a lot less often than you think).  How to use dynamic sql – revisit sql injection talked about in all about binds
3) Optimizer Settings
Not the CBO – the PLSQL optimizing compiler, what the levels are/do and what changes between each.
4) Native Compilation
How and why and when to ncomp your code.
5) Exception Handling
How and why and when to actually have an exception, why “when others” not followed by RAISE; is probably a bug.
6) Conditional Compilation
How and why and when to use conditional compilation in 10gr2 and above.
7) Bulk Processing
VI) Extensibility
Spatial will be new… External procedures will be much de-emphasized, as they have been in real life with the advent of java stored procedures over time.  Object Relational will be from the perspective of “using them in PLSQL to make PLSQL a better language”, not using them to store data in the database…
1) Domain Indexing
- Text
- Spatial
2) External & Java stored procedures
De-emphasize external procedures in C, but still describe them and demonstrate them.  Concentrate more on java stored procedures – the how, when and why to use them.
3) User defined functions/aggregates
Define them – demonstrate them, caveat them – show also how you can create your own *analytic* functions which is pretty cool.
4) Object Relational Features
Much like the existing chapter, updated to cover the 4 intervening releases.
VII) Design considerations
Collection of thoughts on things to consider when working towards build a system in support of OLTP, Data Warehousing, or in order to support data purging.
1) For OLTP
2) For Data Warehousing
3) For Archiving


Blogger Bill S. said....

How about a contrast/compare between VPD and OLS? Might help some places make a better informed decision of which to use (or when to use both). :-D

Fri Oct 07, 02:28:00 PM EDT  

Anonymous Anonymous said....

I'm assuming the section on collections will include information on BULK operations, and why they are good (with a nice Tom-style example)?

Fri Oct 07, 03:56:00 PM EDT  

Anonymous Eddie Awad said....

How about a new topic "XML and SQL" under "Advanced SQL Features"? or a topic about Oracle XML DB?

Fri Oct 07, 04:39:00 PM EDT  

Blogger Thomas Kyte said....

VPD and OLS - under consideration

BULK operations - doh, should have been there...

XML - let me think about that.... Nope, I doubt it - XML isn't something I know a terrible large amount about. I'll stick to writing about those things I know really well.

Fri Oct 07, 05:17:00 PM EDT  

Anonymous Anonymous said....

can you please give the name of HTML DB books that are comming out.

Fri Oct 07, 05:32:00 PM EDT  

Anonymous Partha said....


How about a part on testing. We keep talking about test, test, test everytime, but what becomes a priority for a developer to test. Is it testing for functionality, testing for performance or testing for wrong data?. Based on time constraints and priorties developers do just 'right condition testing'. As you mentioned in part of design, single user and multiple user testing are so different.

When we start with a project I normally advise my team to fill out the tables with fictious data which resemble the size of the production environment, and let them do the development in that. If developers themselves start complaining that it is slow, then we can understand the production users.

Testing concepts, importance of why we need a test environment, what to test, parameters which help in testing, simulation, repeatability etc could be some of the things that can be covered.

Sat Oct 08, 01:49:00 AM EDT  

Blogger Thomas Kyte said....

name of some html db books

is one I'm aware of, search for html db on amazon...


Very good - I've modified the outline above to incorporate that.

Sat Oct 08, 07:58:00 AM EDT  

Anonymous Anonymous said....

Just wondering if DBMS_PROFILER will be included in the Performance & Scalability section.

Sat Oct 08, 09:46:00 AM EDT  

Anonymous rao said....

Is it possible to have a chapter/section on SQL and best practices in SQL with some case studies ? I know this is very basic but many people ask questions on SQL - in vs exists, outer join , scalar subqueries etc..Some of the topics have been covered in Oracle by design book but it would be nice if you include these topics in this book also. thanks.

Sat Oct 08, 10:47:00 AM EDT  

Anonymous Anonymous said....

Not really related to this blog post, but can you please point me to where you recently blogged about good non-fiction books to read?


Sat Oct 08, 01:57:00 PM EDT  

Blogger Thomas Kyte said....

good non-fiction books to read?

not sure what ones you mean...

there has been blink, crimes against logic and the like - but most of what I've talked about bookwise recently has been fiction.

Sat Oct 08, 02:27:00 PM EDT  

Anonymous Anonymous said....

Found it

Thanks, the comments to that blog post have a great list of books.

Sat Oct 08, 02:41:00 PM EDT  

Anonymous Anonymous said....

> Is it possible to have a
> chapter/section on SQL and best
> practices in SQL with some case
> studies ? I know this is very basic
> but many people ask questions on SQL

Agreed. I won't insult Tom by saying he is an "SQL wizard", but clearly he is an SQL Master. If there were any way to walk the readership that hasn't achieved that level of mastery through some basic-to-complex SQL solutions I think it would help a lot.

My vote is for queries against hierarchical data with cumulative factors (bill-of-material with shared based compenents / differing qtys)!


Sun Oct 09, 11:38:00 AM EDT  

Anonymous Ram said....

In the design section talking a bit about HA basics - like principles, hardware used, etc.

A brief section on storage basics please - SAN, RAID, ..

Sun Oct 09, 11:59:00 PM EDT  

Anonymous Will said....

Hope you're going to cover the use of the model clause in the analytics chapters. :)

In the design section, could you include something on business rule implementations? In know we all agree that the database is the best place for business rules, but how about some examples of complex constraints, when to implement the rules in triggers etc? And of course, highlighting any methods that have a negative impact on performance.

Mon Oct 10, 04:15:00 AM EDT  

Anonymous GVN said....

When is this book planned to be published?

Mon Oct 10, 08:23:00 AM EDT  

Blogger Thomas Kyte said....

When is this book planned to be published?

right after I write it.

2006 sometime.

Mon Oct 10, 08:37:00 AM EDT  

Anonymous Ofir Manor said....

Hi Tom,
I think that in the performance section you can dare to present some examples using the 10g database control... Its performance tab is really powerful and easy to use, and might be very relevant in some chapters, in addition to the reproducible code samples.
Also, the dbms_profiler is a very powerful tool, maybe it should be include in the performance or pl/sql discussion in this book and not in book 3 (or at least add a "forward reference" to book 3, so readers will look it up).

Tue Oct 11, 11:49:00 AM EDT  

Anonymous Anonymous said....


I was please to know that you are going to have a chapter/section on testing. I think it's such valuable part of being a developer and yet so often wildly overlooked.I hope you will cover testing in isolation, testing concurrently and of course testing and more testing..from the simple select to packages.

Thank you.


Tue Oct 11, 02:57:00 PM EDT  

Anonymous Anonymous said....

How about a really section with non trivial examples on parallel pipelined functions.


Tue Oct 11, 05:23:00 PM EDT  

Anonymous Ram M. Pillai said....

Absolutely love the examples on and in your books. If it doesn't breach client confidentiality,
could you publish some real 'live' case studies too..

Thanks for your continuous contribution to the Oracle community


Wed Oct 12, 09:01:00 AM EDT  

Anonymous Anonymous said....

Absolutely love the examples on and in your books. If it doesn't breach client confidentiality,
could you publish some real 'live' case studies too..

Thanks for your continuous contribution to the Oracle community

Ram M. Pillai

Wed Oct 12, 09:02:00 AM EDT  

Anonymous Anonymous said....

Tom what is really new here?
You want feedback, I'll give you some honest and direct feedback, no offense intended.
Abnd obviously I can be wrong. Don't take too seriously.

I read analytics (they were in your previous books)
I read all the points, and it seem some will be better.
But personally I don't think to buy it because I think is the same, maybe something more, but generally (I say about 80%) will be the same you talk in your other books.
IN fact I didn't bought your book oracle 9i 10g.
I understand the basics are important, but think in this way if I read your previous books what I'll got new?,
If there is something really ipmortant, then you should tell and explain to people who bought your books, beacuse I don't see honestly. I'm not g oing to buy your books beacuse they have the basics, and read the same topics 3 times, because you think they are important (And I'm sure they are I'm not discussing this), But I know them, I want something new.
3) What I want personally are explanation of all the technologies, in the way to do
- Brief Introduction
- Ideas of use them
, that there are in Oracle and usually nobody uses, if you don't know, well I think you could include some co-author
4) You are coverin the basics in prvious books, why you want to continue covering the basics now.
I don't see nothing deep here.
Is true basics are basic, but you have 3 books out there, do you want to have 4 books about the basics?
Don't you think people will get bore about this?
Why not htmldb, no body want to replace documentation with your book, neither waiting you to teach about using html db, I personally want your honest opinion about how to use it, and some applications,
some experiences, you could share from Oracle, not necesarily from your own experience..
To learn htmldb I'll go to documentation, , what I expect is the f act you go to oracle go to the people who is working with htmldb, talk with them, some invetigation, and share Oracle Company's experience, throught your excellend good and common sense.
I appreciate your opinion, not the fact you talk only about what you know or do directly and a have complete knowledge
5) I'm going to ask you and beg you cut basics chapter. You have included in your previous books
For example on security: 1) Grants, Roles and the like (least privilege as a theme), 6) Invokers/Definers Rights, etc.
And please please, kill analytics, you had covered it previously very good.
Unless obviosly there is really something really new and interesting t here. like more examples, and test. But I think you covered very weel on expert one on one, I'll prefer an introduction to new java packages for exampel in 10g.

I think you think people who is going to acquire your books, will acquire this book and only this book; I don't think so, in reality I think, most of them had acquired
your previous book, and if not, they will. I don't understand what new you can include in your chanpteer analytics or materialized views, you didn't previously?.

Maybe I'm wrong why not ask to peole who read your three books if they perceive you are repetitive in asktom?

I really will like ( I better say I need ) detailed explanations, as I said I will like step by step all in order, to know how Oracle goes updating dictionary and memory tables when you for eaxmple do a select select * from dual where 1=1, this iwll be really interesting.
I need to understand in detail of a simple update.

I think I could write a b ook better than you, not because I know more than you, else because I don't see you want to move out than a very brief group of themes.
You know I'm not lieing you can go and check your table of contects from your books (including this) and you will see, there is few new topics. And if they are something new, then tell what are new there.

There is a lot of information you know about Oracle, for example about CBO, I think you could do an investigation and to do a really good book explaining his use.
But only write a book on that topic, only cbo, I perceive you can't gather more deeply in only one topic without talkin always about the same basics. Or someone forces you to include in every book the same topics?.and allows only a few pages for new ones?

I think if you want to write a new book think in investigatin some topics you don't know, the advantage I see you have is the facilities you have to get information about how things are really working.
And more important is the good sense you have.

Other think I think could be interesting
more scripts (not the same you always give)
maybe software in perl (your test basically) for example to test, creating tables, runing your test and givig the ootput, all only pressing a button

Good luck in your new book :)

Cookie Cookie Cookie.

Sun Oct 30, 07:29:00 AM EST  

Blogger Thomas Kyte said....

In response to the long comment right above...

You wrote:

I read analytics (they were in your previous books)

I have two previous books - Expert One on One Oracle (of which "Expert Oracle Database Architecture and Expert Oracle Database Development" are intended to be UPDATES OF) and Effective Oracle by Design.

Now, in Expert One on One Oracle - I have a chapter on analytics (up to 8i release 3 - 4 database releases ago). In Effective Oracle by Design - I mention them in passing - but do not really cover them.

So, in a book that is an UPDATE of Expert One on One Oracle - I will have analytics again, along with all of the updates to analytics that have happened in the intervening 4 versions of Oracle that have been released since I first wrote of them.

If you read the links I pointed you to from asktom - You would have read that that the new book (Expert Oracle Database Architecture) is about 60-70% *new* - not "80% old" as you say.

In the end - it is up to you, but the database changed a bit in the 9i/10g timeframe - automatic this that and the other thing - much new material.

You wrote:

I understand the basics are important, but think in this way if I read your previous books what I'll got new?,

In response to that, I'll just say read this. A lot has changed.

I've never covered the topics "three times"

Expert One on One Oracle and
Effective Oracle by Design

(my two books) have similar themes (understand, understand, understand) but very little overlap. Expert One on One Oracle is *factual*, how Oracle works. Effective Oracle by Design, while based on facts, is more of a best practices book. They are very different.

And given that Expert Oracle Database Architecture and the forthcoming Expert Oracle Database Development are the UPDATES to Expert One on One Oracle - you will obviously see some overlap, but you should also recognize how different they are - and that they cover 9i and 10g - something the now almost 5 year old book does not.

You wrote
3) What I want personally are explanation of all the technologies, in the way to do
- Brief Introduction
- Ideas of use them

Well, that is sort of what I do?? Confused here.

As far as html/db, xml, etc etc etc - I write about that which I am best at. I'll leave those topics for people that are best at them (and frankly wish lots of other book writers would do the same - write about what they KNOW, not what people think they should be writing about because it'll see books)

5) I'm going to ask you and beg you cut basics chapter. You have included in your previous books
For example on security: 1) Grants, Roles and the like

Where have I? Never before have I - why am I now? Because of the appalling lack of knowledge I have encountered in the field, in real life on these topics.

Time after time after time - no one *thinks* about this.

Sorry - but I haven't actually written about these things - least privs, thinking secure. In fact my coverage of security in the past has been light - it'll be getting much much heavier.

Kill analytics? Never - the coolest thing to happen to sql - never. This is a 9i/10g book - if you don't want to buy it that is great, but a lot of first time people will be - I'm covering that which I think they need to know.

as I said I will like step by step all in order, to know how Oracle goes updating dictionary and memory tables when you for eaxmple do a select select * from dual where 1=1, this iwll be really interesting.

Interesting but totally useless day to day. You need to understand how a statement is processed (covered in depth in Effective Oracle by Design).

I need to understand in detail of a simple update.

Covered in depth in Expert One on One Oracle and now the updated for 9i/10g Expert Oracle Database Architecture.

anyway - if you can in fact write a good book on Oracle, something you are expert in - I would strongly encourage you to do so. I hope more people that are *EXPERT* in a certain area (like Jonathan Lewis with the CBO) do so. I hope more people stop writing just because they can - about topics they are not expert in (something I won't ever be caught doing)

Sun Oct 30, 01:11:00 PM EST  

Anonymous Anonymous said....

You say your books will be at least 60-70% new.

Effective design was really at least that percentage new.

So I trust you, I'll like something 100% but anyway. I t hink I'll buy them.

:) Thanks Tom.

Mon Oct 31, 07:58:00 AM EST  

Anonymous Anonymous said....

I will use your books more now because Apress has made all the latest Oracle books available in pdf format. I don't have to carry heavy books every day and I can search for any specific term. Wonderful, it took too long.

Thu Dec 01, 12:29:00 PM EST  

Anonymous Anonymous said....


Ran into this post from a link in your latest post.

One suggestion - along with Analytics, I think it would be great if you could also have a chapter on hierarchical queries. This is one of the most interesting parts of SQLplus, and you have some great discussions on this on asktom.

Maybe also a chapter called "thiniing in SQL"!

Tue Mar 07, 02:22:00 AM EST  

Anonymous Anonymous said....

Any plans of including "Rules Manager and Expression Filter" in your new book .

Fri Sep 22, 02:22:00 PM EDT  

Anonymous Anonymous said....

Hope there will be a chapter on 'SQL on Modelling '

Mon Sep 25, 03:27:00 PM EDT  

Anonymous Anonymous said....


I want to know what will be oracle like 5 years down the line, is there any major change to the way in which oracle is used today like moving more towards Java and getting rid of PL/SQL. DBA jobs like installation and recovery becoming more user friendly. Or working on oracle becomes lay man's job or specilized skill.


Thu Oct 05, 12:10:00 PM EDT  

Anonymous Anonymous said....

Nice topics. I am so eager to read this book. However, would you please add some practical examples for using DBMS_CRYPTO package as exactly as you did in your previous book when you have added a special appendix for DBMS_OBFUSCATION_TOOLKIT??

Moreover, would you mention ASM (Automatic Storage Management). I have tested ASM and read most of the WP at OTN and posts, but I do like to read your own practical experiment in this.

Regards, and thanks in advance for your great books.

Tue Dec 26, 01:50:00 AM EST  

Anonymous Arup Nanda said....


I think it will help the readers to have a chapter on the concept of one database for many application; not tiny databases all over the place. The chapter should show the benefits and how to exploit them; and challenges and how to overcome them using concepts like Service Names, Resource Manager to regulate the resource usage. You can extend the chapter to cover the scheduler to kick in various windows depending on the time and so on.

Another one is the description of external tables under your PL/SQL headings. You might want to show some non-traditional use of external tables such as defining one on the listener log to show the usage of service names.


Tue Dec 26, 08:33:00 AM EST  

Anonymous Anonymous said....

Hi Tom

Just happened to read this post. I have been enjoying the way you write books.

For the next book, I am kind of greedy. Here is my input.
Is it possible
? In the [Performance & Scalability] part , how about extending the chapter [All about binding] to [All about cursor and binding].
? Also in this part, how about adding a section in each chapter, focusing particularly on a RAC environment, or make it a separate chapter.
? Adding a chapter called like [[Locate problem/bottleneck at a right layer]]. The idea is from the workplace. When things go wrong, for instance, system slowing down, each team, such as Network, Unix, Oracle and WebLogic tried to shift reposibility. How an Oracle DBA can quickly locate the problem/bottleneck? If it is at database layer, we should fix it. If not, we should escalate to the right team.
? In the [Design Considerations] part, how about adding [For Distributed Environment]


Wed Dec 27, 01:57:00 PM EST  

Blogger Ayisha said....

these are gifts for everyone
Collection of books
Kitab ghar
Books and references
Computer Science Reference Books
Rapidshare ebooks
Free collection of ebooks
Free Ebooks

Sun Aug 12, 10:56:00 AM EDT  


<< Home