---
title: WWDC2004 Session 620
framework: wwdc
role: article
path: wwdc/wwdc2004-620
---

# WWDC2004 Session 620

## Transcript

Kind: captions Language: en oon my name is Matt Sturgis on a global alliance manager at Apple who manages the Oracle relationship and I like to thank everybody for coming here it's been a very exciting week for Apple and Oracle start off with a keynote address mentioned by Steve Jobs on Monday followed up a little bit later that morning with some additional messaging about some products availability coming out from Oracle in the coming months with 10g oracle 10g and jdeveloper their development ide for Apple we're very very excited about our relationship with Oracle moving forward I know for some of you out there in the audience this has been a long time coming we're very excited to be bringing this technology to you today's presentation i think is going to be a great great learning experience for everybody here we've got some incredible presenters from oracle introduced in a second but we're very excited again about oracle 10g coming onto the platform today they release in press announcements and it's going to be available this fall again with jdeveloper their java development tools so again i like to thank you for coming today we look forward to to a great event with oracle i like to now as for speakers tom kite is the vice president of core technologies out of Oracle's rest in office responsible for government education and healthcare is going to go ahead and kick off the presentation followed by mark Pierre marini senior technologist out of that office he's going to give us a great demonstration of the power of HTML DB their application development platform so I like to thank Tom and introduce them and get this kicked off thank you [Applause] good afternoon so he said my name is Tom kite I've been with Oracle going on about 11 years now but have been using the database software for about 16 knots just curious just to get a feel in the audience how many of you have developed applications using oracle is the database excellent so I don't have to explain what SQL and other things like that stands for perfect one of the things I spend way too much my time doing at Oracle is working on a website called a spa morecambe that's one of the many resources out there for you to get answers to technical questions and things like that another resource that I'd like to sort of point out get out of there for second and go over into the web browser otn oracle com this is the Oracle technology Network and just to prove that this stuff actually exists you can go there today this afternoon if you like to product centers download for the database and featured right down there we have the Oracle 10g developers release for the mac OS so you can go get it the same software that we're running on these Xers over here for the for the demonstration is what you guys would be downloading and installing in your own environment so what you see is doing are things you'd actually be able to do yourself later this afternoon and back to the slide so we have a really short agenda I'm going to talk about to database things the two main things about oracle 10g the g in 10 G stands for the grid so we're going to take a look at that briefly then we're going to look at the the other half of 10 gb what's in it for all the rest of us the manageability features that they add it to the database 10g has over 350 new things new functional areas added to it over 9i release 2 which had about 150 things over 9i release one which had about a hundred and ninety things over a tie every year we've been coming out with more and more inside the database 10g is our current production relief we started rolling it out on various platforms in the middle of this winter the februari time frame available on the Macintosh now and a developer's release consider that sort of late beta and we're looking at the fall time to go production and then we're going to close up with HTML BB we its marked or marinis going to sort of walk you through and show you what this this development tool is so beginning very simply with the grid this is sort of a picture that describes the sort of systems I've worked on him I've been doing this since the mid-1980s and I started as a peel one programmer on an IBM mainframe using this thing that not many people heard about because I was the newest kid there I got to play with the coolest new stuff so they set me about programming answer this thing called db2 and sequel des and that was really started you know where I got all my my sequel background but pretty much a lot of our systems back then we're mainframe base very reliable centralized these things never went down when I first came to Oracle in the early 90s there was a lot of shift away from a mainframe source centralized environment into more of a departmental server so sovak was what we all ran on I had a VT 100 connected to fax machines everything with character mode we had literally hundreds of servers all over the world running things in the mid-90s we went through this sort of I call it a faux pas this is client-server face I remember 1995 we rolled out to 20,000 sales rep laptops with client server software on it it was called sales force automation is going to make everybody so super productive this would be great the only thing we really got out of this was on Monday we had 20,000 people with the same installation and by Friday we had 20,000 sort of unique installations out there trying to keep the software and thinking keep the patches going was just impossible fortunately in 1995 this internet thing started coming along as well and we migrated all of our applications to a more internet centric approach we sort of got back to a lot of the attributes of the mainframe the browser became our 3278 sort of screen if you will but we went back through a major reconsolidation phase where we took a lot of our systems and clump them together into single systems instead of running 187 email servers we went down to single email servers one of the things that allowed us to do this to sort of consolidate these systems so I'm going to be talking about next this grid architecture so there's a lot of people who study this and they look at systems and they say you know what the way we're doing it is wrong I've got this system that for most of the years it's their Idol or underutilized and they may be one or two months out of the year the thing is really busy I'll use one of my customers as an example the IRS I know they have a lot of systems that in January start to ramp up by April fifteenth at midnight they're going gangbusters and then after that those systems are pretty much idle for the rest of the year but then they have other systems to pick up at the end of April to start processing the data and what they've done is what most of us would do they put somebody in charge of system one and you went out you got his budget you said you know I need to size for April fifteenth they gave another system to somebody else the data warehouse well I need 25 my system for may and so they go out and they buy these mega sort of machines everything is configured for their peak ululation the availability is fairly good not as good as it could be but it's pretty much a poor way to utilize this because there's any point in time if you added up all the free cycles you probably have three empty computer sitting out there because one of the machines is fully utilized and the others are not doing much at all so we've come along along with a lot of other people in Oracle it's not trying to say we invented the grid or the grid is Oracle or Oracle is the grid there's many ways to approach grid computing for us is our very simple definition coordinated use of many small servers acting together as one large computer like a bunch of Xers inside of Iraq this is different from say IBM's programmatic approach to grid computing they have a grid tool kit where someone can take their problem basically decompose it paralyze it use the grid tool kit and come up with a very scalable solution for their particular problem we took it from a different perspective we wanted to take applications that already existed and be able to plug them into this grid environment without having to change them so what we've done is sort of our grid tool kit is our database our application servers you have an application that you'd like to run in a grid sort of environment you don't have to program specifically and build a briton you just take a database application and deploy it in a grid capable database so one of the examples this is sort of what I was talking about before I've got two systems order entry and financials well things go very cyclical this is May 31st at Oracle May 31st is the end of our fiscal year we booked most of our business in the last couple of hours for the year on that particular day those order entry systems are totally maxed out the very next day for the next month the system is really busy is our financial system so we started doing is consolidating these instead of having separate stove pipe systems put our applications into a single database with multiple servers in front of it so we have an order entry financial database single database single set of discs but three or four Wow ever many computers we need able to access that information in a read/write fashion and we can load balance across those so one month two out of three nodes could be order entry the next month to Ebbetts green nodes could be a financial system so we're able to allocate and reallocate these resources very quickly very a MacLean the technology that lets us do this is something we call real application clusters you're all familiar with raid 4 discs that just makes sense at this point you understand how that works maybe you mirror your disks and if you lose one that's okay you still have a mirror of it maybe you're using raid 5 so you have five discs working together and if I lose one that's ok as well Rack is raid for your computer system in a clustered environment like this i'm going to have one database so those four disks represent a single database if you will I'm going to have four instances of Oracle in this particular example so I have four computers that have full read/write access to this single database image I can log in the node 1 and run a query I can log in to node 4 run the same exact query it's going against the same data in fact I can update the same information in node 1 deduction update in node 2 3 and 4 this bodice two things first and foremost it by this much higher availability I have to lose three out of four computers before I'm in danger of having the system become totally unavailable so it gives me the ability to reduce unplanned downtime if I lose a power supply cpu goes bad something happens to a ram chip it's okay one of those nodes can go down the other nodes will pick up the workload the other thing he gave me was the ability to scale my application out I don't know how big my application is going to ultimately be all I know is initially i'm going to have 50 users it might grow to five hundred it might grow to five thousand it's really hard to spy systems for three or four years out sometimes because you don't know how popular some of them are going to be you know the website you're building it to be the coolest thing since sliced bread or is it going to be a ho-hum event well you don't want to have to buy a super-large server to serve up something that becomes a whole arm of event eventually down the road be much nicer to start small with the hardware start drawing it out over time is needed we did this with our email we consolidated all of our email in Oracle from 187 servers down to one we started with a two node rack cluster we needed additional capacity we're now running a three node wrap cluster on our email email for Oracle is a mission-critical sort of application if we don't have email up and running we actually can't process orders we can't do order fulfillment we can't do our job basically so our email system being able to scale it out horizontally by adding additional capacity as well as having it highly available so that it's a single node or two nodes evening sale we still have access to our email systems so what was new in 10g Rack is something we introduced in oracle 9i in oracle a time before you might have known it as oracle parallel server in 10g we made it infinitely easier to install configure and manage so for example one of the things we did was added integrated clustering software in the past so i was using oracle 9i and i wanted to run rack what i have to do is is get the oracle database from oracle i'd have to get clustering software from some vendor I have to get an operating system run this on and then I need some sort of volume management software to manage my disk and that infrastructure you have these four pieces of software probably coming from four different companies or maybe two or three but four different pieces of software are complex software you install them onto the the hardware and you start it up and the first thing that always seem to happen was nothing would work so you call up vendor one and they'd say we need this OS patch apply the OS patch that break the vendor to vendor to set so if you apply that patch we have to have this as well and then that Briggs vendor three and then vendor cerises off if you apply this patch everything's going to be great everything is great but you've got this environment it's pretty fragile you're sort of afraid to apply a patch at that point because what if the patch has a bad interaction say some Veritas software or the security patch causes the networking layer to behave differently and Oracle doesn't respond the same way anymore so you've got this very fragile environment that you're afraid to touch with this integrated clusterware and as we'll see in a minute stories management software you have two pieces of interacting software now we're going to have oracle running just enough clustering software to make your database cluster just that a database cluster I've got 2x serves I want to pull them together have two instances of Oracle accessing one set of disks the only thing I need is the mac OS and the oracle database now if i install it all and something doesn't work i have one place to call i call oracle and they say up do you have this required OS patch no install it if it still doesn't work i still only have one place to call you're not calling veritas for support on their file system software you're not calling whomever for support on their clustering software it's just a database on top of an operating system it's as easy to support and manage as a single database when the single server would have been so the clustered environment now becomes pretty much synonymous with a single machine environment the other thing it gives us new and 10g is automated server provisioning so what I was talking about with the order entry financial systems we're one month two of them order entry in one of them's financials and then later on is that load changes two of them become financials one of them becomes order entry the software can run in one of two modes one is sort of a trust me mode where Enterprise Manager are our grid control piece of software is watching the system and saying you know what the loads been changing over the last couple of hours we're lowering this sort of a service we need more financial services right now order entry it's sort of dying off we're going to take one of the nodes in the cluster and we're going to stop redirecting order entry request to it just start directing financial requests to it the other one is is a mode where you come in and you do this manually we know until May 31st order entry is going to be jamming come April first or april may june june first the financial system needs the resources so the dba's would set up a policy that would facilitate this at midnight or 2 a.m. or during some downtime they would change these services around we also have the ability to slide servers in and out of a cluster just think about it you've got a whole bunch of machines out there kind of them are sitting there is app servers two of them are sitting there as databases come along I don't need as many application servers I'm not I'm not processing orders from the web at this point in time I'm doing more data warehouse things we can actually reallocate some of our application servers to become database servers temporarily so I'll go eight and four and then later on when I need the application servers back we can repurpose those nodes in the cluster if you will they stop being databases and they start being application servers again this is something we can do online without having to shut down and restart and reconfigure the database instances in the cluster which is what we used to have to do in the past the next part is taking a look at storage so storage has the same problem as our servers did if I was asked to five out of system or build a particular system and say oh I need 500 gigawatts of storage and I need a machine dis big in order to run this during that one peak day so if you go out and look at a lot of your storage out there you're going to find that some systems way oversized from system headway under sized industry came up with a fairly nice solution for this call it a storage area network or network tap storage instead of each individual system having its own direct attached storage we pull all those resources the problem with storage area networks and network attached storage in a database environment is that it really made the job of the system greater who is responsible for slicing and dicing up data much easier but did absolutely nothing for the database administrator who's got to work with the storage because what happens I I request 500 gigabytes of storage for my database that's great and a year give me two hundred fifty gigabytes more for next year in a storage area network environment what happened is the system administrator would slice out a mount point for me give me another 250 gig at storage but it's basically this big empty set of stuff over there as a DBA I have to come in and figure out okay what files am I going to move what data am I going to split up what's the best way to sort of utilize this new resource I have spend a week doing that and we'll spend a weekend actually implementing it and the reason it's a weekend is because this sort of movement encouraged downtime in order to move a physical operating system files from you know / v 0 12 / d0 to Oracle can't be writing to that file at that point so this is a downtime sort of thing then next week what happened well we spend next week figuring out how many mistakes we made introducing a hotpoint over here or contention over there and coming up with another plan so that we can spend the next weekend sort of coming back and rebalancing the IL this is a continual process DBA spend a lot of time looking at disks moving files around trying to eke out the best performance they can by making sure that we achieve this Nirvana of sort of even io distribution so in 10g what we did was introduce a database file system so much like you would install your operating system and say use a UNIX file system driver or something like that to build a ufs you're using automatic storage management or ASM to build a database file system this is a file system that does one thing it holds files that Oracle ingest and Oracle processes so it holds redo log files it holds data well it can hold database backup anything that Oracle sort of produces are consumed it can hold what you're not putting here are your your documents your HTML files your spreadsheets unless of course you're actually putting them inside the database this is purely for database file and one thing that it does is it's achieving that goal of even IL across every single device possible so here using that same scenario we started the year with a couple hundred gig of storage we get an additional allocation to us we would be adding these devices into what's known as a disk group this group is what the DBA sees physically at the operating system level you still have all the devices you can manage and monitor it at the OS level but the DBA sees this disk group we just doubled the size of this disk group what you would observe at the operating system level if you cared to watch as you add at these discs would have been a whole lot of read activity on the top and write activity on the bottom Oracle would be going out there and picking up extensive objects and moving them around rebalancing the i/o conversely if you needed to take some storage away from the database I doubled your size but that was fifty percent too much I need to take some of that back for this there's other application over here you can go in and actually remove devices from these fish groups what you'd see then is a whole lot of read activity on the devices you remove and it's spreading out of the data across the remaining devices here so instead of working with files and mount points and moving things around and trying to determine the optimal IO layout yourself the database is now doing it at the database level using the equivalent of a database file system so in short ASM is a portable high-performance database file system it eliminates the need for conventional volume management so for example is if you get oracle standard edition this thing rack comes as a feature of that so you could get oracle standard edition put it on a two node cloth with two CPUs in each box and what you'd be running is our clustering software ASM to manage the disk that's all just the Oracle database and the operating system itself there's no other software to sort of x or integrate into this mix and in fact with the standard edition we don't even support it if you attempt to do that because it makes it too hard to support in that particular environment having it all come from a single place the database managing the database made everything much easier so in short that was a quick peek at some of our grid features gridded is not just rack grid is many things part of its ASM being able to take the storage and allocate it and reallocate it part of the grid is being able to slide things into Iraq cluster and slide things out of a rack cluster part of the grid is being able to just move data around in your network but what we looked at today briefly was predominantly storage related being able to very easily manage storage in an Oracle environment database clustering being with the slide servers in and out of Iraq cluster we didn't really take a look at the application servers but they have the same capability I sort of used that in an example where I had 10 out servers and two databases I can steal from the app servers unplug those components if you will from that grid environment and slide them over into the database environment and then one thing we will be taking a look at is the grid control how do we manage for Oracle instances as if it were a single Oracle instance because that's really what you want to do at the end of the day you don't want to be having to think I've got these four different instances I need to remember to do this over here and that over there I just want to manage it as though it were one now onto manageability oracle 10g could have been called Oracle 10m and sometimes I wish it had been but when Larry Ellison sat down and looked at it you know there's manageability it's hard to spell big it's long and then there's it's very short so we went with 10g but of the 350 new things added to the database over one-third of them were manageability features if you just even look at for example ASM seems like a grid feature seems like something for big databases it's equally appropriate for the small installation I've got I'm the Oracle DBA I've been given six correct attached scuzzy disk and I've been told to make it perform optimally what do I do where do I start but with sick disks I really don't have much of an opportunity so give those to ASM and let ASM implement this striping and mirroring of everything it's using the best overall general iOS group put on this I don't have to worry about this thing so ASM is actually a manageability feature in disguise it's not just a grid feature so I stuck this slide in here and introducing oracle 10g and I colorized the last bullet points because I think many people gave us or conceded the first bullet points yeah it's Oracle's pretty much runs all your applications it's fairly open that way it stores any information you have from rows and columns to spatial to text to images is scalable available reliable pretty secure but what I don't think people would have conceded in the past was it was it was really easy to manage you know it is easy as firing up Microsoft Word and you know put in an ABC and I've got a document that i can print out oracle had a reputation of being able to scale up really large but maybe not scaled down as easily if you will so this is something that we really focused on in the release of this software it was a single biggest effort not just for 10g in a microcosm but in my years at Oracle it was the single biggest effort software-wise that I've ever seen they took this seriously over fifty percent of the architects and the engineers within the server technologies division were focused on manageability related projects this is a widespread effort not just in the server technology on the database but throughout the entire application stack and the application server as well so for example the overriding goal was reduce the cost of managing simple small Oracle instances by at least fifty percent how can we do that well one thing we can do is reduce administration costs we made many things automatic versus manual marc was trying to get oracle going on his laptop which is somewhat memory starved and he's like well how big should make the block buffer cache and how big should i make the java pool and how big should i make the large pool what about this shared pull on the redo log buffers you know i could go through all the pools all the dba's would be glad to know we added five more in oracle 10g so you have like 13 of them that you could five when we took a look at this system and I said you know you got X amount of memory let's get half of it Oracle you can set a single memory parameter SGA underscore target we set that to 200 mega or whatever it was and Oracle come up with the best allocation of memory based on that what it does is sets a relatively small size pool for everything and throw the rest of the memory into those into the buffer cache as the other pools become starved for memory Oracle will come and steal from the buffer cache and give it to these other pools but it made it automatic I didn't have to sit down and think about how to size these 13 caches I just said Oracle take 200 megs of ram and divvy it up the best way possible intelligence vs data I call this one giving the database a long-term memory the dba's out there now that the database is very good at telling you two things about performance can tell you what's happening right now right I can log in I can see what queries are running I can see how many zehrs are connected i can see who's running a long-running query i can see how long the queries have been running for i can see how much work the queries that are still running have done the other thing that can tell me is well since you start at me up two months ago I did X number of transactions I ran this query so many billions of times I've done this over and over again what it can't tell you is at noon the performance problem that was being experienced by your end-users was caused by George that information just doesn't exist in the database anywhere in a very short term memory what's happening right now and then it has this averaged long term memory but they had no real information couldn't log in and find out anything truly useful about the immediate path because it always happened that way the DBA goes out to lunch she comes back the red light is blinking on the phone they pick it up it's George saying hey at noon the system is really really slow I need to know two things from you why and what are you going to do about it when the past unless you had accidentally been sitting there watching the system admin you'd really have no way of knowing the database is now constantly benchmarking itself so when the DBA comes back at one o'clock slide a little window back in the in the database console drop it down they can see what was happening at you know inside the database and for the first time they'll be able to call George back and say we've told you so many times don't hit the stop and the reload button just let the page finish because the performance problem was you submitting the same monster queries 15 times and we fixed it by revoking your access to the system but the DBA never had that information before it's always been guesswork I've always been you know afraid of answering that phone calls if it's like I don't know what was going on at 3am and I have no way of telling you what was going on at 3am reduce capital expenditures is we're talking about by sort of right size in the system adaptive versus oversized I'll add capacity as I need I don't have to buy a machine that can support up to 128 CPUs which is a quite expensive machine I can start with smaller machines and add more of them over time integrated versus third party I want to do this cluster thing I need to buy two pieces of software not 40 on I've cut out sort of this volume management software that I don't need and this clustering software that i don't need the last part here is reducing the failure cost so proactive versus corrective that SGA target that i was talking about one of the very important pools inside of an oracle databases to sink a shared pool shared pools where we store parsed representations of equal and PL sequel and other pretty important stuff a very common error is an aura 4030 out unable to allocate X number of bytes in the shared pool used to be that the end users would just get that message back not very useful have to call the DBA DBA to us or to figure out what went wrong and fix the problem if i'm using this automatic memory tuning before returning an or 40 30 back to an end user the database is going to look and say can I can I sort of feel something from somebody else at this point in time maybe I can shrink this pool and take it and use it over here because we were using this memory over there but we're not using it right now so let's give it up from that purpose and move it over here so it's proactively fixing itself rather than reactive we waiting for DBA to correct itself or correct it and the other one is acting succeed versus trial and error I know a lot of dba's I've been guilty of this myself systems running slow on the past you know we did this and it sort of made things better we rebuilt an index so we'll go and try that is it better yet no okay reorg incapable that'll make things faster so we'll rebuild some tables is it faster yet know the database because it's now benchmarking itself can actually come back and give you advice hey I installed this database console my 10g database was running great one day it came back and said your database is running five times slower today than it was in the past we're running five hundred percent slower things are taking five times as long we've identified that there's needs new queries that have been introduced in the system they never existed before and if you push this button over here we'd actually like to take these queries and tune them for you we can suggest indexes that you could add to it to make them faster materialized use or even help to simply rewrite the query the database is sort of watching itself waiting for its performance characteristics change trying to figure out why and then notifying you so we're not coming in and sort of guessing what can fix the system the system telling us yeah there is a problem and here is the probable cause and solution for that problem so take a look at the life of the DBA see where they spend all their time about eighteen percent of it is in install creating configure so this came out of a survey from the international oracle user group dba's what do you actually do so eighteen percent install creating configure that sort of boggled my mind a little bit I thought that that was a lot you install a database Swanson and it's over it's forgotten right well no because I install the database for this developer or so that he can build as prototype and I install it for this development team so they can take the prototype a little bit further than I need to move it over to this QA system and do it over here again and then I need to put it into a production environment so every every database might actually have five six seven installed behind it and people are actually creating and destroying the database instances relatively frequently so one of the things we did in Kenji was too make the database fast and light weight as far as installation we got it down to a single disk if you will it used to be three to five CDs to actually install the database it's now one CD no we didn't cheat we didn't put it on a DVD you know it's actually a CD what we did was going on back and took a look and said what is this file it's been here since version 5 what does it mean well we don't need that one anymore and we cleaned out a lot of the stuff one back and we have one single base image CD now you stick this in 15-20 minutes later you have a database installed up and running with the seed database the starter database in everything and out of the box database console so it used to be I install the database now I want to manage it oh go get the CD back so we can install Enterprise Manager and set it up and get figure it and everything else like that we've taken the enterprise manager database functionality and actually moved it inside the database itself so now when i install the database and i started up comes with a very small java web server sitting outside of it the java web servers just making stored procedure calls basically into the database and the database is got the enterprise manager tool in it so no longer am i installing the database and then hunting around for CD to figure out how to install the tool to manage the database install the database the last step is hey go to this URL and start managing me this is how you're going to interact with me six percent in loading data so we took a tool we've had this tool called export and import forever and it's been virtually unchanged forever and every DBA knows exactly what Export Import is and other limits they know how to kick it and make it do what they want but it's not very flexible fast is something people might not have attributed to it so for the first time in many years we rewrote this are now called import DP and export DP for for data pump the export is after but not as faster as the import is the export was already pretty fast using a direct path to export there was only so much we could do we're now pretty much gated by the speed of the disk as far as getting data out of the database but the import we did a lot to made it use direct path operations so it's bypassing the sequel engine so it's able to format database blocks and write them directly automatic parallelization of the input stream so if you've ever trying to import a hunger gigabyte database dump file you know that was a long process because it was insert row after row after row and it would create an index create an index create an index now it's going to do all those things in parallel as much as possible so it's blown as much data in as it can as fast as it can then creating indexes in parallel as fast as they can basically utilizing the entire machine it's restartable one of the boat points I don't have on here that I think is nice one is I can actually start an export sort of a server process on one machine stream it over the network to an import process running someplace else and it sort of piping it into my database so i can actually stream my information from say an HP ux box across the network and import it into my database running on a mac or take it from the mac and stream it over to linux or wherever i need the information to go so it's a little bit like using database links but doing direct path operations in a massively parallel fashion here's the big one fifty-five percent of the time ongoing system maintenance so I've got DBA names Fred he manages 14 Oracle instances and his morning is pretty boring because it's always the same thing over and over again it's a little bit like Groundhog Day comes in logs in the server one hi how you doing are you up or you run out of space the backups work am i running out space in the filesystem looking at everything did anybody reporting problems against you then he logs out and goes to the next server and sort of repeats the whole process and hopefully it's a blurring morning that he doesn't find out any problems we went on now with the database sort of watching itself when he comes in the databases tell them everything was okay you don't even need to look at me we're running fine we're not out of space nothing bad happened the backup succeeded or there'd be a red blinking light saying help i need help over here performance was going through the tubes at three o'clock in the morning here's what was wrong here's what I think you need to do about it and then Fred who's a professional DBA looks at that advice and treats it as advice from a junior DBA and either does it or refines it or ignore it entirely so this diagram is supposed to represent what we have today there's a database and then each one of these red boxes is sort of a point solution outside the database my developers have a tool that they use to do their application and sort of sequel management and there they're tuning of sequel queries and rewrites and things like that my system administrators have system resource management tool how's my system do anything helps my disk the memory on a box the CPUs the dba's have their backup and recovery tools and they'll get another tool to do some space management hey go to look for fragmentation in my database suggest objects that need to be fixed help me reorg and things like that and then lastly there's storage management software like a Veritas or something like that our goal was 10g to actually move that all into the database so if I want to tune sequel the databases are under the sequel the database knows better than anybody else what could actually help the sequel go better because it's got this thing called an optimizer inside of it it could say you know what if we had an index on these columns how would how would the sequel probably perform given that that's the entire goal or job of an optimizers to look at all the possible you know combinations the query plans given the tables and indexes it have it can now hypothesize and say you know what if we had these extra two indexes over here we have to make this query would consume one system resources it is right now or if you created this materialized view we would be able to execute this query with one-tenth of illogical iOS instead of the millions that you're doing right now same with system resource management and space management the database sort of knows as you're gathering statistics and things like that this object is fifty percent white space well once I've identified there's an object is fifty percent white space because I sort of delete it every other row or something like that the next step is when I need to reorganize is that the object is in need of a reorg step one and step two it actually has the command to shrink segments now so I could say hey take the table uncompacted it's going to do things like read the table from the bottom up and then find the last row and sort of delete it and reinsert it at the top of the table so that the table will become fifty percent full at the top 50% empty at the bottom and it will redraw the high water mark for that segment we would give us all that space back our goal was to take all these things that we always had outside the database and move them inside so for example automatic tuning notes of sequel we have bad sequel in a packaged application this is sort of a list of steps you not expected to read these of what you would do in 9i vs 10 g and 9i you'd have to first identify that there is a problem this query has run for like five hours there's the problem then you'd have to try and figure out well could the query actually run in less than five hours and I play around with it my tune it and I find hate you know if I rewrote it like this or hinted adore I did this the query runs really fast but it's in a third-party application so you can't change the code you can't change the query so you call up their support you spend a couple hours convincing them that there is a problem and then maybe a couple of days later a couple of weeks later they develop a patch and then you you install this patch which is sort of down time as you're patching your system and one of three things will happen one thing that could happen is nothing changes doesn't fix the problem on your particular box the other one is it could actually fix the problem but the more probable outcome is the installation of that patch destabilizes 50 other modules inside of this system and you end up worse off than you were in the beginning in 10g what's going to happen or does happen is the database identifies bad sequel automatically pops to the top and it says you've got this sequel it is a problem we need to take a look at it it's got many things that could do to it it could advise you on indexes materialized use it could tell you how to rewrite it but those aren't always achievable in this third party software environment the last thing it can do is actually analyze a query now much like dba's have been able to analyze table I'm going to take that query is going to say look it's a ten table joint problem is we don't understand the relationship between table 1 and table 2 let's understand the relationship between table 1 and table 2 given this predicate that you're using and the database analyzes this query stores extended statistics in the data dictionary and then the next time you parse an optimized that query it says you know when I join these two tables together without this extended statistics i thought i'd get five thousand rows but now i know because of these extras statistics i'm going to get five million rows out of this joint so i'm going to come up with a totally different query plan the DBA can take any query analyze it store that information in the data dictionary so the next time that query is parched and comes up with the right plan all by itself it cuts out that loop of go back to the developers who wrote the query in the first place and try to figure out a better way to run this query give the optimizer more information out of memory errors is this the one that I used before hey i'm running a query and i get this or 40 31 or 40 30 out of out of memory what do i do well I call the DBA the DBA has to look and say okay yeah the buffer pool is a little bit bigger than we need it let's shrink the buffer pool and will grow the shared pool and now the problems gone away if I'm using the automatic memory management inside the database in 10g that space is intentionally left blank because that's not going to happen in that particular installation if the shared pool runs out of memory we're automatically going to look and identify we can get some from and slide it over there last example mistakenly drop table you know it's the problem of right table wrong database you know it's that late at night if the pinky leaves the enter key you get that cold feeling in your stomach just fall through and you go I did a bad thing 9i we'd prepare an auxiliary instance we'd use our man to restore the tablespace we do a point-in-time recovery of that table space to right before the drop and then we transport that data out and move it over this is probably at least an hour because we're going to tapes we're going to get back up we're going through this process that we don't go through every day in order to recover this 10g we now treat tables as though they're like recycle bin objects and I drag something into my trash it doesn't actually delete it sort of hides it I can go back and unhide it later when you drop a table we don't actually drop it anymore we sort of hide it from you and we give you the ability to unwrap this object at a later point in time so instead of your system being down for an hour or so while you're recovering this table it's back up immediately because as soon as you drop it you unwrap it and bring it back and then the last part we're going to look at here before getting in an HTML DB is the install creating to figure again but also the ongoing software maintenance this is a quarter of their time is spent dealing with software related issues not even data related issues really Enterprise Manager version for this is what we also call our grid control its main purpose in life is managing groups of systems and in these grids if you will they took the database functionality out of enterprise manager many dba's looked at enterprise I understand that's the tool I used to like create users and things like that administer my database we moved out all into the database consult the database has that functionality now Enterprise Manager needed to find something else to do a different purpose in life so it came up with I'm going to manage your systems I'm going to manage your software I'm going to fix the problem that we have of this create configure install patch maintain two topics that I picked out as the to the intrigue me most one is automated software cloning that DBA is that hey install this database for this prototype installed this database for this development install this database for QA install the database for production they're doing the same thing five six seven times over and over again they can now install the software I'm going to installing to create and configure an OLTP ish database then I'm going to install and create and configure sort of a data warehousing database it's going to have partitioning and other things on it I'm going to have these reference installed so that when somebody comes in provisions of database for me I don't have to get the cds out anymore I don't have to go to the machine I don't run the installation process I point at an existing Oracle install and then either just clone the software or I call in the software and the data along with it so instead of being an hour long process to say install create and configure database becomes a 30-second operation because you're setting this up through enterprise manager and it's happening in the background true you have to come back in an hour and verify that everything worked but you're not sitting there watching a blue bar go across hitting a next prompt filling in the default it's an automated process the other thing if this is the only thing it did it would still be cool is enterprise manager is maintaining an inventory of what you've got installed it knows how many Oracle instance is you have running out there what versions of the application software that you're running the application server the applications themselves storing this in a repository it's not only doing that just remembering what operating system you're running on what patches are installed on it how many CPUs you have how fast they are what the disk looks like how much RAM you have this is all in one centralized repository takes this information now and turn it around and goes to metal inc which is our support website and says this is this guy's finger print this is what he's actually running this is what he's actually using what applies given these inputs not using partitioning you won't get bulletins and patch that are partitioning related you're simply not using that feature you are using advanced security well the security bulletin just came out last night is something that would pop up on your screen immediately so Enterprise Manager is taking an inventory finding out what applies notifying you about it and then allowing you to download that information into a repository as well so get to the patch puts it into a managed location so that you can come back and say yeah server1 apply the patch right now shut down by the patch bring it back up verify that everything work register that in in the repository server 2 3 p.m. on saturday I'd like you to schedule that patch upgrade to take place and send the alert as to the success or failure to this email address so that can page me or whatnot and let me know how it went but I don't want to do it right now on Friday I want to wait till tomorrow afternoon and these other servers out here I can schedule them as well so for the first time the DBA can look and say I've got 10 Oracle instances nine out of ten have had the patch applied and the tenth one is scheduled to have this patch applied saturday afternoon at this point I'm going to turn it over to mark he's going to spend about 20 minutes talking about HTML DB and then we're going to have a quick Q&A session so mark alright so HTML DB is something that's built out of the Reston Development Center we really kind of started as a small little project to build a calendar and turn into a sizable component of 10g I mean I've got a couple slides in real just going to get into the demo so I'll switch over there in a minute what is HTML DD ok I'm gonna watch the clock watch us try to look at this I'm really bad at reading like you all do so what HTML DD is a declarative web based development environment what does that mean well that means you build it with the browser you don't have to install on a client software you run it from a browser where you build it is where you run it you don't have to do that but you can do that if you wish it's also a feature of the Oracle 10g database you can stick it in older 9i 09 I are two databases with a loss on functionality for instance the recycle bin Tom talked about is exposed in HTML DV so what does the offer I'm not going to go over that because Tom talked about all the LEDs the secure ability of the integrity scalability we know all that it just exposes all that for you and again it's built for the web so if you're like a lot of organizations you've got your spreadsheets out there you've got your microsoft access databases your file servers you get it all spread all over and you can read all the studies let's say oh it takes 13 man hours to find a file and the server I've heard some companies have one web page one website for two different people and all that good stuff so this is about consolidation you use HTML DV you take your spreadsheets and we will you take your desktop databases which we won't do in this example for time and your files you can put them all on a 10g database and then you can look at them with your standard browsers it's not IE specific god knows how many times I've gone to a web page where it says you've got to run IE 6 we don't do that you can run all of those browsers right there works just fine the development team is a small bunch but they care about the browsers out there they don't want to isolate anybody so there's a four major components to it there's the application builder there's the sequel workshop the data workshop and administration I'll go over each one of those tools and a little more detail we're going we're going well am I going too fast anyone might learn all right great so the application builder is best explained the seagull workshop is what you think it is you can go create sequel edit sequel save sequel create sequel from objects say you've created a database tables 10 table of indexes functions triggers and you misplace that file you're like now going to go rebuild that script you can point HTML DB to the table and say rebuild the ddl and it'll spit it all back out we'll be able to look at all the attributes of a database to trigger a function look at the source code do all that good stuff with the sequel workshop the data workshop allows you to load data in via XML the cut and paste with the spreadsheet upload the export-import that's all right there and then administration so this is a view by your rack of X herbs and you've got 20 development environments and you don't want to give them their own database you want to take one day they spread across all those excerpts and just slice them up so there's a provisioning aspect to it so Tom gets is 20 megabytes because he's special I get my two megabytes because I'm a not as special and then what I see is completely independent of what Tom sees he won't be able to touch my stuff I won't be able to touch his stuff and that's part of using the virtual private database part of 10g all right the good stuff like that stuff I want to go over here ok cool thank you for that so i've already logged into HTML DB what I'm going to do is I'm gonna take a spreadsheet I'm going to put it into the database I might have it converted into a table I'm going to make a couple lookup columns on them then I'm going to build an application based on that table i've already logged in so let's go create let's go first go to the data actually where's my spreadsheet where's my spreadsheet i'm so glad i didn't know that would have not made a good demo so what this is is a spreadsheet of a bunch of hardware we've got I want to just copy that go back to Safari when i import the spreadsheet data i'm going to create a new table and these tables are routing you real tables like anybody else are not second-class citizens they're not some special objects as metadata the whole environment runs off metadata these are real tables and will pop over to sequel and a prove that because people ask though you're putting this in some freaky repository aren't you no we're not it's just regular so we go over here paste the data don't worry if it looks funky you it'll come good so it took the columns and make a good good guess as to what they are well the first one is a text field so the second one cpu speed we're pretty good pretty sure that that's a number the purchase date we're real real sure that that's a date and then so on and so forth if we wanted we could go on and do some other stuff with it then it gives you a couple columns here and if you want to you will if you don't want it column you can say no I'm not going to say this is going to be better than sequel loader if you're familiar with that tool but it beats having to try to get a log into the server so a web-based it will name this table hardware continue on and right here what it's going to do is going to put a primary key on the table I was talking with the gentleman yesterday I believes we wanted to convert from one take one system to another and he said well I've got all these indexes I got this Web object out there that's maintaining the top level sequence number for all the tables and that's how I know what's index is to make and I said all you got to do is create an index on that table give it a sequence i d-didn't you kind of looked amazing with the sequence I said it's an automatic number that's generated by the database for you and what HTML DB is doing is doing all that for you so it's automatically giving you a sequence number so you don't have to try to manage your own index numbers for collisions I've done it myself I've tried to do that I've had a key violation myself trying to do it not here tom I learned that before so and then it'll create primary key so there's all the good stuff that it gives you so we're going to go ahead and create the index let it do that create the sequence name is already use I forgot to drop that before let me go back give it a different table name hardware too so can we cut that out of the video so there we go 37 row succeeded 0 failed woohoo so we're going to go back over to the application builder and you can see you can do is already a sample application here when you install it the way to deploy sample application is you click a button and boom I'll get playing time click a button boom and it just goes runs you don't have to go deploy anything it's just a bunch of sequel that it runs to create the database create the application for you and that's what they do when you you a provision a user so we're going to go create a new application we're going to have a based on existing tables this user has a schema associated with it called apple if i wanted to that could have multiple schemas this is the default schema that I told it when I provisioned this user just going to look in this schema for the table pop up right here and you'll see hardware to you also see over here kind of a breadcrumb trail of you know this is a wizard there's a lot of wizards in there you can make your own wizard so there's actually a wizard wizard and you can see over there on the left just how far you are into the process the nice thing is is as a developer and I don't have to manage state if you're familiar with me in maintaining session state it does it all for you you don't have to worry about oh when I go from page a two-page be collect up all the information in and the form fields and save it off into some memory space it does it all for you so it really makes developing applications pretty quickly but I'm just going to finish it's good chug cusco run it and see what we got we've got basic security on it you as a workspace manager can pick what you want right now this is using database users and as it works as manager you can create those yourself if you want you can use ldap based authentication you can use single sign-on authentication I don't think most to any of you hopefully have Microsoft Active Directory but you can you can use that as an authentication source so you don't have to convert all this data and move it over and keep it in sync it'll do it so we login oh so this is what it generated generated an application with a couple tabs and a couple of components to it so let's go look at the hardware we go analyze it it's through and some charting by default we're going to it took all the columns in the table and said okay these are all the columns you you have let's go so show a chart will do that and since it's an SVG chart so you can do all that skin zooming and whatever if you want you can click on one of the components and it'll bring you up to it will show you a sequel query of just that data and literally all this was is I just typed in each types in that Atlanta you saw me it types into select star from hardware to wear what did I say brand equals del great and if I wanted to I could go do it myself I can go edit these if you've done web based development you're always familiar with the create update delete functions this takes care of all that it's kind of the Oh entity relationship builder that it has in there it went out there and did it it knew that this is a days so it said oh I'm going to prefer a pop-up date picker right there then I go apply the changes I don't have to worry about commits or anything like that it takes care of that I can't worry about it if I want but I don't have to this is just a sample application you can you can go to town I have a couple example applications of what some people have built with it I mean you were just using straight tables here would you be spatial data there's an example of that down the road and then so we wanted to we can as a debugger we can flip it in that load will show you everything that's doing as it's rendering but right here you can see all the session data you're like well what is that value I've got a bug I maybe maybe I don't but you can see the value right here see what it is what it thinks it is so it's a nice way to just keep tracking without having to do if you're familiar with see print a spell over the place or system that out there print lens you've got all that right there the other thing that I wanted to do is go back and edit the application and I told myself I was going to forget and I sure enough did I forgot to create the the lookup table on that so let me go over to the sequel there's the recycled and I'm going to go browse the table at the table find my hardware table for someone like me she doesn't live in the sequel world I love it Tom Tom live in the sequel world he's a sequel plus jockey among other things so he's a he loves that I love this because I can just drill in here and start looking at stuff and have to worry about this is the trigger that I put on there automatically so I'm going to go create a lookup table for this and I'm going to pick the brand looks good we take that brand I'm going to say next it's going to make a new table out of its going to soak up all that info and put it in the index in table and then replace that so if you wanted to you could see where was it view the data model and you can see that brand looked up is now related to hardware to this isn't a really fancy a referential integrity but you can get this point when it gets larger it can be pretty a pretty useful so we'll just go back over here to the Builder let's just do this one more time for a reinforcement go back pick hardware too mornin so where was that hardware too so right there you see the brand ID now turns into a picklist and as smart enough to know that look at the referential integrity see the relationship and create an appropriate type for that that's pretty much HTML DB in a nutshell from getting your spreadsheets out of everybody's desk tops off everybody's desktop consolidated into a database I did a project for a boat racing group and they had spreadsheets all over the place files here and there spreadsheets everywhere we told him use this tool before wasn't even produce and they they were quite happy with it with eight literally sailors out there developing HTML DV applications Who am I looking on time seven minutes ok oh I'll let that run little well it's not even showing anymore can you float back to that one real quickly apologized so anyways this was a spatial data thing you can see that somebody is we track the vehicle from I guess their home they parently went down to the airport and then once somewhere else this is all data running out of the database the map is generated by the spatial data system and it's just making requests you can pretty much drop these type of objects on there for 10 we could zoom you can see this person tends to speed a little bit I think that's a 65 mile an hour toll road though so that's the type of stuff you can make anyways this another little bullet point of what what gee whiz stuff there is available so if we could flip back to the presentation thank you so we talked about how it works a little bit you can see that it's centrally deployed and managing your single database be running on you know one laptop like I have or a rack of X serves and x x rayed systems I've got one of those in the lab I thoroughly enjoy it access anywhere via browser we literally do on the plane with our browsers take your application put it back up into the system and just as easy as moving applications like that and it's declarative I don't have to go out there and say if this condition is that then do this you can just say you know show me this text field only when I'm an administrator don't show it when Tom logs in show an administrative tab only when the person who logged in as a member of this ldap specified church hierarchy so it's a little simpler for some people but you can also go to town and create normal people procedures Java stored procedures anything that's callable from the databases is a fair game this is what it looks like that's pretty much it as they say that's all folks with that you've got the little yellow box that can be one machine it doesn't have to be but basically you've got your database runs HTML DB you don't have a middle tier you don't have edge servers and cache servers and all this kind of stuff it's can be one machine we typically do that you can split it out if you want to have your HTTP server running somewhere else in a real word real world you probably would because you want to have a firewall and all that good stuff with the load balancers and then that's pretty much it so the Collette via installation for the companion CD that's available on otn has it it's really simple install you don't have to sit there and say okay now where does this go how's that hook up invariably somebody always says well are you trying to get rid of your portal product or you how this is you know going to fit the j2ee stuff and we're not trying to displace j2ee by any means suspicions we have our own product but you can look at it you can see that j2ee standards-based this is HTML deviate run PL sequel that's what is built in it's taking advantage of all those of wonderful 10g features that Tom talked about the development approach is a little more ad hoc somebody says hey I got the spreadsheet can you do this you know build an application track something do whatever it doesn't mean you've got a lot of silly little applications are one time used you can but it's um it's more leverages of stuff for that as opposed to j2ee where if you wouldn't do a right j2ee application you got to know what you're doing you have to design it well and scale it so then the development environment j2ee the Eclipse the Xcode the jdeveloper those are all phenomenal hi des but if you just got a web browser you have to go somewhere and they don't allow you to bring your computer with you like the CIA you a web browser you use theirs and you're good to go and then it's were really the non professional developers out there like I said sailors have been coding applications non-trivial applications i might add they literally got the to sequel in 21 days type of book and they were ready to go so that's a little flavor of what HTML DB is and isn't and how it relates to the j2ee if you want to try it out you can go download it install it yourself and and go to town if you want to just get started in 10 minutes just go to this website HTML DV oracle com it's free you log in and you can put you'll you ask for a workspace little it'll get provisions automatically within an hour so depending on if the guys are still there then you can talk there's a discussions on OT informs what did oh how do i do that's how i do that you can also go to the HTML DV studio where there's examples of how to do this how to do the if you don't want to build that common look and feel from the application builder how do you make your own master detail relationships how do you put a multiple row edit all these days view looks out there you can look at and it shows you how to do it and you're going to also go to HTML db2 oracle com / o TN is where the official homepage is for that product
