Criar dois arquivos ASMFAKE

# o comando abaixo interrompe o servico de acesso a dispositivos
# brutos – RAW
/etc/init.d/rawdevices stop
# apagar o conteudo da pasta /dev/raw -r recursivo -f sem questionar = force
rm -rf /dev/raw

# va ate a pasta /dev
cd /dev
# verifica qual a pasta atual
pwd
# recria os links de acesso aos dispositivos brutos
MAKEDEV raw
# lista a pasta /dev/raw
ls /dev/raw
# apaga o conteudo e a pasta abaixo se existir.
rm -rf /u01/asmdisks/*
# cria a pasta abaixo -p = parent nao precisa estar dentro da pasta para emitir o comando.
mkdir -p /u01/asmdisks
# troca o usuario e grupo do arquivo -R recursivo e force sem questionar
chown oracle:oinstall -Rf /u01/asmdisks
# va para a pasta
cd /u01/asmdisks
# verifica qual a pasta atual
pwd
# Preenche o arquivo abaixo com zero o arquivo em 200 x blocos de 1024k
dd if=/dev/zero of=/u01/asmdisks/asm_disk1 bs=1024k count=200
# Preenche o arquivo abaixo com zero o arquivo em 200 x blocos de 1024k
dd if=/dev/zero of=/u01/asmdisks/asm_disk2 bs=1024k count=200
# Altera a permissao liberando o arquivo totalmente
chmod 777 /dev/raw/raw*
chmod 777 /u01/asmdisks/*
# Altera usuario e grupo dos arquivos raw1 a raw5
chown oracle:oinstall /dev/raw/raw[1-5]
# inicio da associacao do dispositivo bruto ao Sistema operacional
losetup /dev/loop1 /u01/asmdisks/asm_disk1
losetup /dev/loop2 /u01/asmdisks/asm_disk2

# preencher o arquivo rawdevices para que no proximo Boot ele ja tenha conhecimento dos rawdevices
cat /dev/null > /etc/sysconfig/rawdevices

echo “/dev/raw/raw1 /dev/loop1” >> /etc/sysconfig/rawdevices
echo “/dev/raw/raw2 /dev/loop2” >> /etc/sysconfig/rawdevices

# grupo
chown root:oinstall /dev/loop[1-5]
# permissao
chmod 777 /dev/loop[1-5]

# Iniciar servico de rawdevices
/etc/init.d/rawdevices start

# Listar o rawdevices do SO
raw -qa

# reiniciar o clusterware
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig reset
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig delete
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig add

# Listar os dispositivos reconhecidos pelo Oracle.
su – oracle
export ORACLE_SID=+ASM
/u01/app/oracle/product/10.2.0/db_1/bin/sqlplus sys/oracle as sysdba <startup;
alter system set “_asm_allow_only_raw_disks”=false scope=spfile;
alter system set asm_diskstring=’/u01/asmdisks/*’ scope=both;
shutdown immediate;
startup;
select path
from V$ASM_DISK;
exit;
EOF

exit

Exercicios: Confirme se a sua instancia ASM esta enxergando os discos fisicos. Para isso inicie o ASM e logo depoisverifique as informacoes na V$ASM_DISK, esta view mostra os discos descobertos pela instancia ASM.
Faça um script para isso:
Arquivo: listadiscoraw.shexport ORACLE_SID=+ASMsqlplus / as sysdba @listadiscoraw.sql
Arquivo: listadiscoraw.sql############### INICIOSET ECHO OFFselect *from V$ASM_DISK;############### TERMINO
Crie um script para criar os diskgroups passando como parametro o rawdevice, ou seja o numero do diskgroup aser criado. Com o script crie dois diskgroups: 1 e 2.Os nomes dos diskgroups sao dgroup1 e dgroup2Pode ser criado pelo dbca.
Arquivo: criadiskgroup.shexport ORACLE_SID=+ASMsqlplus / as sysdba @criadiskgroup.sql
Arquivo: criadiskgroup.sql############### INICIOCREATE DISKGROUP dgroup&EXTERNAL REDUNDANCYDISK ‘/u01/asmdisks/asm_disk&&’;############### TERMINO
Faça um script para confirmar se o seu diskgroup foi criado.Confirme se o diskgroup foi criado.
Arquivo: mostradiskgroups.sh#export ORACLE_HOMEexport ORACLE_SID=+ASMsqlplus / as sysdba @criadiskgroup.sql
Arquivo: mostradiskgroups.sql############### INICIOuse a V$ASM_DISKGROUP e V$ASM_FILE############### TERMINO
Metodos de utilizacao da ASM
Crie um script para criar a seguinte tablespace e logo depoisinserir dados em uma tabela CLIASM criada nesta TBS.
Arquivo: criatbs.sh#export ORACLE_HOMEexport ORACLE_SID=+ASMsqlplus / as sysdba @criatbs.sql
ARQUIVO criatbs.sql############### INICIOCREATE TABLESPACE TBSASM1 including datafiles and contents;CREATE TABLESPACE TBSASM1DATAFILE ‘+dgroup1’ SIZE 10M AUTOEXTEND ON;
create table CLIASM(CODIGO NUMBER,NOME VARCHAR2(100))tablespace TBSASM1;
insert into CLIASMvalues(1,’CLITESTE 1′);
insert into CLIASMvalues(2,’CLITESTE 2′);
commit;
select * from CLIASM;
select table_name, tablespace_name from user_tables;
exit;
############### TERMINOCrie a tabela a seguir:
create table dicionario as select * from dict;
Crie a tablespace TBSASM2 baseado no diskgroup2.
Mova os dados da tabela dicionariopara a tablespace TBSASM2.
alter table DICIONARIOtablespace TBSASM2;
Verifique atraves da tabela do dicionario DBA_SEGMENTS:
SELECT SUBSTR (s.owner, 1, 15) “OWNER “,SUBSTR (s.segment_name, 1, 30) “SEGMENT_NAME “,SUBSTR (s.segment_type, 1, 10) segment_tp, s.tablespace_name,s.next_extentFROM dba_segments sWHERE s.next_extent > (SELECT MAX (f.BYTES)FROM dba_free_space fWHERE f.tablespace_name = s.tablespace_name)/ Faca um script para fazer o backup copy dos datafilesda tablespace USERS.Restaure o datafile em questao para a TBSASM1.