Oracle VM Consulting
view counter

Feed items

Running a COUNT(column) versus COUNT(*)

Just a quick post about the recurring myths about COUNT operations in Oracle.
See the discussion in this forums thread.


As I demonstrated in my previous blog post "ENABLE ROW MOVEMENT" the ALTER TABLE ... ENABLE ROW MOVEMENT is not just for supporting the ALTER TABLE ... SHRINK SPACE.

Furthermore, unlike ALTER TABLE ... SHRINK SPACE which requires that the Table be created in a Tablespace with Segment Space Management AUTO ("ASSM"), ENABLE ROW MOVEMENT can be done for a table in a Segment Space Management MANUAL ("MSSM") Tablespace as well.

SQL> create tablespace MSSM

Virtathon Sessions Schedule

The Sessions Schedule for Virtathon has been published.

View it here.

(note : The published session times are US EDT (GMT -4))



Since the ALTER TABLE SHRINK command appeared and "ENABLE ROW MOVEMENT" has been presented as a requirement, some DBAs have been confused about what it means to enable row movement.

This does *NOT* cause Oracle to automatically move a row. However, a row may be moved as a result of action by the DBA (e.g. ALTER TABLE SHRINK) or a User / Application. The latter is the case where a row in a Partitioned Table has to move from one Partition to another because the Partition Key itself in that row has been updated.

Using WGET to download Patches

(more of a "public bookmark" here, because it's been a long time since I downloaded a patch)

Oracle Support's update on using WGET to download patches is in their blog.


Reading an AWR - 1

Given this extract from an AWR :

Instance Efficiency Percentages (Target 100%)
Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 99.93 In-memory Sort %: 100.00
Library Hit %: 94.76 Soft Parse %: 96.21
Execute to Parse %: 30.63 Latch Hit %: 100.00
Parse CPU to Parse Elapsd %: 79.13 % Non-Parse CPU: 93.52

Should I be worried about the Parse ratios ?

Multiple Channels in RMAN are not always balanced

Occasionally, we come across questions about multiple channels and parallelism in RMAN.
Although RMAN distributes the datafiles across the channels, it doesn't necessarily mean that each channel has the same I/O requirements and needs the same amount of time. One channel may be reading more data and writing a larger backup than another.

For example, in this database with 16 datafiles where data is not equally distributed across all the datafiles :

SQL> select file_id, sum(blocks) from dba_extents group by file_id order by 1;

DDL Triggers

A few weeks ago, there was a question about disabling TRUNCATEs. That can be easily done via a Trigger.

But you have to be careful about such triggers. Such a trigger can disable a TRUNCATE and raise an error. It will *not*, however, prevent a COMMIT.
Here's an example of such a trigger :

SQL> -- create a trigger that raises an error on truncates
SQL> create or replace trigger prevent_truncates
2 before truncate on schema
3 begin
4 raise_application_error(-20001,'TRUNCATE not permitted');
5 end;
view counter