Friday, October 27, 2006

10g CRS deamon starting/stopping

This is just a short extract from the full note (available here). Looks like this is important and needs to be considered while designing the system that CRS in needed to run 10g RAC and that the only way to start it in case of failure is reboot machine

CRS (Cluster Ready Services) is a new feature for 10g Real Application Clusters
that provides a standard cluster interface on all platforms and performs
new high availability operations not available in previous versions

Prior to installing CRS and 10g RAC, there are some key points to remember about CRS and 10g RAC:
- CRS is REQUIRED to be installed and running prior to installing 10g RAC.
- CRS can either run on top of the vendor clusterware (such as Sun Cluster, HP Serviceguard, IBM HACMP, TruCluster, Veritas Cluster, Fujitsu Primecluster,etc...) or can run without the vendor clusterware. The vendor clusterware was required in 9i RAC but is optional in 10g RAC.
- The CRS HOME and ORACLE_HOME must be installed in DIFFERENT locations.
- The supported method to start CRS is booting the machine. MANUAL STARTUP OF THE CRS STACK IS NOT SUPPORTED UNTIL 10.1.0.4 OR HIGHER.
- The supported method to stop is shutdown the machine or use "init.crs stop".

 

Thursday, October 26, 2006

Easy way to find file causing IO problems in 10g

select event,wait_time_milli,wait_count

from v$event_histogram

where event in ('db file sequential read','db file scattered read')



   EVENT                             WAIT_TIME_MILLI    WAIT_COUNT

1 db file sequential read      1                                       3064

2 db file sequential read      2                                      183

3 db file sequential read      4                                      161

4 db file sequential read      8                                      513

5 db file sequential read      16                                    1227

6 db file sequential read      32                                    1121

7 db file sequential read      64                                     700

8 db file sequential read      128                                   153

9 db file sequential read      256                                   10

10 db file sequential read    512                                   12


Let's assume we want to check those 12 that had 512ms



select file_name,

singleblkrdtim_milli, singleblkrds

from v$file_histogram v, dba_data_files d

where v.file# = d.file_id and singleblkrdtim_milli=512;



FILE_NAME SINGLEBLKRDTIM_MILLI SINGLEBLKRDS

1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\REDIK\SYSTEM01.DBF 512 12



 

Create objects in different schema

Suppose there is a need to create by many users objects (e.g. tables) in one, and only one specific schema. Let's call this schema OUTSCHEM. The simplest solution would be to grant 'create any table' privilege. However this is much more they need, as it allows them to create objects in any schema. Such a solution seems to be danger.
There is a very simple way to solve this. Under the OUTSCHEM schema we create procedure, in the simplest form it can look like below:

CREATE OR REPLACE procedure create_in_outchem (sql_to_run in varchar)
as
sql_stmt varchar(4000);
begin
sql_stmt := sql_to_run;
execute immediate (sql_stmt);
end create_table_in_arimr;

Then we grant execute of this procedure to users we want. As a result when in sql_to_run there will be create table statement, table will be created in OUTSCHEM instead of user.
Some remarks:
  1. The procedure above is just an example, in a form it is written it allows to run ANY sql statement as OUTSCHEM user. So if you want this procedure to be used only to create tables statements, so conditions need to be added
  2. Check carefully that OUTSCHEM user doesn't have 'create ANY ...' privilege. If so, there will be no difference between running this procedure and grant create any to users




Monday, October 23, 2006

Begining

 Hello,
I am Radek Zyskowski, from Warsaw, Poland. I work as a DBA in a world of Oracle since 1998. The time will show whether I have enough power and possibility of maintaning this blog...