Roads ? - where we're going, we don't need roads ...
News aggregator | ORA600
ORA600 content Content RSS
ORA600 blog Blog RSS
ORA600 blog Blog Atom

User login

News aggregator

Hellboy II: The Golden Army

Tim Hall - 3 hours 55 min ago

I’ve been waiting for Hellboy II: The Golden Army for quite a while and it didn’t dissapoint. I like the characters, it looks good and above all it doesn’t take itself too seriously.

Like the first film, it’s not without its faults, but overall I thought it was cool. After some of the recent film dissapointments, I was really thinking this might go down the toilet also. Thankfully it didn’t.

The trailer for Max Payne looked interesting. I also enjoyed the trailer for the film Pineapple Express. The film itself doesn’t look that good, but the soundtrack features Paper Planes by M.I.A. I think they only used it because it has the sound of gun shots in the chorus. That kinda misses the point of the song, but never mind. Very cool track.

I came out of the cinema and had a message from my Mom. She couldn’t get on the internet. I had to ring her up and talk her through restarting her ADSL router. Hi Mom. That’s one more reader for my blog. :)

Cheers

Tim…

Categories: RDBMS

APEX for 55+ people - The landscape

Dimitri Gielis - Wed, 08/20/2008 - 20:18
After a short holiday it's time to start blogging again.

I already blogged about the idea of teaching APEX to people older than 55. So let's see how my pilot person looked like.

It's a Belgian man, born in 1949, so almost 60 years old. His children are out the door, but he's still working as a mathematics teacher. His first experience with computers was at university where he worked with a punchcard machine. After that he worked with an Apple II, IBM pc's and now he does his computer activities on a regular Wintel platform.

In the early days he played around with Apple Works, WordPerfect and he even developed a bit with FileMaker Pro. Nowadays he's mainly working with Word and Excel and also communicates with his students with mail and through the internet. In his school he also needs to work with a planning tool, a Blackboard tool (online student system) and some other little programs.

This person has always been trying to find ways to improve the quality of the lessons and other ways to help the students, the teachers and the school.

So I would describe this person as a motivated 55+ year old working person, who has already some knowledge about pc's and knows Word and Excel well.

When I was talking to him about Oracle Application Express and showed him some things he could use for his students and colleagues (for ex. to do follow-up or to plan classes) he was very interested to investigate more. Instead of me doing the application, we agreed to give it a try to get himself up-to-speed with APEX, so he could develop things himself. The timing was ideal as he had holidays. So we started in the beginning of July with this pilot program... APEX for 55+ (year old) people!

He has his own desk with a Windows pc (not the newest one), Office, an anti-virus program and some other small software. He only knows Oracle from the stocks and some articles in magazines. He knows a tiny little bit of SQL, but doesn't know anything about webdevelopment, the Oracle database, PLSQL and APEX.

In Part 2 I'll write about his first steps with APEX.
Categories: Code monkeys

Oracle Partners at the Big Show

OOW2008 blog - Wed, 08/20/2008 - 18:59
It Would Be a Small World Without Them Oracle has more than 20,000 partners around the world, and Oracle OpenWorld is the one place customers can find hundreds of them in one location. This year we'll have more than 450... jack.flynn
Categories: Other

Outsourcing vs. Offshoring

Pythian group - Wed, 08/20/2008 - 16:51

I tripped over an old oracle-l exchange (not that old, from March of this year) and I thought it would make good content for a blog post on the critical difference between outsourcing and offshoring.

It started when Ethan Post posted a link to this fascinating story at the Ludwig von Mises Institute about how the U.S. dollar’s collapse affects the outsourcing industry. As many of these posts do, the idea of outsourcing gets conflated with that of offshoring. What the author really means to say is that the “downward dollar delivers a blow to offshoring“, not outsourcing.

Let me explain further. I am now cribbing shamelessly from my oracle-l post and so if you read this already this spring, my apologies.

Ethan had posed the following question:

Interesting article on the effects of the dollar’s fall on outsourcing. Would be interesting to hear a few of you who are perhaps feeling these effects to comment.

To which I replied:

Our margins were definitely squeezed painfully from April 07 until late last year (follow that link to see a 20% or so decline in the USD/CAD exchange, and remember that a substantial chunk of Pythian’s costs are in CAD and about 70% of our income is in USD). So it hasn’t been really that much fun adjusting to our new currency realities. That being said, I think there is a meaningful difference between offshorers and outsourcers and that these different ideas get conflated a lot, including in this case.

If your company’s entire business model is simply shifting work from a country where wages are high to a country where wages are lower, you have two problems. First, you are very vulnerable to this type of currency shift because it is at the core of your profit model. This is called labour arbitrage. Second, as time marches on and we continue our trend to a global rate for any given IT service, your company will cease to have any reason to exist. This article from the Economist covers general India inflation, trust me focus on labour inflation in the information technology sector and the situation is much, much worse.

However, outsourcing properly conceived can be highly successful even when the resources are hired locally to the market being targeted; meaning without relying on exchange rate differences nor differences in global payscales. These companies are successful because by concentrating expertise, adopting best practices, innovating and reusing work they have found efficiencies that add up to more than their direct costs of services delivery + overhead (meaning, that profit model has nothing to do with currency or wage geography).

I would count Pythian among companies conceived along those lines, we are far from alone, certainly our direct competitors based only in the U.S. dbaDirect, Contemporary and DCC (hi guys! well done!) do not rely to any degree on wage differences or exchange rates as parts of their profit models. To put things into perspective, although Pythian has a presence in 10 countries now (including four U.S. cities), our profit model also has innovation, expertise, scale and re-use as it’s heart and soul, not labour arbitrage.

So anyway, we’ve successfully adjusted over here and I think offshoring will lose a lot from the collapse of the USD, but these companies that are offshorers only will be forced to morph into something better to survive, which is good for everyone.

Categories: RDBMS

What Makes a Good DBA?

Pythian group - Wed, 08/20/2008 - 16:09

A few days ago I had a new idea for a blog post. A post about what it really takes to be a good database administrator. I began by researching what others had done on the topic. At the end of this post you will find links to six of the posts I found that provided some insight into this question. Even after uncovering this information, I thought I could add something to the mix from my own experiences. So here we go!

(more…)

Categories: RDBMS

ASSM or MSSM ? -- The impact on INSERTS

Hemant K Chitale - Wed, 08/20/2008 - 14:51
Segment Space Management 'AUTO' was introduced in 9i. For a few years, I thought that it was a good / useful feature. However, I've encountered issues with space leakage in LOBs, issues in data not being clustered (as it would have been in MSSM) and seen various bugs logged against ASSM.
I guess that ASSM makes sense only in a really very high concurrency environment -- where multiple sessions need to manipulate the FreeList for the same segment (table) concurrently. Some new features (eg ALTER TABLE SHRINK) require ASSM. Going forward with ASSM being the "default" default in 10g and 11g, I guess that it is Oracle's direction.

However, for those of us who do need to get performance out of our systems, ASSM can be a drag.
i. It seems to increase current gets when doing INSERTs
ii. Data isn't clustered into contigous blocks as it is inserted. This is important for index range scans on an indexed column that is incremented for each insert (eg a DATE or SEQUENCE). The Clustering Factor goes "bad"


Here are some simple tests that I ran, running the same INSERT (and CREATE INDEX) statements on two copies of a "target" table, one in MSSM and the other in ASSM.

Running this in one session :




set echo on
set timing on

spool run_insert_tests_mssm

create tablespace mssm_tbs
datafile '/oracle_fs/Databases/ORT24FS/mssm01.dbf' size 1000M
extent management local autoallocate segment space management manual;

undefine sid
col mysid new_value sid
select distinct sid mysid from V$mystat ;

alter session set tracefile_identifier='run_insert_tests_mssm';
alter session set events '10046 trace name context forever, level 8';

alter table source_table cache;
select /*+ FULL (s) */ count(*) from source_table s;

create table target_table_mssm tablespace mssm_tbs as select * from source_table where 1=2;

insert /* first_mssm_insert */ into target_table_mssm select * from source_table;
commit;

insert /* second_mssm_insert */ into target_table_mssm select * from source_table;
commit;

create index target_table_mssm_ndx on target_table_mssm(object_id) tablespace mssm_tbs;

insert /* indexed_mssm_insert */ into target_table_mssm select * from source_table;
commit;

select segment_name, segment_type, blocks from user_segments where segment_name like '%_MSSM%' order by segment_name ;


and running this in another session :





set echo on
set timing on

spool run_insert_tests_assm

create tablespace assm_tbs
datafile '/oracle_fs/Databases/ORT24FS/assm01.dbf' size 1000M
extent management local autoallocate segment space management auto;

undefine sid
col mysid new_value sid
select distinct sid mysid from V$mystat ;


alter session set tracefile_identifier='run_insert_tests_assm';
alter session set events '10046 trace name context forever, level 8';

alter table source_table cache;
select /*+ FULL (s) */ count(*) from source_table s;

create table target_table_assm tablespace assm_tbs as select * from source_table where 1=2;

insert /* first_assm_insert */ into target_table_assm select * from source_table;
commit;

insert /* second_assm_insert */ into target_table_assm select * from source_table;
commit;

create index target_table_assm_ndx on target_table_assm(object_id) tablespace assm_tbs;

insert /* indexed_assm_insert */ into target_table_assm select * from source_table;
commit;

select segment_name, segment_type, blocks from user_segments where segment_name like '%_ASSM%' order by segment_name;

Here's a comparison of the results :

For the first INSERT statement :





insert /* first_mssm_insert */ into target_table_mssm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.03 0 0 0 0
Execute 1 1.32 2.98 0 8771 23618 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 1.33 3.01 0 8771 23618 303666


Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=607550 us)


insert /* first_assm_insert */ into target_table_assm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.02 0.04 0 0 0 0
Execute 1 2.39 2.85 0 11917 38462 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 2.42 2.90 0 11917 38462 303666


Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=911236 us)

The number of blocks (and rows) read from the SOURCE_TABLE is exactly the same (4,193 ,with no physical reads as the table had been cached by previous queries).
Yet, the INSERT measured up as :




MSSM ASSM
Consistent Gets 8,771 11,917
Current Gets 23,618 38,462
CPU Used (seconds) 1.32 2.39

That means that the Insert into an ASSM Tablespace causes more Current Gets and CPU usage.

These are the results of the second INSERT statement :



insert /* second_mssm_insert */ into target_table_mssm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 1.58 2.70 0 8758 23393 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 1.58 2.70 0 8758 23393 303666

Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=911108 us)

insert /* second_assm_insert */ into target_table_assm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 1.33 3.19 0 12254 37667 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 1.34 3.19 0 12254 37667 303666


Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=607515 us)

Once again, we see a siginficant difference in Current Gets.



MSSM ASSM
Consistent Gets 8,758 12,254
Current Gets 23,393 37,667
CPU Used (seconds) 1.58 1.33

Next is the CREATE INDEX statement :


create index target_table_mssm_ndx on target_table_mssm(object_id) tablespace
mssm_tbs


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.06 0 1 0 0
Execute 1 1.62 2.11 0 9357 1688 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 1.63 2.18 0 9358 1688 0

create index target_table_assm_ndx on target_table_assm(object_id) tablespace
assm_tbs


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.01 0 9 0 0
Execute 1 1.83 2.20 0 9535 2188 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 1.84 2.21 0 9544 2188 0

Again, the ASSM performed poorer.


The final test is the Insert with the Index present.


insert /* indexed_mssm_insert */ into target_table_mssm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 3.12 4.26 1342 16682 119228 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 3.12 4.27 1342 16682 119228 303666

Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=607454 us)


insert /* indexed_assm_insert */ into target_table_assm select * from
source_table


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 3.70 5.60 1342 17923 135324 303666
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 3.70 5.60 1342 17923 135324 303666

Rows Row Source Operation
------- ---------------------------------------------------
303666 TABLE ACCESS FULL SOURCE_TABLE (cr=4193 pr=0 pw=0 time=911107 us)

Again, the ASSM Insert performs poorer.


MSSM ASSM
Consistent Gets 16,682 17,923
Current Gets 119,228 135,324
CPU Used (seconds) 3.12 1.70

These are the final sizes :


SQL> select segment_name, segment_type, blocks from user_segments where segment_name like '%_MSSM%' order by segment_name ;

SEGMENT_NAME SEGMENT_TYPE BLOCKS
------------------------------ ------------------ ----------
TARGET_TABLE_MSSM TABLE 13312
TARGET_TABLE_MSSM_NDX INDEX 2688
SQL> select segment_name, segment_type, blocks from user_segments where segment_name like '%_ASSM%' order by segment_name;

SEGMENT_NAME SEGMENT_TYPE BLOCKS
------------------------------ ------------------ ----------
TARGET_TABLE_ASSM TABLE 13312
TARGET_TABLE_ASSM_NDX INDEX 2816
Categories: RDBMS

Time Matters - DB Time

Doug Burns - Wed, 08/20/2008 - 09:00
[In retrospect, the title of that first blog post might have suited the subject, but doesn't translate too well for subsequent related blog posts. That was a lack of planning or foresight on my part. These blog posts are tumbling out of my head in a fairly incoherent way. Maybe when they're finished, I could revisit them and write them up in a single, sensible article! In the meantime, I've retitled the previous post.]

The previous post might have given the impression that you shouldn't pay too much attention to the values in the "Time (S)" column of the Top 5 Timed Events section of a Statspack or AWR report*. That's not true, particularly when comparing system workload between two different periods. (I was just building up to this slowly ;-)) In fact, although the values in that column are not "DB Time" they are all components of it and, just as an increase in the values in that column indicate increased workload or decreased performance during the two different periods, so does an increase in an Instance's DB Time.

As Chen pointed out in her comment on the last blog, there's a direct relationship between the number of sessions that were running during the reporting period and the total time values. No matter how busy the system, the total time available can not exceed the maximum number of concurrent sessions * wall clock duration that they were running. That's a hard limit, but there are other relationships, too. If you think about it, as the number of active concurrent sessions increased from one to four so did the database instance's workload as more sessions were either working or waiting for something and, if the database is working on something then that implies the application is waiting for it to complete! In all likelihood on a small laptop with limited resources, the actual time spent waiting on individual events would increase as well, as contention for resources increases. Both an increase in the duration of events and an increase in the number of different sessions running or waiting on events will increase DB Time.

Here's a definition of DB Time that you'll see in various presentations from the Oracle guys who worked on this. (e.g. John Beresniewicz's excellent presentation "Average active sessions: the magic metric?" which is available on Kyle Hailey's website. I've never seen JB give the presentation, but I love the slides.)
Database time is total time spent by user processes either actively working or actively waiting in a database call

The same presentation describes the components of DB Time as
Time spent in the database by foreground sessions
Includes CPU time, IO time and wait time
Excludes idle wait time

In the context of a Statspack or AWR report, the top 5 timed events section is showing you the top 5 contributors to DB Time. (In fact, what I find most interesting about the latest versions of the Statspack report is the increased focus on time. For example, the first section of top SQL statements by resource consumption is ordered by DB CPU, followed by the SQL ordered by Elapsed Time, before we get anywhere near Logical or Physical Reads. Regardless of whether you're licensed for the Diagnostics Pack and have access to ASH, AWR and ADDM, you can still take advantage of some of the instrumentation improvements - Event Histograms, for example - and it's clear that Oracle is increasing its focus on time.)

Note that, although I'm choosing to write about aggregated system-wide values as a performance indicator because it's one convenient use of DB Time (particularly when comparing two different periods of time that might be seperated by months or when you have hundreds of systems to support or, most important, if you're writing a tool like ADDM.), I don't think there is anything inherently system-wide about DB Time. If you insist that the only valid performance analysis is that carried out at the session level then, make no mistake, DB Time is recorded for each individual session. It can be used as the input to response time tuning and is really just the Oracle Servers recording of the R in R=S+W. i.e. it's equally useful for Response Time tuning at the session level. In fact, I wish it had been called DB Response Time but I understand that even mentioning 'Response Time' might have led to the argument that the Database Server is only one component of the user's end-to-end response experience and that Response Time doesn't make sense as a term for data that's going to be aggregated for multiple sessions in some cases. (i.e. Can an entire instance have a aggregated Response Time?)

DB Time is the most important of the various Time Model Statistics, which break down the Service component of R = S + W into more detail. Here are the Time Model statistics from the Statspack report for the single-user test. (Don't forget that, as always, this is just reporting underlying statistics. In this case, these statistics are also exposed via v$sys_time_model and v$sess_time_model)

Time Model System Stats  DB/Inst: TEST1020/test1020  Snaps: 22-23
-> Ordered by % of DB time desc, Statistic name

Statistic                                       Time (s) % of DB time
----------------------------------- -------------------- ------------
sql execute elapsed time                           282.9         88.0
DB CPU                                              57.4         17.9
PL/SQL execution elapsed time                        7.8          2.4
parse time elapsed                                   6.2          1.9
hard parse elapsed time                              4.6          1.4
hard parse (sharing criteria) elaps                  2.3           .7
hard parse (bind mismatch) elapsed                   0.6           .2
PL/SQL compilation elapsed time                      0.4           .1
connection management call elapsed                   0.0           .0
repeated bind elapsed time                           0.0           .0
sequence load elapsed time                           0.0           .0
DB time                                            321.5
background elapsed time                            249.4
background cpu time                                  2.3
... and here are the Time Model stats from the Statspack report for the four-user test

Time Model System Stats  DB/Inst: TEST1020/test1020  Snaps: 24-25
-> Ordered by % of DB time desc, Statistic name

Statistic                                       Time (s) % of DB time
----------------------------------- -------------------- ------------
sql execute elapsed time                           779.5         64.8
DB CPU                                             107.7          9.0
PL/SQL execution elapsed time                       15.7          1.3
parse time elapsed                                   2.8           .2
hard parse elapsed time                              2.2           .2
hard parse (sharing criteria) elaps                  1.1           .1
hard parse (bind mismatch) elapsed                   1.1           .1
connection management call elapsed                   0.1           .0
repeated bind elapsed time                           0.0           .0
sequence load elapsed time                           0.0           .0
DB time                                          1,202.4
background elapsed time                            408.3
background cpu time                                  2.7
(For someone who asked me this question recently, DB CPU is just the value you would see in the CPU row of the existing top 5 timed events section although I understand that CPU measurement has been improved significantly in recent versions.)

In this case, there's a relationship between the number of people trying to do something and the total amount of DB Time consumed for a given wall clock duration. If we divide DB Time by the Wall Clock time, we're left with the average number of active sessions during the period. If I apply this first to the single-user test, using the values from the Statspack report :-
Elapsed Time (from report header) = 5.95 minutes = 357 seconds
DB Time (from Time Model Statistics) = 321 seconds
321/357 = 0.89 Average Active Sessions

and, for the four-session test :-
Elapsed Time = 5.5 minutes = 330 seconds
DB Time = 1202 seconds
1202/330 = 3.64 Average Active Sessions

Clearly, the instance was a lot busier during the four session test.

Why weren't the values exactly 1 and 4? Well, for starters, the Statspack reporting periods were slightly longer than the test run period as I executed snapshots manually in a sqlplus session. Therefore there was a period of time in both reports when the server was dead quiet. There is also the application overhead of Swingbench running the benchmarks and submitting the calls to Oracle. Oracle can only sensibly record the time when it's actually doing work on behalf of the application, not when the application is doing it's own thing, processing the results of the last database request. None of the database sessions in this test that were performing many small transactions was active for 100% of the time.

But that's only one part of the relationship. In this case, the instances workload has increased because more users are working at the same time, but there's more to performance problems than that. How about a different example? Imagine a single user is running a single query that takes 2 minutes to complete. The session has been connected for 20 minutes, most of which has been idle, waiting for the user to submit the query. If we look at the session-level information (using v$sess_time_model), we'd see something like this.
DB Time = 120 seconds
i.e. DB Time shows us 'the Oracle bit' that we might be able to tune. The goal of the DB Time Performance Method that Graham Wood presented at last year's UKOUG conference (amongst others) is to reduce the amount of DB Time taken to deliver the same results. So, how can we reduce DB Time here? By making the query run more quickly, whether it's through tuning it to do less work, or increasing the efficiency of that work by reducing bottlenecks. Regardless of *how* I improve the performance of the query, let's say I happen to make the query run in 50 seconds.
DB Time = 50 seconds

The end user's experience has improved.

There's a lot more I could say about DB Time. Like all of the best performance concepts or methods (e.g. YAPP, Method-R) it can seem so obvious as to not be worth saying, but contains an enormous amount of common sense and technical rigour. I suppose one important aspect of DB Time that I would highlight is that it's a common currency for ADDM. If you were to write an automatic performance diagnostic tool, what would be your goal? To reduce the time that any particular action takes, whether that's by eliminating a bottleneck at the server level, or in the instance configuration or a particular part of the application code. By combining ASH and AWR data using DB Time as the key measurement, ADDM can focus on the actions that will deliver the most significant response time reductions, whether they be more CPU or disk resource, tuning individual SQL statements or eliminating locking issues. Because DB Time can be aggregated at many levels (e.g. Session, Service, Instance) , it can be used in a number of different ways, depending on what data is available and what the goal of the optimisation exercise is.

DB Time - it's the future ;-)

In the meantime, here are the slides from a couple of other presentations that cover DB Time in much more depth than I have here. Until Graham Wood starts that blog of his (hint, hint) these are the next best thing.

http://www.oracle.com/technology/products/manageability/database/pdf/ow07/diag_techniques_presentation_ow07.pdf

http://doug.nl/downloads/OGH20080410_GRAHAM_WOOD.pdf

* Of course, some people would say that you shouldn't pay too much attention to any values in Statspack reports, but they've worked so many times for me that I'll stick to my view that they're not worthless. In any case, you have a balancing contrary view.
Categories: RDBMS

Flights, OpenWorld, VMware and stuff…

Tim Hall - Wed, 08/20/2008 - 07:17

I realize I’ve been a little quiet of late, but life has been really busy and something had to give…

Flights for my conference dates are now sorted. Big thanks to Victoria, LaShon and Sylia. I better get on the case and book my hotels. The plan is:

Birmingham > Frankfurt > San Francisco > Auckland > Perth > Sydney > Gold Coast > Auckland > LAX > Frankfurt > Home

Just looking at it is giving me the fear. That’s some serious air time. I’m way to fat to fly coach at the moment. I better lose some weight and get some anti-DVT support socks… :)

I’ve still got to sort out my talks for the conferences. It’s all stuff I’ve been teaching recently, so the material isn’t the problem. The hard thing is trying to compress something that takes me 3.5 hours to teach into 45 minutes without sounding like a list of bullet points.

Recently, I’ve been doing some work with VMware ESX Server. I may have something coming out on the VMware VIOPS site soon. I’ll post again if that works out. By the way, big thanks to the VMware guys (Steve, Tushar and Chris) for hooking me up with the software. I’ve been wanting to play with this stuff for a long time. I was going to start using the free ESXi stuff, but I’ve now got the pukka gear… :)

The OCP stuff has hit the back burner for the moment. I was aiming to take the exam this week, but that’s not going to happen now. I’ve got pretty much all of the notes sorted, but I’ve not had time to learn them. Maybe I’ll get time before OpenWorld, or even at OpenWorld…

Cheers

Tim…

Categories: RDBMS

O Limp Icks

Dad Hacker - Wed, 08/20/2008 - 02:23

I swear to God, if I see another story on NBC about “How I made it to the Olympics despite (a) my crippling neural disease, (b) stifling poverty and a crippling neural disease, (c) my whole poverty-stricken neighborhood and my entire family and street beset with assorted crippling neural diseases, or (d) that my parents were NBC reporters and totally lacking in functional neurons” I’m going to write to the Olympic Committee and suggest that we hold a Zombie Olympics, or maybe one with just reporters hanging out and trading notes on neural diseases they’ve overcome.

I can just see that:

“Bob, here comes Kathy Gizzard around the last turn in the Women’s  300 meter grovel.  And she is, she is –”

“Yes! She’s overcoming adversity!”

“And poverty, Bob, don’t forget poverty.”

“With her rare neural disease in fine form, too.  She’s nearly there . . . YES! A new world’s record for abjectly miserable sports coverage.”

Categories: Other

A Golden Gate to an Open World, Part 2

OOW2008 blog - Tue, 08/19/2008 - 23:50
Reaching Out—Over the Web In the late 1990s, Oracle was embracing the internet—becoming the first enterprise computing company to adopt the Java programming language. The Silicon Valley companies sprouting up from increased internet use created new might for the Bay... jack.flynn
Categories: Other

Announcement: The Pythian Group and Open Query: Partners

Pythian group - Tue, 08/19/2008 - 21:07


I’d like to share some great news — The Pythian Group and Open Query have become partners!

Open Query is a leading provider of high-quality MySQL, PostgreSQL and related training in Australia and New Zealand. They offer consulting services too, and are also known for their MySQL Graph Storage Engine. Feel free to browse through Open Query web-site for more info.

Open Query was founded by Arjen Lentz, who was employee number 25 at MySQL AB. If you follow the MySQL community then I’m sure you already read Arjen’s blog.

Since you’re reading this blog, I guess you probably already know what Pythian does, but if you want to learn more, please click through to our home page.

Together with Open Query, we are going to extend our service offerings and strengthen our positions in outsourced database management services, consulting, and training.

Categories: RDBMS

Miscellaneous

Jonathan Lewis - Tue, 08/19/2008 - 11:10
I’ve just come back from a couple of weeks wind-surfing - so I’ve spent the last few days recovering from sundry injuries and catching up on email. One of the emails raised a point about deterministic function which made me realise that I still had a few items that I had written for Howard Rogers’ Wiki [...]
Categories: RDBMS

Deja etc. vu

Dad Hacker - Tue, 08/19/2008 - 04:31

Scrum is supposed to be about getting repeatability.  The thing is, you don’t get repeatability until you’ve actually repeated something.

N == 0    Not repetition
N == 1    Not repetition
N == 2    Not so fast: you haven’t finished two.
N == 3    You’re just cocky now.
N == 4    You’re still trying to invent new, snazzy stuff.  Stop that.
N == 5    When will the nightmare end?  (Getting there…)
N == 6    Are you as sick of these as I am?

That’s the idea.  You’ve got repetition now, have fun with that.

Categories: Other

Different ways to take Screenshot on Linux

Arju - Tue, 08/19/2008 - 04:06
Way 1: Using GUI if you have GNOME:
If you have GNOME installed then using graphical tool you can easily take a screenshot. To do it
Click Applications —> Accessories —> Take Screenshot.
You are done.

Way 2: With the PrintScreen Button
To get a screenshot of your active window just press ALT+Print Screen button. A new window will appear. Just enter your name of the screenshot there as well as the location.

Way 3: Using ImageMagick Tool: This tool can be useful in certain scenario. Suppose to take a screenshot of a menu you can't use GNOME tool. You have to use this tool then as it support a delay before taking the screenshot. You need to install this tool to use.
To check whether ImageMagick tool is installed or not just issue,
# import -version
bash: import: command not found

You can get this tool from http://www.imagemagick.org/script/index.php.
The next step is to install it. On my debian linux, I issue
#apt-get install imagemagick

To take a screenshot in the terminal with ImageMagick, type the following line into a terminal and then click-and-drag the mouse over a section of the screen:

import MyScreenshot.jpg

To view it,
#eog MyScreenshot.jpg

To capture a creenshot after 10 seconds delay you can issue,
sleep 10; import -window root MyScreenshot2.jpg

Way 4: Using scrot
To install scrot on my system I used,
sudo aptitude install scrot

To take a snapshot with it use,
scrot MyScreenshot.png

Way 5: With the Terminal using gnome-panel-screenshot:
Using terminal in GNOME you can also take the snapshot in linux. Do it as,
$gnome-panel-screenshot

Also delay can be added by,
$gnome-panel-screenshot --delay 5

Way 6: With the GIMP
Install gimp on my debian system by,
# apt-get install gimp
And to take snapshot open gimp and follow,
File —> Acquire —> Screen Shot.

Way 7: Web Page Snapshot With Firefox
With screengrab you can take screenshot within webpage just by a click if you use firefox. To get screengrab just download it from https://addons.mozilla.org/en-US/firefox/search?q=screengrab&cat=all

To use it just right click on a web page and choose: ScreenGrab! —> Save document as image.

Way 8: With xwd to screen a terminal
Just on your terminal write,
$xvd> screen.xvd

And then convert it to any format that you wish using convert command.
$convert screen.xvd screen.jpg

Way 9: Using ksnpshot
With ksnapshot you can easily take snapshot. It can be used in KDE as well as GNOME.

Way 10: Using gimp Tool

If you know any other ways just enter inside comments in this post. Thank you.
Categories: RDBMS

OTN at Oracle OpenWorld

OOW2008 blog - Mon, 08/18/2008 - 23:45
Your Ticket to More Oracle Technology Network (OTN) is the world's largest community of Oracle developers, DBAs/admins, architects, and QA testers. So, what better place to gather than at the world's biggest Oracle event? Oracle OpenWorld 2008 will host a... jack.flynn
Categories: Other

mysqlbinlog Tips and Tricks

Pythian group - Mon, 08/18/2008 - 20:48

So, you have a binlog. You want to find out something specific that happened inside of it. What to do? mysqlbinlog has some neat features, which I thought we would look at here.

I should first explain what mysqlbinlog really is. It is a tool that lets you analyze and view the binlogs/relaylogs from mysql, which are stored in binary format. This tool converts them to plaintext, so that they’re human-readable.

For the first tip, let’s start with the --read-from-remote-server option, which allows you to examine a binlog on a master server in order, perhaps, to dump it onto your slave and compare master/slave logs for potential problems*.

$ mysqlbinlog --read-from-remote-server -uwesterlund -p mysql-bin.000001 -h 127.0.0.1 -P 3306 | head -5 Enter password: /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #080815 19:25:23 server id 101 end_log_pos 107 Start: binlog v 4, server v 6.0.5-alpha-log created 080815 19:25:23 at startup

Pretty useful!

Now, let’s assume we have a binlog that is 94 lines long*:

(more…)

Categories: RDBMS

Case study on some rowcache internals, cached non-existent objects and a describe bug

Tanel Poder - Mon, 08/18/2008 - 12:37
I got a question regarding Metalink note 296235.1 about a describe bug which causes objects to “disappear” when they are described when database is not open. It was an interesting case involving a bug, so I wrote a quite long analysis with test cases today. However when posting the entry to wordpress, it managed to completely [...]
Categories: RDBMS

RunInstaller fails with java.lang.UnsatisfiedLinkError

Arju - Mon, 08/18/2008 - 05:05
To install clusterware whenever I run runIstaller it fails with following errors along with unknown source.
-bash-3.1$ ./runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed


All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2008-08-17_03-53-41PM. Please wait ...-bash-3.1$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999, 2005, Oracle. All rights reserved.

Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2008-08-17_03-53-41PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred..
java.lang.UnsatisfiedLinkError: /tmp/OraInstall2008-08-17_03-53-41PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.(Unknown Source)
at java.awt.Component.(Unknown Source)
at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202)
at oracle.sysman.oii.oiic.OiicInstaller.getInterfaceManager(OiicInstaller.java:436)
at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:926)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866)
Exception in thread "main" java.lang.NoClassDefFoundError
at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202)
at oracle.sysman.oii.oiif.oiifm.OiifmAlert.(OiifmAlert.java:151)
at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:984)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866)


Solution of The problem
Create the dynamic link with the library as following,
$cd /usr/lib
$ln -s libXpm.so.4.11.0 libXp.so.6
Categories: RDBMS

Installing Clusterware through OUI fails Cheking OS version in RHL-5

Arju - Mon, 08/18/2008 - 04:42
Whenever to install oracle clusterware I run runInstaller on Red hat linux 5 machine it fails with operating system version test. Like below.

-bash-3.1$ ./runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<

Exiting Oracle Universal Installer, log for this session can be found at /tmp/OraInstall2008-08-17_03-35-38PM/installActions2008-08-17_03-35-38PM.log

Cause of The Problem
The installer picks up the version of Linux installed from the /etc/redhat-release file. There may be several reasons for which the above messages can be shown.

1. Your OS is not certified with the oracle certification to install clusterware.

2. The /etc/redhat-release become corrupted and instller can't read the file.

3. It cannot identify the version of Linux installed in the machine and reports a failure accordingly.

Solution of The Problem
Step 1: Ensure that your OS version is certified with clusterware installation or the product you want to install. This can be seen by oracle certification matrix.

Step2: Ensure that /etc/redhat-release is there and not corrupted. You can copy it to somewhere and edit it.

Step 3: I have seen if you want to install oracle clusterware on RHL 5 then then it shows above failure though it is certified and I have intact /etc/redhat-release. In that case to meet clusterware installation edit the /etc/redhat-release file to make it from 5 to 4. I have done this,

-bash-3.1$ vi /etc/redhat-release
Red Hat Enterprise Linux Server release 4 (Tikanga)

Now again try to run runInstaller and possibly you will not get the error.
Categories: RDBMS

How to Find out or Check Linux Version Information

Arju - Mon, 08/18/2008 - 04:18
Before installing oracle clusterware it is necessary in which version of linux you are trying to install to. Because based on the version procedure may vary to install clusterware.
Here I mention several ways to check the version of linux.

Find out linux release information
1)On Red Hat Linux,
-bash-3.1$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 4 (Tikanga)

2)On SUSE Linux,
$cat /etc/SuSE-release
SUSE LINUX Enterprise Server 9 (i586)
VERSION = 9

3)On Debian Release,
debian:/home/Arju/Spark# cat /etc/debian_version
4.0

Find out linux Kernel Version
debian:/home/Arju/Spark# uname -s -r
Linux 2.6.18-4-686

debian:/home/Arju/Spark# uname -a
Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux

-bash-3.1$ uname -a
Linux racnode-1 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

-bash-3.1$ uname -s -r
Linux 2.6.18-8.el5

Description of the output of uname -a
At the end but the before of OS name the output of "uname -a " shows the OS word-size.
- i686 i386 indicates 32-bit Linux on standard x86 microprocessor series hardware
- x86_64 indicates 64-bit Linux on standard AMD64 or Intel EM64T hardware
- ia64 indicates 64-bit Linux on the Itanium-2 processor developed jointly by Hewlett-Packard and Intel
- s390x indicates 64-bit Linux on IBM S/390 (31-bit) and zSeries (64-bit) hardware.
- ppc64 indicates 64-bit Linux on IBM power based systems that support Linux includes machines branded as pSeries, iSeries, System p5 and System i5.

The first word of the output shows the kernel name. We see the kernel name is linux.
Only itself can be seen by,
-bash-3.1$ uname -s
Linux

The second word of the output of " uname -a " shows the hostname. Here we see the hostname is debian for debian machine and racnode-1 for redhat linux machine.
Only itself can be seen by,
-bash-3.1$ uname -n
racnode-1

The third word of the output of "uname -a" prints the kernel release. Here for racnode-1 machine we see kernel release is 2.6.18-8.el5. Only itselef can be seen by uname -r
-bash-3.1$ uname -r
2.6.18-8.el5

The fourth word print the kernel version. For racnode-1 we see kernel version is #1 SMP Fri Jan 26 14:15:21 EST 2007. Only itself can be seen by, uname -v.
-bash-3.1$ uname -v
#1 SMP Fri Jan 26 14:15:21 EST 2007

The fifth one prints the machine hardware name. Only itself can be seen from ,
-bash-3.1$ uname -m
i686

The sixth one prints the processor type. Here it is seen by,
-bash-3.1$ uname -p
i686

The seventh one prints the hardware platform. Here it is
-bash-3.1$ uname -i
i386

The eighth one print the operating system. Here it is
-bash-3.1$ uname -o
GNU/Linux

In fact "uname -a" is the combination of all these 8. That is "uname -a" is equivalent to,
-bash-3.1$ uname -snrvmpio
Linux racnode-1 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

Another Way by Cheking issue file
From the /etc/issue file you can also check the version information. In fact it is a text file which contains a message or system identification to be printed before the login prompt.

From here we see for debian machine it is 4.0 and for red hat racnode-1 it is 5.
debian:/home/Arju/Spark# cat /etc/issue
Debian GNU/Linux 4.0 \n \l

-bash-3.1$ cat /etc/issue
Red Hat Enterprise Linux Server release 5 (Tikanga)
Kernel \r on an \m

Related Documents
How to Identify OS or Oracle 64 bit or 32 bit on Unix
Categories: RDBMS
123456789next ›last »



Howto's
Check DUDE primer for info

Get Support

Worldwide support contact :
Henrik Bjerknæs Rasmussen
Service & Support Manager
Miracle AS
E-mail :
hra@miracleas.dk
Cell: +45 25 277 110

US support contact:
Daniel Fink
E-mail
daniel.fink@optimaldba.com
Cell : +1 303 808 32 82

Latin America support :
HBtec
E-mail
dude@hbtec.com.br
Cell : +55 47 88497639

South African support :
Kugendran Naidoo
NRG Consulting
E-mail
k@nrgc.co.za
Cell : +27 82 7799275

Benelux only :
Kurt Van Meerbeeck
E-mail
dude@ora600.be
Cell : +32 495 580714