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".
Friday, October 27, 2006
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
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:
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:
- 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
- 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...
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...
Subscribe to:
Posts (Atom)