Você está na página 1de 66

ÍNDICE

1 VSAM BÁSICO ________________________________________ 1-4


1.1 Overview do VSAM _________________________________ 1-5
1.2 O que é o VSAM____________________________________ 1-6
1.3 Terminologia do VSAM ______________________________ 1-7
1.3.1 Registro Lógico ________________________________________ 1-7
1.3.2 Registro Físico _________________________________________ 1-7
1.3.3 Control Interval ________________________________________ 1-7
1.3.4 Control Área __________________________________________ 1-8
1.3.5 Split _________________________________________________ 1-8
1.3.6 Registros Spanned _____________________________________ 1-9
1.3.7 Relative Byte Address ___________________________________ 1-9
1.3.8 Componentes _________________________________________ 1-9
1.3.8.1 Componente de dados ________________________________ 1-9
1.3.8.2 Componente de índice________________________________ 1-10
1.3.9 Cluster ______________________________________________ 1-13
1.3.10 Chaves ______________________________________________ 1-13
1.3.11 Sphere ______________________________________________ 1-14
1.3.12 Índices Alternados_____________________________________ 1-14
1.3.13 Path de Índice Alternado _______________________________ 1-15
1.4 Tipos de arquivos _________________________________ 1-16
1.4.1 Entry sequenced data set (ESDS)_________________________ 1-16
1.4.2 Keyed sequenced data set (KSDS) ________________________ 1-17
1.4.3 Relative Record data set (RRDS) _________________________ 1-19
1.4.3.1 Processamento típico de um RRDS ______________________ 1-20
1.4.4 Variable relative Record data set (VRRDS)__________________ 1-20
1.4.5 Linear data set (LDS) __________________________________ 1-20
1.5 Arquivos Estendidos _______________________________ 1-22
1.6 Endereçamento Estendido __________________________ 1-23
1.7 Acesso a dados VSAM ______________________________ 1-24
1.7.1 IDCAMS _____________________________________________ 1-24
1.8 Definindo arquivos VSAM ___________________________ 1-25
1.9 Exploradores do VSAM _____________________________ 1-26
1.9.1 DB2 ________________________________________________ 1-26
1.9.2 Hierarchical file system (HFS)____________________________ 1-26
1.9.3 ZSeries File System (zFS) _______________________________ 1-26
1.9.4 CICS________________________________________________ 1-26
1.9.5 DFSMS/hsm __________________________________________ 1-26
1.9.6 DFSMS/rmm _________________________________________ 1-26
2 Performance no VSAM_________________________________ 2-27

1-1
2.1 Regras de dedão para VSAM _________________________ 2-28
2.1.1 Regras inválidas ______________________________________ 2-28
2.2 Parâmetros que afetam a performance ________________ 2-29
2.2.1 Unidade de alocação ___________________________________ 2-29
2.2.2 Guaranted Space______________________________________ 2-29
2.2.3 Otimização do tamanho da control área (CA) _______________ 2-30
2.2.4 Partial Release________________________________________ 2-31
2.2.5 Constraint relief_______________________________________ 2-31
2.2.6 Tamanho da Control Interval ____________________________ 2-32
2.2.7 Definição de FREE SPACE para KSDS e ESDS _______________ 2-33
2.2.8 Opções de índice ______________________________________ 2-35
2.2.9 Key Range e Ordered __________________________________ 2-35
2.2.10 Share options ________________________________________ 2-35
2.2.11 Opção de carga inicial __________________________________ 2-36
2.2.12 Tamanho do REGION __________________________________ 2-37
2.2.13 Opções de Buffer______________________________________ 2-37
2.2.14 Técnicas de Buffer_____________________________________ 2-39
2.2.14.1 Non-Shared Resource (NSR) _________________________ 2-39
2.2.14.2 Local Shared Resource (LSR) ________________________ 2-41
2.2.15 Compressão de dados__________________________________ 2-42
2.2.15.1 Verificando candidados VSAM ________________________ 2-42
2.2.16 VSAM Data Striping ____________________________________ 2-43
2.2.16.1 Tópicos do VSAM data striping _______________________ 2-44
2.2.16.2 Multi layer e data striping ___________________________ 2-46
2.2.16.3 Implementando um VSAM data striping ________________ 2-46
3 Gerenciando arquivos VSAM ____________________________ 3-47
3.1 Considerações para Reorganização ___________________ 3-48
3.1.1 Splits de CI/CA _______________________________________ 3-48
3.1.2 Perda de espaço útil na CA de dados ______________________ 3-48
3.1.3 Splits de CI/CA com aumento de espaço ___________________ 3-51
3.1.4 Compartilhamento no VSAM _____________________________ 3-51
3.1.5 Compartilhando o VSAM ________________________________ 3-52
3.1.5.1 SHAREOPTIONS VSAM _______________________________ 3-52
3.1.6 Considerações ________________________________________ 3-53
3.2 Endereçamento Estendido __________________________ 3-54
4 VSAM RLS __________________________________________ 4-55
4.1 Como o RLS trabalha ______________________________ 4-56
4.2 RLS em um único sistema ___________________________ 4-57
4.3 Restrições do RLS _________________________________ 4-58
4.4 Implementação do RLS _____________________________ 4-59

1-2
5 Introdução ao DFSMStvs_______________________________ 5-60
5.1 Definições _______________________________________ 5-61
5.1.1 Backward recovery ____________________________________ 5-61
5.1.2 Forward recovery _____________________________________ 5-61
5.1.3 Atomic updates _______________________________________ 5-61
5.2 Overview do DFSMStvs _____________________________ 5-62
5.2.1 Conexão com o RLS ___________________________________ 5-62
5.2.2 Lock no DFSMStvs_____________________________________ 5-62
5.2.3 Log do DFSMStvs _____________________________________ 5-62
5.2.4 Implementação _______________________________________ 5-63
5.2.5 Alterações no IDCAMS _________________________________ 5-64
5.2.5.1 ALLOCATE _________________________________________ 5-64
5.2.5.2 ALTER ____________________________________________ 5-64
5.2.5.3 DEFINE ALTERNATEINDEX ____________________________ 5-64
5.2.5.4 DEFINE CLUSTER ___________________________________ 5-65
5.2.5.5 DEFINE PATCH _____________________________________ 5-65
5.2.5.6 SHCDS ____________________________________________ 5-66

1-3
1 VSAM BÁSICO
Neste capítulo será montada a fundação para o resto do curso. Os
conceitos e terminologias associados com arquivos VSAM serão revistos.
Será explicado como um arquivo VSAM é diferente dos outros arquivos,
os vários tipos de arquivos e o que faz dele único

1-4
1.1 Overview do VSAM

Na década de 70, a IBM introduziu um conjunto de três tipos de


organização de arquivos – seqüencial, indexado e de acesso direto,
juntos com o método de acesso e utilitários a serem usados nos
sistemas operacionais mainframe.

Este conjunto de organização de arquivos é chamado de Virtual Storage


Access Method (VSAM). A palavra virtual relaciona-se ao fato de que o
VSAM foi introduzido na mesma época em que a IBM iniciou o conceito
de memória virtual com os sistemas OS/VS1 e OS/VS2.

O VSAM foi desenvolvido para substituir o Indexed Sequential Access


Method (ISAM), que é uma tecnologia muito antiga.

1-5
1.2 O que é o VSAM

VSAM é um dos diversos métodos de acesso que definem a técnica de


como o dado é armazenado e recuperado. Ele é uma interface GET/PUT
utilizada para transferir dados de um disco (DASD) para um programa
aplicativo. O VSAM não suporta dados armazenados em tape.

VSAM é utilizado para organizar e acessar ao dado e manter


informações sobre o dado que está armazenado ou referenciado em um
catálogo. Os arquivos VSAM devem estar catalogados em um catálogo
ICF.

Os registros são arrumados por uma chave de índice ou por um


endereçamento relativo de byte. O VSAM usa processamento direto ou
seqüencial ou registros de tamanhos fixos ou variáveis em disco.

1-6
1.3 Terminologia do VSAM

Antes de se discutir a organização do VSAM em detalhe, será necessário


uma revisão em alguns termos que serão utilizados ao decorrer do
curso.

1.3.1 Registro Lógico

Registros lógicos em um arquivo VSAM são armazenados


diferentemente dos registros lógicos em arquivos não VSAM. Um
registro lógico é uma unidade de informação utilizada para armazenar
dados em um arquivo VSAM. Os termos registro lógico e registro são
utilizados da mesma forma neste curso.

1.3.2 Registro Físico

Um registro físico é dependente do dispositivo e calculado pelo catálogo


no momento que o arquivo é definido. O VSAM utiliza uma Control
Interval como sua menor unidade de informação a transferir.

1.3.3 Control Interval

Registros lógicos estão contidos em uma control interval (CI). O bloco


fundamental construído em cada componente de um arquivo VSAM é a
control interval. Uma control interval é uma unidade de informação que
o VSAM transfere entre o disco e o processador. Uma CI pode ser
constituída de um ou mais blocos de DASD.

Uma CI consiste de:


Registros lógicos armazenados do início ao final;
Espaço não utilizado, referenciado como free space, para
registros a serem inseridos ou aumentados;
Informações de controle, que é constituída de até dois tipos de
campos; um control interval definition field (CIDF) por CI e um
ou mais Record definition field (RDF) por registro lógico;

CIDF tem um tamanho de 4 bytes

Ela contem informações sobre o tamanho do dado na CI e o total e


localização de free space.

RDF é um campo de 3 bytes

Ele descreve o tamanho de registros e quantos registros adjacentes


possuem o mesmo tamanho.

1-7
O tamanho da CI pode variar de um arquivo para outro, mas todas as
CI no componente de dados de um arquivo devem ter o mesmo
tamanho.

1.3.4 Control Área

Uma control área (CA) é constituída de 2 ou mais CI colocadas juntas


em uma área de tamanho fixo contíguo de disco. Um arquivo VSAM é
composto de uma ou mais CA’s. O número de CI por CA e fixo por
arquivo VSAM.

O tamanho máximo de uma CA é um cilindro e o menor tamanho é uma


trilha.

O tamanho da CA é implicitamente definido quando se especifica o


tamanho do arquivo na definição.

1.3.5 Split

Split de CI e CA ocorre como o resultado de inserções de registros. Se


um registro é inserido e não existe suficiente espaço livre na CI, a CI
sofrerá split.
Aproximadamente metade dos registros na CI são transferidos para
uma CI livre e o registro a ser inserido é localizado na CI livre.

Se não existe Ci livre e op registro é inserido, ocorre um split de CA. A


seqüência física dos registros e das CI não é mais a mesma dos
registros após a ocorrência de um split. Uma nova entrada de índice é
inserida no sequence set para a nova CI e a entrada existente de índice
é atualizada.

1-8
1.3.6 Registros Spanned

Registros Spanned são registros mais largos que o tamanho de uma CI.
Para ter regisrtos spanned, o arquivo deve ser definido com o atributo
SPANNED no momento da criação. Registros spanned são permitidos
expandir através ou ultrapassar limites de control interval. O RDF
descreve se um registro é spanned ou não.

Um registro spanned deve sempre começar no limite de uma control


interval e ocupar uma ou mais control interval na mesma control área.
Um registro spanned não pode compartilhar a CI com outros registros.
Em outras palavras, o free space no final de um último segmento não
será preenchido com um outro registro. Este free space pode apenas
ser utilizado para expandir um resgistro spanned.

Se registros spanned são utilizados para KSDS, a chave primária deve


estar na primeira control interval.

1.3.7 Relative Byte Address

O Relative Byte Address (RBA) é utilizado para determinar a posição de


um registro em um arquivo VSAM. Ele é a localização física de um
registro lógico do início do arquivo.

O primeiro registro em um arquivo VSAM possui a RBA zero; o segundo


registro tem uma RBA igual ao tamanho do primeiro registro e assim
por diante. A RBA de um registro lógico depende somente da posição do
registro na seqüência de registros. A RBA é sempre expressa em um
numero inteiro de 4 bytes.

A RBA de um registro inclui o free space e a informação de controle na


CI.Uma RBA pode alterar quando ocorre um split de CI ou quando
registros são adicionados, apagados ou alterados no tamanho. Com
arquivos comprimidos, a RBA para registros comprimidos não são
confiáveis.

1.3.8 Componentes

Um componente é um nome de uma parte individual de um arquivo


VSAM. KSDS e VRRDS tem componentes de dados e índice. ESDS, RRDS
e LDS possuem somente componente de dados.

1.3.8.1 Componente de dados

O componente de dados é uma parte de um arquivo VSAM, índice


alternado, ou catálogo que contêm registros de dados.

1-9
1.3.8.2 Componente de índice

O componente de índice é uma coleção de chaves logicamente


seqüenciadas. A chave é um valor obtido de uma parte fixa definida de
cada registro lógico. A chave determina a posição do registro no
arquivo.

Usando o índice, o VSAM e capaz de randomicamente receber um


registro do componente de dados quando uma requisição e feita para
um registro com uma certa chave. O VSAM divide as CI de índice em
seções para acelerar o processo de busca de uma chave.

Um índice VSAM pode consistir de um ou mais níveis. Cada nível contem


ponteiros para o nível inferior.

O componente de índice consiste de duas partes: sequence set e index


set.

1-10
Sequence set
O sequence set é o menor nível de índice de uma Ci de índice e
aponta diretamente para uma CI de dados na CA. Existe uma CI
no sequence set para cada CA de dados. Ela contem ponteiros e
a maior chave de cada CI. Ela também contem ponteiros
horizontais de uma CI de sequence set par a próxima Ci de
sequence set maior.

1-11
Index set
O index set é o restante do componente de índice. Se existe mais
de uma CI de sequence set, o VSAM automaticamente constrói
outro nível de índice. Cada CI no index set contem ponteiros e a
maior informação de chave da CI no próximo nível inferior de
índice. O maior nível de índice sempre contém uma única CI.

1-12
1.3.9 Cluster

Todo tipo de arquivo VSAM é definido como um cluster. Para um KSDS,


um cluster é a combinação do componente de dados e o componente
de índice. O cluster fornece uma forma de tratar o componente de
dados e de índice como um único componente com seu próprio nome.
Pode-se também acessar cada componente pelo seu nome e processar
a parte de dados separadamente da de índice.

Os formatos RRDS, ESDS e LDS são considerados clusters sem


componentes de índice. Para ser consistente, eles possuem o nome do
cluster que é normalmente utilizado quando processando o arquivo.

1.3.10 Chaves

Para diferenciar entre chaves utilizadas em um objeto VSAM, a chave


utilizada em um cluster base e chamada de chave primária ou chave
básica. A chave utilizada em um índice alternado é chamada chave
alternada.

Em uma organização VSAM organizada por chave, um registro deve ter


uma única, embutida e de tamanho fixo, chave primária localizada na
mesma posição de cada registro lógico. Chaves primárias podem ter um
mínimo de 1 byte e um máximo de 255 bytes.

1-13
Indiferente das chaves primárias, que devem ser únicas, chaves
alternadas idênticas podem ocorrer em mais de um registro lógico. Isto
permite a busca por uma chave alternada para ler todos os registros
base contendo a mesma chave alternada.

1.3.11 Sphere

Um Sphere é um cluster VSAM e seus arquivos associados. Estes


arquivos são os índices alternados (AIX) do cluster. Um AIX é um KSDS
contendo entradas de índice organizadas pela chave alternada de seus
registros base. Ela fornece uma outra forma de localizar registros em
um componente de dados e um cluster.

Um AIX pode somente ser definido para cluster KSDS ou ESDS.

1.3.12 Índices Alternados

AIX possibilita registros de um ESDS ou de um KSDS serem acessados


seqüencialmente e diretamente por mais de um campo chave. Isto
elimina a necessidade de armazenar o mesmo dado em diferentes
seqüências em múltiplos arquivos para o propósito de várias aplicações.

Qualquer campo no registro do cluster base pode ser usado como uma
chave alternada. Ele pode também fazer overlap de uma chave primária
(em um KSDS), ou com qualquer outra chave alternada. O campo de
chave alternada deve ser um campo contíguo com o mesmo
deslocamento em cada registro. Em um registro spanned, este campo
deve estar localizado totalmente na primeira control interval.

Cada índice alternado consiste de um componente de índice e um


componente de dados. Estes dois componentes juntos formam um
índice alternado para o cluster base. Ele é um KSDS construído pelo
VSAM. Um índice alternado conterá as chaves alternadas de uma certa
chave alternada. Para cada campo de chave alternada, um índice
alternado é necessário. Os registros no componente de dados contem
uma chave alternada e um ou mais ponteiros para o dado no cluster
base.

Para um ESDS, os ponteiros são valores de RBA. A chave primária ou


RBA estará em ordem ascendente com o registro do índice alternado
após a carga. Este fato não será necessariamente verdade após o
cluster base ter sofrido atualizações ou novos registros serem inseridos,
como qualquer nova chave ou RBA que será inserida no final do registro
apropriado do índice alternado.

1-14
1.3.13 Path de Índice Alternado

Antes de acessar a um KSDS ou ESDS por um índice alternado, um path


deve ser definido. Um path é a forma que um cluster base é acessado
por seus índices alternados. Um path é definido e nomeado utilizando o
comando AMS DEFINE PATH. Pelo menos um path deve ser definido
para cada um dos índices alternados pelos quais o cluster base será
acessado. O nome do path se refere a um par entre o cluster base e o
índice alternado. Quando um programa abre um path para
processamento, tanto o cluster base como o índice alternado é aberto.

1-15
1.4 Tipos de arquivos

No início do curso, foi mencionado que o VSAM suporta cinco tipos de


organização de arquivo: seqüencial, por chave, registro relativo fixo e
variável e linear. A seguir será detalhado cada um destes tipos de
arquivos.

1.4.1 Entry sequenced data set (ESDS)

Um ESDS é comparado a um arquivo não VSAM seqüencial no sentido


em que os registros são seqüenciados pela ordem em que eles são
inseridos no arquivo, independente do campo de chave no registro
lógico. Estes podem ser registros de tamanho fixo ou variável.

Todos os novos registros são localizados no final do arquivo. Registros


existentes nunca são apagados. Se a aplicação quer apagar um registro,
ela deve marcar o registro como inativo. Como o VSAM não vai apagar o
registro, a aplicação é responsável por identificar os registros inválidos.

Registros podem ser atualizados, mas sem alteração de tamanho. Para


alterar o tamanho de um registro, ele deve ser armazenado no final do
arquivo como um novo registro ou substituir um registro do mesmo
tamanho que esteja marcado como inválido.

Um registro pode ser acessado seqüencialmente ou diretamente pelo


seu RBA.

Processamento seqüencial: O VSAM automaticamente


recupera registros na seqüência que foram armazenados. O
processamento seqüencial pode ser iniciado do início ou de
qualquer lugar no meio do arquivo. Se o processamento é
iniciado no meio do arquivo, o posicionamento é necessário antes
que o processamento seqüencial possa ser executado.

Processamento direto: Quando um registro é carregado ou


adicionado, o VSAM indica seu RBA. Para recuperar registros
diretamente, deve ser suprido o RBA do registro como um
argumento de pesquisa. Como o ESDS não contém um
componente de índice, pode-se construir um índice alternado
para manter uma trilha dos RBAs. Salto seqüencial não é
permitido para um arquivo ESDS.

1-16
Espaços vazios na CI são referenciados como espaços não utilizados
porque eles nunca poderão ser usados. Isto é um resultado de
fragmentação interna da CI.

1.4.2 Keyed sequenced data set (KSDS)

Em um KSDS, os registros são armazenados no arquivo em coleção


ascendente por chave. A chave contém um valor único que determina a
posição de coleção do registro no arquivo. A chave deve estar na
mesma posição em cada registro.

Os dados da chave devem sr contíguos e cada registro de chave deve


ser único.

Após especificado, o valor da chave não pode ser alterado, mas o


registro inteiro pode ser apagado.

Quando um novo registro é adicionado ao arquivo, ele é inserido na


seqüência da chave. Isto pode ser para registros de tamanhos fixos ou
variáveis.

Existem três métodos para acessar um KSDS. Eles são seqüencial, direto
ou salto seqüencial.

1-17
Acesso seqüencial é utilizado para carregar um KSDS e para
recuperar, atualizar, adicionar e apagar registros em um arquivo
existente.

O VSAM usa o índice para acessar ao registro de dados em


ordem ascendente ou descendente por chave. Quando
recuperando registros, não é necessário especificar valores
porque o VSAM automaticamente obtém o próximo registro
lógico em seqüência. O sequence set é utilizado para encontrar a
próxima CI lógica.

Acesso seqüencial permite se fazer uma busca no índice mais que


uma vez. Acesso seqüencial é mais rápido que direto para
acessar múltiplos registros de dados em ordem ascendente de
chave.

Acesso direto é usado para recuperar, atualizar, adicionar ou


apagar registros em um arquivo existente.

É necessário fornecer o valor da chave para cada registro a ser


processado. Pode se fornecer uma chave completa ou genérica.
A chave genérica é a maior parte de uma chave inteira.

O VSAM busca pelo CI de índice de maior nível de index set para


o sequence set pelo registro a ser acessado. Ponteiros verticais
na CI de sequence set são usados para acessar CA de dados
contendo o registro.

Acesso direto reduz o overhead de não recuperar o arquivo


inteiro de forma seqüencial para processar um percentual
pequeno de registros.

Acesso de salto seqüencial é usado para recuperar, atualizar,


adicionar e apagar registros em um arquivo existente.

O VSAM recupera registros selecionados, mas em ordem


ascendente do valor da chave. Salto seqüencial possibilita:
- Evitar recuperar um arquivo inteiro seqüencialmente para
processar um percentual relativamente pequeno do total
dos registros.
- Evitar recuperar os registros diretamente, que causa o
índice a ser pesquisado do início ao fim para cada registro.
Para cada solicitação o sequence set é usado para encontrar a
próxima CI lógica e validar se ela contém o registro desejado. Se

1-18
a primeira busca de salto seqüencial é o primeiro acesso após o
arquivo ser aberto, a busca direta é iniciada para encontrar o
primeiro registro. Deste nível de sequence set é que será usado
para buscar registros subseqüentes. Se outra operação for
executada antes, então a última posição de operação será
utilizada como o ponto de partida para buscar os registros do
sequence set, então um novo posicionamento é necessário.

1.4.3 Relative Record data set (RRDS)

Um RRDS consiste de um número de slots pré formatados de tamanhos


fixos. Cada slot tem um único número de registro relativo e os slots são
seqüenciados pela ordem ascendente do número de registro.

Cada registro de tamanho fixo ocupa um slot e é armazenado e


recuperado pelo número relativo do slot. A posição do registro de dados
é fixa e seu número de registro relativo não pode ser alterado.

Porque um slot pode tanto conter dados ou estar vazio, um registro de


dados pode ser inserido ou apagado sem afetar o posicionamento dos
outros registros de dados no RRDS. O RDF mostra se um slot está
ocupado ou vazio. Free space não é utilizado, pois o arquivo inteiro é
dividido em slots de tamanhos fixos.

1-19
1.4.3.1 Processamento típico de um RRDS

O programa da aplicação informa o número relativo do registro do


registro de destino e o VSAM encontra sua localização rapidamente
utilizando uma fórmula que leva em consideração a geometria do disco.
O número relativo do registro é sempre usado como argumento de
busca.

Um RRDS pode ser processado seqüencialmente, diretamente ou por


salto seqüencial.

O processamento seqüencial de um RRDS é tratado da mesma


forma que um processamento seqüencial de um ESDS. Slots
vazios são automaticamente saltados pelo VSAM.
Um RRDS pode ser processado diretamente fornecendo o
número relativo do registro como uma chave. O VSAM calcula o
RBA e acessa o registro apropriado ou o slot. O processamento
direto de um RRDS pelo fornecimento de um RBA não é
suportado.
Processamento de salto seqüencial é tratado como um
processamento direto no RRDS, mas a posição é mantida. Os
registros devem estar em seqüência ascendente.

1.4.4 Variable relative Record data set (VRRDS)

UM VRRDS é similar a um RRDS com tamanho fico, exceto que ele


contém registros de tamanhos variáveis. Cada registro possui um único
número relativo de registro e é localizado em ordem ascendente do
número relativo. O VRRDS não possui slots.

O número relativo de registro de um registro não pode ser alterado.


Quando o registro é apagado, o número relativo de registro pode ser
reutilizado para um novo registro.

Pode-se especificar free space para inserir registros e incrementar o


tamanho do registro.

VRRDS é um KSDS processado como um RRDS, então um índice será


criado.

1.4.5 Linear data set (LDS)

Um linear data set contem dados que podem ser acessados como um
endereçamento de string de bytes em memória virtual. Ele é um arquivo
VSAM com uma control interval de tamanho de 4096 bytes. Um LDS não

1-20
tem informações de controle na sua CI, que é, nenhum RDF ou CIDF.
Todos os bytes de um LDS são bytes de dados. Registros lógicos devem
ser agrupados em blocos pelo programa aplicativo, mas registros não
existem do ponto de vista do VSAM.

Como o ESDS e RRDS, um LDS contém um componente de dados


apenas.

1-21
1.5 Arquivos Estendidos

Um arquivo de formato estendido pode ser identificado como tendo as


mesmas características de um arquivo seqüencial. Formato estendido é
uma técnica que afeta a forma de como um cont key data é
armazenado em uma trilha 3380/3390. Ele incrementa a performance
confiabilidade de uma operação de I/O è recomendado que se converta
arquivos para formato estendido para obter uma melhor performance,
confiabilidade e funcionalidade. Um bom momento é quando se executa
a reorganização de um arquivo VSAM.

Um arquivo de formato estendido para VSAM pode ser utilizado para


KSDS, ESDS, RRDS, VRRDS e LDS. Os benefícios disponíveis para
arquivos de formato estendido incluem:

Data striping;
Compressão de dados;
Endereçamento estendido no VSAM;
Liberação parcial de espaço;
System-managed buffering;

Arquivos de formato estendido devem ser gerenciados pelo SMS.

1-22
1.6 Endereçamento Estendido

Extended Adressability (EA) foi introduzido no DFSMS/MVS 1.3, para


arquivos KSDS. Desde o DFSMS/MVS 1.4, EA é suportado em record
level sharing (RLS). Com o DFSMS/MVS 1.5, o suporte para
endereçamento estendido foi estendido para todos os tipos de arquivos
VSAM.

Com EA, o limite de arquitetura do tamanho de 4GB imposto pelo uso


de um campo de 4 bytes para o RBA foi eliminado.

Usando EA, o limite ao tamanho de um arquivo VSAM é determinado


por:

O tamanho da CI multiplicado por 4GB;


O tamanho do volume multiplicado por 59;

1-23
1.7 Acesso a dados VSAM

Arquivos VSAM podem ser acessados utilizando diversos métodos, como


IDCAMS, DITTO, programas aplicativos batch e CICS, e DB2.

Programas aplicativos batch e CICS podem ser escritos usando


linguagens que suportam VSAM, como COBOL e Assembler.

1.7.1 IDCAMS

Access method services (AMS) é um programa de serviço usado pelo


VSAM para estabelecer e manter catálogos e arquivos invocado pelo JCL
ou TSO.

1-24
1.8 Definindo arquivos VSAM

Um arquivo VSAM pode ser definido usando qualquer dos seguintes


métodos:
Comandos DEFINE ou ALLOCATE do IDCAMS;
Comando ALLOCATE de um terminal TSO;
Por cartões DD de JCL;
Uso de alocação dinâmica;

1-25
1.9 Exploradores do VSAM

Nesta seção serão relacionados alguns dos componentes do MVS que


exploram o uso do arquivo VSAM.

1.9.1 DB2

O DB2 usa arquivos VSAM linear data set (LDS) para as suas tabelas,
sem implementer Data-in-Virtual. Todo o controle, inclusive buffer pool,
é realizado pelo DB2.

1.9.2 Hierarchical file system (HFS)

HFS é uma organização de arquivos do UNIX Services que não


determina registros lógicos – ele é um string de bytes – construído de
dados e diretórios embutidos. Ele pode ser acessado pelo código Posix
executando sob o OS/390 ou por aplicações do z/OS. No segundo caso,
um HFS trabalha como um VSAM ESDS e é acessado da mesma forma.

1.9.3 ZSeries File System (zFS)

ZSeries File System é um sistema de arquivos no UNIX que pode ser


utilizado em adição ao Hierarchical File System (HFS). O zFS incrementa
significativamente a performance de arquivos que são freqüentemente
acessados.

1.9.4 CICS

O CICS possibilita o uso de arquivos VSAM pelas transações. O CICS


utiliza o system logger do MVS.

1.9.5 DFSMS/hsm

O DFSMS/hsm possui três arquivos de controle e todos eles são


arquivos VSAM KSDS.

1.9.6 DFSMS/rmm

O DFSMS/rmm usa arquivo VSAM KSDS como seu arquivo de controle.

1-26
2 Performance no VSAM
A meta na performance do VSAM é reduzir os valores de I/O wait time e
I/O service time – que é, o tempo de resposta do I/O para transações
que acessam arquivos VSAM. Isto pode ser obtido reduzindo o número
do I/O ou fazendo com que o processo de I/O seja mais rápido.

Neste capítulo serão utilizadas duas técnicas para melhorar a


performance de arquivos VSAM. Primeiro serão vistos parâmetros
externos que seus valores podem afetar a performance. Depois serão
apresentadas algumas recomendações com base na experiência de
como estes parâmetros podem ser definidos. Isto é conhecido como
“regra do dedão”.

Alem disso, outros fatores não conectados aos parâmetros do VSAm


podem melhorar a performance, como:

Uso de canais FICON;


Atributos de storage class SMS;
Uso do Hiperbatch;
Ajuste de carga de CPU;

2-27
2.1 Regras de dedão para VSAM

Antes de apresenta-las é necesario salientar que alguns dos valores


estabelecidos como defaults para o VSAM são de muito tempo atrás.

A razão pela qual a IBM não altera os seus valores defaults é para
manter a compatibilidade com aplicações existentes.

2.1.1 Regras inválidas

Outro ponto que vale a pena salientar é que existem “circulando” muitas
regras que afetam diretamente a performance do VSAM, como:

O conceito físico de volume 3380/3390 não mais existe;


Em caso de cache miss, o canal sempre lê e grava no cachê,
assíncronamente em relação ao disco;
A existência da CCW de define extent e o Parallel Access Volume
(PAV);

As seguintes recomendações não são mais válidas:

Localizar a VTOC no meio do volume;


Localizar arquivos com muita atividade em volumes diferentes;
Não permitir muitas alocações secundárias em função do seek;
Uso de IMBED sequence set do índice de um VSAM KSDS;
Uso do REPLICATE em VSAM KSDS para evitar revoluções
desnecessárias;
É melhor utilizar alocações independente de geometria de
dispositivo;
Reorganizar os arquivos VSAM KSDS após splits de CA para
reduzir operações de seek;
Evitar a utilização de canal acima dos 30%;
Utilizar opção de keyrange em arquivos VSAM para controlar as
inserções;

2-28
2.2 Parâmetros que afetam a performance

Os seguintes parâmetros e opções podem afetar a performance de um


arquivo VSAM:

2.2.1 Unidade de alocação

Quando se define um novo arquivo, tanto o usuário como o SMS pode


assinalar uma data class para o arquivo. Uma das funções durante a
alocação de um arquivo é a criação de DSCB na VTOC do volume. Caso
seja escolhido especificar o espaço de forma explícita, o usuário pode
alocar seu espaço em número de registros, kilobytes, megabytes, trilhas
ou cilindros.

O DADSM somente aceita alocações em trilhas ou cilindros e, assim,


uma alocação em registros ou bytes será convertida pelo IDCAMS antes
de solicitar o espaço ao DADSM.

Acontece que o VSAM aloca espaço em unidades de Control Área (CA)


e, cada vez que um arquivo deve ser estendido e, desta forma não se
deve alocar uma pequena quantidade de espaço secundário, pois em
cada alocação secundária, é envolvido um grande número de operações
de I/O.

2.2.2 Guaranted Space

A função de alocação depende do arquivo possuir ou não o atributo de


guaranted space.

O Guaranted Space é um atributo de storage class SMS que reserva


espaço em volumes específicos para arquivos que necessitam de
localização específica para atingir seus níveis de performance.

Para arquivos sem o atributo de guaranted space é permitido ao


usuário, no momento da alocação, especificar se deve ser utilizada a
quantidade primária ou secundária quando o arquivo for estendido para
um novo volume.

Para um arquivo com o atributo de guaranted space, as condições que


seguem são atingidas:

Todos os volumes especificados pertencem ao mesmo storage


group;

2-29
O storage group onde estes volumes pertencem devem estar na
lista de storage groups selecionados pela ACS;

É recomendado que se especifique apenas alocação de espaço ao nível


do componente de dados, pois o VSAM aloca espaço da seguinte forma:

Se espaço é especificado ao nível de cluster ou alternate index, o


espaço necessário para a criação do índice é subtraído deste total
e o restante é assinalado para dados;
Se espaço é especificado apenas ao nível de componente de
dados, este espaço é total mente utilizado para armazenamento
de dados. O espaço necessário para índice é adicionado pelo
VSAM;
Se a alocação é especificada tanta ao nível de dados com de
índice, ambos serão respeitados;
Se alocação secundária é especificada ao nível de dados,
alocação secundária também deve ser especificada ao nível de
índice ou cluster;

Recomendações:

Para arquivos KSDS e VRRDS, coloque espaço apenas para o


componente de dados;
Use ao máximo as informações de espaço definidas na data
class;
Evite guaranted space;
Evite o uso de tracks como unidade de alocação. Utilize registros
que é mais próximo das necessidades da aplicação;
Não utilize alocações secundárias muito pequenas;

2.2.3 Otimização do tamanho da control área (CA)

Geralmente, as alocações primárias e secundárias é que determinam o


tamanho da control área, como segue:

Se tanto a alocação primária quanto a secundária são menores


que um cilindro, o menor valor é utilizado como tamanho de CA;
Se tanto a alocação primária quanto a secundária são iguais ou
maiores que um cilindro, o tamanho da CA será de um cilindro. A
única exceção é quando utilizando data striping, onde o tamanho
da CA é de 16 trilhas;

Para KSDS e VRRDS o tamanho da CI de índice e buffer pode afetar o


tamanho da CA.

2-30
O tamanho da CA tem um impacto sifgnificativo na performance do
VSA. A CA de um cilindro tem as seguintes vantagens:

Existe uma menor probabilidade de splits de CA;


O índice é mais consolidado. Uma CI de índice endereça toda
uma CA de dados. Se o tamanho da CA significa que será
necessário um menor número de CI de índice;
Existirá um menor número de sequence set no índice devido a
um menor número de CA de dados;
Se existirem buffers suficientes, um tamanho de Ca maior
permite ler um maior número de CA em memória;
A quantidade de operações de I/O é reduzida em acessos
seqüenciais;

As seguintes desvantagens para uma CA de um cilindro devem ser


consideradas:

Em situação de split há um maior número de dados a serem


movidos;
Em I/O seqüencial, requer um amior número de bufers para
armazenar a CA;

2.2.4 Partial Release

O partial release é utilizado para liberar espaço de dados não utilizado


no final de um arquivo em formato extendido.

Todo o espaço alocado e não utilizado é liberado ao limite de CA até a


RBA de maior valor.

As restrições do uso do partial release são:

Alternate Index (AIX) abertos para processamento não são


candidados a partial release;
Partial release não é suportado para close temporário;
Partial release não é suportado para arquivos definidos com
guaranted space;
Para arquivos com formato estendido ele é requerido;

2.2.5 Constraint relief

Os usuários ocasionalmente sofrem falhas por falta de espaço (abend


X37). O SMS é capaz de aliviar esta situação pela seleção de volumes,
checando todos os volumes candidatos antes de uma falha na alocação.

2-31
Pode-se utilizar na data class o parâmetro space constraint relief para
reduzir o espaço até um limite percentual antes que ocorra a falha na
alocação.

Recomendações

Não defina uma quantidade pequena para alocação secundária


para um arquivo KSDS ou VRRDS;
Aloque espaço ao nível de dados ou cluster;
Não utilize trilhas como unidade de alocação, inclusive por forçar
o atributo CONTIG para as alocações secundárias;
Evite alocações tanto primária como secundária menor que um
cilindro;
Considere partial release se aplicável;
Considere constraint relief se aplicável;

2.2.6 Tamanho da Control Interval

Existem dois tipos de control interval (CI) em um arquivo KSDS e


VRRDS: a de índice e a de dados. Os outros tipos de arquivo VSAM
possuem apenas control interval de dados.

Se o tamanho da CI é definido ao nível de cluster, o mesmo valor é


utilizado tanto para a CI de dados como a de índice. A seguir serão
apresentadas algumas recomendações quanto à definição do tamanho
da CI.

Control Interval de dados

Existem argumentos que favorecem tanto grandes tamanhos de Ci


como pequenos:

Para processamento seqüencial, é desejável tamanho de CI


grande. É mais rápido ler 2 Cis de 8 KB que 4 de 4 KB para
completar um buffer de 16 KB;
Uma CI maior tem um gerenciamento mais centralizado do free
space e, conseqüentemente, causa menos splits.
Para processamento direto, CI de tamanho pequeno é desejável
pois a aplicação somente precisa receber um registro lógico por
vez, evitando menos transferência de dados;
Para arquivos compartilhados, o tamanho da CI afeta a
quantidade de dados presos pelo VSAM; quanto menos melhor;

2-32
Em conclusão, para arquivos acessados tanto randomicamente quanto
seqüencialmente, deve-se utilizar uma CI pequena com múltiplos
buffers para aumentar a performance no acesso seqüencial.

Control Interval de índice

Normalmente não se especifica tamanho para a CI de índice para


arquivos KSDS e VRRDS. Deixe o VSAM calcula-las.

O tamanho da CI de índice afeta:

O número de níveis de index set. Contudo, o número de index


set irá afetar a performance somente para clusters muito grandes
que possuam mais de 4 níveis;
A capacidade útil da CA. Algumas vezes uma CI de índice
pequena pode causar perda na capacidade útil da CA associada.
Para o cálculo do tamanho da CI de índice, o VSAM assume uma
chave comprimida de 5 bytes. Algumas vezes, a chave não
obtém um nível de compressão que satisfaça este valor;

Recomendações

Para acesso seqüencial, defina uma CI de índice com 16 KB ou


maior;
Para acesso randômico, defina uma CI de índice com 4 KB;
Para acesso misto, defina uma CI com tamanho de 4 KB e
aumente o tamanho do buffer;
Deixe o VSAM definir o tamanho da CI de índice. Somente defina
quando estiver perdendo capacidade na CA devido a um tamanho
pequeno de CI de índice;

2.2.7 Definição de FREE SPACE para KSDS e ESDS

A opção de free space especifica o percentual década CI de dados e


cada CA de dados que será deixado para free space quando o cluster
KSDS ou VRRDS é inicialmente carregado ou quando uma inserção em
massa é realizada. O free space pode ser dinamicamente alterado pelo
IDCAMS.

Se o free space é alterado após a carga inicial de dados, e inserção


seqüencial ocorre, a alocação de free space não é honrada.

Quando especificar free space de CI, garanta que o free space não
resultará em muito unused free space. Isso pode ser feito calculando

2-33
com o tamanho do registro, tamanho da CI e tamanhos do CIDF e RDF,
da seguinte forma:

Assumindo um arquivo com registro de tamanho fixo, onde cada


CI terá 4096 bytes, 10 bytes são reservados para informações de
controle (2 RDF e 1 CIDF). Cada registro lógico tem 1000 bytes e
se quer reservar 10% para inclusão.
Se especificar 10% de free space de CI o VSAM reserva 410
bytes (4096 * 0.10) para free space. O espaço para registro
lógico é de 3676 (4096 – 420) bytes.
Como os registros carregados no arquivo possuem 1000 bytes
em tamanho, existe apenas espaço para 3 registros, deixando
1086 (410 + 676) para inserções. Neste free space pode ser
colocado apenas 1 registro. Irá então se perder 86 bytes.

Para cálculo do free space de CA o VSAM garante que pelo menos uma
CI por CA ficará vazia durante a carga inicial quando o valor definido é
maior que zero.

Muito free space de CA pode resultar em:

Incremento no número de index levels devido a menos dados por


CI/CA, que afeta tempo de execução para processamento direto
de forma significativa;
Mais espaço em disco é necessário para conter o arquivo;
Mais operações de I/O s[ao necessárias para acesso seqüencial
para o mesmo número de registros;
Os splits de CA serão grandes consumidores de recurso pelo
overhead de movimentação;
Splits de CI e CA podem afetar o processamento seqüencial pois
a controladora de disco, para melhor utilizar o cachê, somente
detecta trilhas físicas de 3380/3390.

Defina o total de free space de CI com base no percentual de inserções


esperadas para o arquivo e sua distribuição.

Recomendações

Determine o percentual de free space com base no percentual de


registros adicionados que é esperado e sua distribuição.

2-34
2.2.8 Opções de índice

Existem duas opções de índice associadas com o cluster que são


armazenadas no catálogo (IMBED e REPLICATE). Elas exploram as
características do 3380/3390.

Com o DFSMS 1.5 estes parâmetros não são mais válidos.

Recomendações

Não use REPLICATE;


Não use IMBED;

2.2.9 Key Range e Ordered

O parâmetro Key range, por exemplo, permite ao usuário selecionar um


volume para um conjunto de chaves em uma sequênca. A maior razão
no uso deste parâmetro é incrementar o paralelismo, pois se pode usar
múltiplos volumes.

O ordered implica que a ordem dos volumes declarados deve ser


seguida para alocações secundárias.

Estas opções não são mais recomendadas e em z/OS 1.3 acima elas não
são mais suportadas.

2.2.10 Share options

Existem diversos mecanismos para se implementar integridade de dados


em VSAM. Eles são:

Intra address space pode realizar locks para arquivos VSAM entre
suas tasks.
VSAM SHAREOPTIONS é uma importante regra na integridade do
VSAM, especificando como um arquivo VSAM será compartilhado
entre tasks em um ou múltiplos address spaces no z/OS. Esta
funcionalidade usa ENQ no SYSVSAM para garantir o alcance da
serialização.
Funções ENQ/RESERVE emitidas pelas aplicções;
Disposição OLD ou SHR no JCL que também implica em uma
ENQ;
Mecanismo de lock por Record level sharing (RLS)

2-35
Quando um VSAM é definido, pode-se especificar como os dados serão
compartilhados em um único sistema ou em múltiplos sistemas que
podem acessar ao dado.

Recomendações

Se você tiver certeza que nenhuma aplicação atualiza ou apaga o


arquivo VSAM, não utilize SHAREOPTIONS 4. Ele causa um
refresh no buffer pool para leituras ou gravações diretas;
Prefira utilizar o ENQ SHR ao invés do ENQ OLD;
Entre sistemas, evite o uso do RESERVE;

2.2.11 Opção de carga inicial

Uma carga inicial ocorre quando se realiza operação de escrita


seqüencial em um VSAM que tem sua High Used RBA igual a zero.

Existem dois tipos:

Após um DEFINE indicando que esta é a primeira vez que se


grava no arquivo ou quando o arquivo é definido com opção de
REUSE e foi aberto como output.

Um arquivo VSAM precisa ser carregado pela primeira vez pois uma
aplicação não pode abrir como input um arquivo que esteja vazio.

Opções RECOVERY e SPEED

Existem duas opções que podem afetar a performance de um processo


de carga inicial de um arquivo VSAM, respectivamente RECOVERY e
SPEED. Estas opções modificam a técnica que o VSAM utiliza para
gravar os dados no arquivo:

RECOVERY. Esta opção inicialmente formata a trilha do disco,


criando registros físicos com zeros binários. Estes registros
servem como um indicador de fim de arquivo;
A opção de RECOVERY permite o restart da operação de carga a
partir do último registro gravado;
SPEED. As CI/CA de dados não são pré formatadas e um
indicador de fim de arquivo é gravado apenas após o último
registro do arquivo ser carregado;

Recomendações

Não use RECOVERY;

2-36
Use SMB;
Use formato estendido;

2.2.12 Tamanho do REGION

A chave para reduzir o número de operações de I/O é manter uma


maior quantidade de dados na memória virtual. As recomendações aqui
apontam neste sentido. Assim, para implementa-las deve-se rever o
parâmetro REGION utilizado para se evitar abend S878.

Para ter uma melhor compreensão de como especificar o REGION


verifique a tabela abaixo:

2.2.13 Opções de Buffer

Buffer em memória virtual é uma técnica importante no VSAM para


melhorar a performance. Estas técnicas são implementadas pelo uso de
opções de buffer.

Um VSAM resource pool é um conjunto de blocos de controle do VSAM


mais o buffer pool. Estes blocos de controle não são suficientes para
possibilitar que o dado seja processado. No momento do open mais
blocos de controle são criados, que juntos com o buffer pool formam
uma estrutura de blocos de controle. Segue uma série de aspectos
chave para gerenciar buffer pool:

O algoritmo para manter CI no buffer. Para acesso randômico é


utilizado o LRU. Para acesso seqüencial, ele usa o algoritmo
seqüencial que libera qualquer CI já processada;
O que fazer com CI atualizadas no buffer? Para acesso
randômico, existe uma opção chamada DEFER WRITE, onde a
instalação decide o que fazer. Para acesso seqüencial, o VSAM
faz o defer até que metade dos buffers estejam prontos para
gravação;
O total de buffer pode degradar a performance. Para acesso
randômico é recomendado ter todas as CI de índice e uma

2-37
grande parte das Ci de dados no buffer pool. Para acesso
seqüencial basta uma CI de índice no buffer (sequence set) e
quantas CI de dados forem possíveis;
Quando o mesmo cluster é compartilhado entre duas aplicações,
em sistemas diferentes, a coerência do buffer pool deve ser
garantida. Que é, se uma CI é alterada no buffer pool local, o o
utro buffer deve refletir a mudança;

Quando o conteúdo do buffer é gravado para disco, o espaço do buffer


não é liberado. A CI permanece no buffer até que seja sobreposta com
uma nova CI;

Para um uso mais eficiente de memória virtual, um buffer pool pode ser
compartilhado por diversos arquivos utilizando buffer pool shared ou
global. Existem quatro tipos de gerenciamento de buffer pool,
chamados modos, dependendo da técnica utilizada para seu
gerenciamento:

Non-Shared Resource (NSR);


Local Shared Resource (LSR);
Global Shared Resource (GSR);
Record Level Shared (RLS);

O sistema obtem informação de como criar o buffer pool para um


arquivo VSAM dos seguintes modos:

Cartões DD que fazem override a data class do SMS;


Data class do SMS;
ACB do programa;
Do catálogo;
Para buffer LSR, os parâmetros BUFND, BUFNI, BUFFERSPACE e
STRNO não se aplicam;

Efeito do BUFND, BUFNI, BUFSP e BUFFERSPACE

O valor especificado para BUFFERSPACE no catálogo é o valor mínimo


de buffer space, enquando o BUFSP no JCL ou na ACB do programa é
valor máximo. Buffer space adicional pode ser assinalado para qualquer
arquivo por:

Modificação do valor BUFFERSPACE;


Especificando um valor grande para BUFSP no parâmetro AMP do
JCL;

2-38
Se não for utilizado o parâmetro BUFSP, o valor máximo utilizado de
memória virtual para buffer é:

O valor especificado no catálogo (BUFFERSPACE);


O total determinado nos parâmetros BUFND e BUFNI;
O requerimento mínimo de memória exigido para o
processamento do tipo de acesso especificado;

2.2.14 Técnicas de Buffer

2.2.14.1 Non-Shared Resource (NSR)

Esta é a técnica default de buffer utilizada pelo VSAM. Ela tem as


seguintes características:

Os buffers não são compartilhados entre arquivos;


Os buffers são alocados na área privada;
Eles são processados em algoritmo seqüencial;
Ele é usado por linguagem de alto nível;
O resource pool é construído automaticamente no momento do
open de acordo com os valores de BUFND, BUFNI, BUFSP e
BUFFERSPACE;
Cada string tem seu próprio buffer para o componente de index
set. Cada buffer de índice adicionalmente fornecido é utilizado
para cachê de registros de index set;
Cada string tem seu próprio buffer para componentes de dados.
Se houverem buffers adicionais eles são para:
- Leitura e gravação seqüencial;
- Splits de CA;
- Registros spanned;
Existem também buffers para registros inseridos que são
utilizados apenas quando ocorre split de CI;
Ele expande dinamicamente o número de strings quando são
necessários por solicitações concorrentes pela ACB;

2-39
Recomendações

Para NSR é recomendado que:

Para processamento seqüencial, use o SMB para obter um ótimo


buffer ou:
- BUFNI = número de níveis de índice
- BUFND = número de CI/CA mais um
- Adicione mais buffers de dados quando o STRNO for maior
que um;
Para acesso direto, use SMB ou BLSR para converter o algoritmo
para LRU ou em casos críticos mantenha o NSR com:
- BUFNI = STRNO mais o número de níveis de índice
- BUFND = valor default (STRNO mais um)
Para acesso misto a melhor prática sugere o uso do SMB ou
BLSR, mas caso seja necessário manter o NSR, pode ser feito o
seguinte:
- Incremente o número de buffers do componente de índice
para o número de níveis de índice para favorecer o acesso
direto;
- Aumente o número de buffers do componente de dados
para favorecer o acesso sequential;

2-40
2.2.14.2 Local Shared Resource (LSR)

Este é um outro modo de gerenciar buffer VSAM. Neste modo, os


buffers em um LSR pool:

São compartilhados entre diversos arquivos VSAM acessados por


tasks no mesmo address space. Esta é uma forma centralizada
de gerenciamento de buffer. Ao invés de ter buffer pools
individuais ele constrói um único e grande buffer pool
compartilhado, aumentando a utilização do recurso;
São explicitamente construídos pela macro BLDVRP antes do
open para o primeiro arquivo;
São explicitamente apagados pela macro DLTVRP;
São localizados na área privada e Hiperspace;
As CI sofrem substituição pelo algoritmo LRU que é designado
para acesso randômico;
Não possui buffer para acesso seqüencial;
Usualmente é implementado apenas pelo CICS;

2-41
2.2.15 Compressão de dados

Compressão significa armazenar os dados em um formato que requer


menos espaço que o dado original. Existem diversos métodos de
compressão, como:

Métodos baseados em caracteres: Huffman, Run-length


encoding, Ziy-Lempel;
Métodos baseados em bit-level: Compressão de imagens, IDRC

Alguns destes métodos usam o conceito de dicionário, que é um


mapeamento de um vocabulário para outro. Existem dois tipos:

Dicionário de compressão;
Dicionário de expansão;

O mesmo método pode usar muitos dicionários.

O OS/390 usa o método Ziy-Lempel (ZL) nas compressões de hardware


e software.

Os esquemas baseados em ZL trabalham colocando frases no dicionário


e então, quando ocorre uma repetição é colocado na saída o índice do
dicionário e não a frase. Muitos algoritmos são baseados neste princípio.
Eles difrerem na maneira que gerenciam o dicionário e todos eles
tendem a executar melhor a decodificação que a codificação. A
compressão do S/390 usa a versão ZL1 do ZL e a família RVA usa o ZL2.

2.2.15.1 Verificando candidados VSAM

Para verificar um arquivo VSAM como candidato devem ser observados


os seguintes requerimentos:

Somente KSDS. Apenas os dados são comprimidos, os índices


não são comprimidos e AIX não é suportado;
O SMS deve estar ativo e o arquivo deve ser gerenciado pelo
SMS e possuir formato estendido;
A datas class assinalada deve possui o atributo DSNTYPE=EXT
com um requerido COMPACTION=Y;
Possuir uma alocação primária de pelo menos 5 MB devido ao
total de amostras necessário para desenvolver o dicionário. Se
não existe alocação secundária, então a alocação primária deve
ter pelo menos 8 MB;
Ter um registro de tamanho mínimo de 40 bytes, não incluindo a
chave;

2-42
Processamento de CI não é permitido;
Catálogo, arquivos do sistema e arquivos temporário não são
suportados;

2.2.16 VSAM Data Striping

Usualmente, em um arquivo VSAM multi-extent e multi-volume


processado seqüencialmente, não efetua qualquer tipo de paralelismo
no I/O dos volumes. Significa que, quando um I/O é executado para um
extent em um volume, nenhuma outra atividade de I/O da mesma task
para o mesmo arquivo é executada para outros volumes. Em uma
situação onde I/O é o maior gargalo e existem recursos disponíveis de
canal e controladores, esta situação é um desperdício de recursos.

Data striping resolve este tipo de problema implementando duas


modificações na organização tradicional do arquivo:

Os registros não são arrumados por key ranges nos volumes; ao


invés disso são organizados em stripes;
Operações paralelas de I/O são agendadas para stripes
seqüenciais em volumes diferentes;

2-43
Por dados em stripe, entende-se que as trilhas, no caso do SAM e as CI
no caso do VSAM, são espalhadas através dos volumes. Este formato
permite que um único pedido para registros em múltiplas trilhas e CI
serão satisfeitos por solicitações concorrentes de I/O para múltiplos
volumes.

O resultado é um incremento na performance, evitando a transferência


de dados na aplicação a uma taxa maior que somente um único I/O.

2.2.16.1 Tópicos do VSAM data striping

O suporte inicial para data striping em arquivos VSAM foi introduzido


pelo DFSMS 2.10 e o suporte é oferecido para todas as organizações de
arquivos VSAM.

A idéia é espalhar CI seqüenciadas em diferentes CA de dados


localizadas em diferentes volumes. A seguir estão as características de
um VSAM data stripe:

Stripe é feito por CI, opondo a trilha no SAM;


Um stripe é associado com um único volume ou um conjunto de
volumes;
Apenas o componente de dados do cluster base pode ser striped;
Um arquivo pode ter no máximo 16 stripes;
Um stripe em um único volume pode ter um máximo de 123
extents;
Um stripe alocado para vários volumes pode ter no máximo 255
extents;
As seguintes funcionalidades são aceitas em um arquivo VSAM
striped;
- Endereçamento estendido > 4 GB;
- Formato comprimido;
- Partial release;
- O arquivo deve ser SMS managed;
- Um arquivo é alocado em formato estendido;
- O arquivo pode ter ou não Guaranted Space;
- Para guaranted space o número de stripes é igual ao
número de volumes na data class até o máximo de 16;

2-44
2-45
2.2.16.2 Multi layer e data striping

O VSAM suporta multi layer. Um layer em um ambiente striped é


definido como um relacionamento de volumes que fazem o total de
stripes. Isto é, os volumes participam como um único pacote de I/O.

Uma vez o stripe tenha estendido para um outro volume, e o pacote de


I/O mude, será então criado um outro layer.

2.2.16.3 Implementando um VSAM data striping

Para criar um arquivo VSAM data striping, deve ser feito o seguinte:

Definir o arquivo VSAM como SMS managed em formato


estendido;
Especificar o parâmetro Sustained Data Rate (SDR) na storage
class para informar ao SMS o uso do striping;
Para guaranted space especificar VOLUME COUNT;
Sem guaranted space especificar o parâmetro SDR que o SMS irá
calcular o número de stripes;

2-46
3 Gerenciando arquivos VSAM
Neste capítulo serão vistos tópicos práticos de trabalho diário com
arquivos VSAM.

3-47
3.1 Considerações para Reorganização

As novas tecnologias de storage para discos são caracterizadas por:

Numerosos discos FBA, SCSI/SSA, de alta capacidade e tamanho


pequeno;
Redundância em diferentes tipos de RAID;
Tamanho de cache generoso, reduzindo a penalidade de
gravação causada pelo RAID;
Suporte de microcódigo para suportar RAID, algoritmos de cache,
mapeamento entre os discos e volumes lógicos e, no caso do
RVA, a virtualização do 3390/3380;

Por causa disso, todas as considerações antigas para evitar longos seek
e RPS miss em um volume lógico 3380/3390 estão defasadas.
Independente disso, serão vistas razões “novas e velhas” que justificam
uma reorganização de VSAM.

3.1.1 Splits de CI/CA

Considerar CI/CA split, causando longos seek no arquivo não é mais


aplicável neste novo cenário de discos. Não se deve reorganizar
arquivos VSAM KSDS ou VRRDS para evitar longos seek.

Usualmente, a pior parte do split é quando ele ocorre. Após isso, o


arquivo tem mais espaço para inserções e normalmente a quantidade
de splits tende a diminuir.

Tente evitar splits, se não for possível, NÃO reorganize SOMENTE por
ocorrência de splits. Monitore o tempo de resposta e o crescimento no
número de splits de CA.

3.1.2 Perda de espaço útil na CA de dados

As razões que causam este tipo de desperdiço são:

Não existe solicitação de CA em um VSAM KSDS/VRRDS para CA


que foram liberadas antes do HURBA.

No exemplo abaixo, cada CI de index set tem somente um registro.


Cada registro tem um ponteiro para a maior chave possível em um
registro de índice no nível inferior e um ponteiro para o início daquele
registro de índice.

3-48
O sequence set é o menor nível de índice, onde os ponteiros são para
as CI de dados. No sequence set, cada CI de índice contem um registro.
Cada registro governa uma CA e tem ponteiros para cada CI de dados
usada, sua maior chave possível e ponteiros para CI de dados livre na
CA de dados.

Então, por exemplo, if na hora da carga inicial uma CA de dados


específica foi carregada com registros pertencentes a um key range e
depois a maioria deles são apagados e não reutilizados, a CA fica sub
utilizada e seu free space não é reclamado. Os ponteiros do free space
estão nos registros do sequence set mas podem ser usados apenas por
chaves naquele range.

Da figura que segue, mostrando o HARBA, HURBA e free space pode-se


ver:

A subtração, HARBA – HURBA = X, resulta no total de free space


livre na CI alocada na CA até o HURBA;
Se for subtraído FREESPC – X = Y, resulta no total de bytes livres
em CI livre alocada na CA até o HURBA;
Y inclui o free space de CA;
Se (Y / HURBA) * 100 é consistentemente mayor que o free
space de CA e o número de registros apagados é muito grande,
significa que é momento de reorganização devido a CA não
reutilizada.

3-49
Segue um exemplo numérico:

HI-A-RBA = 184320000
HI-U-RBA = 176209920
FREE SPACE % CA = 10
FREESPA = 89616384

Outra razão para reorganizar é quando o tamanho da CI de índice é


muito pequeno e não é suficiente para conter informações sobre todas
as CI nas CA de dados. Neste caso a CA é truncada e o resto não é
utilizado. Neste caso deve ser aumentado o tamanho da CI de índice.

3-50
3.1.3 Splits de CI/CA com aumento de espaço

Após splits de CI ou CA o free space por CI tende a incrementar. Em um


processamento de leitura seqüencial causa algum impacto na
performance porque mais bytes livres são movidos para memória.

A forma de identificar este tipo de situação é obtendo informação do


número de splits de CI e CA junto com a de free space.

3.1.4 Compartilhamento no VSAM

Aqui será visto com maior detalhamento o compartilhamento de


arquivos VSAM de um address space através de um Parallel Sysplex e o
que ele implica, como o nível de integridade de dados, enqueue do
MVS, mecanismos do VSAM para proteger o dado e o SHAREOPTIONS.

Para proteger a integridade dos arquivos o VSAM utiliza um lock interno


e emite enqueue no mjor node SYSVSAM, que invoca a rotina de
enqueue do MVS para garantir a serialização do recurso localmente.
Para serializar o cluster entre sistemas, e necessário ter GRS (Global
Resource Serialization) ou outro produto equivalente com o cuidado de
não colocar o recurso SYSVSAM na lista de exclusão.

Algumas conseqüências de se colocar o recursos SYSVSAM na lista de


exclusão inclui: perda de registros, sobreposição de registros, registros

3-51
duplicados, estruturas inválidas de índice, registros inválidos de
catálogo, inválidos dumps, backups, restores, entre outros.

O major name SYSVSAM é usado para serializar uma grande quantidade


de recursos VSAM, como:

Tratar o SHAREOPTIONS;
Serializa OPEN, CLOSE e EOV;
Serializa adição dinâmica de string;
Serializa atualizações no catálogo;

3.1.5 Compartilhando o VSAM

Agora será visto o compartilhamento do VSAM através do Parallel


Sysplex.

3.1.5.1 SHAREOPTIONS VSAM

SHAREOPTIONS VSAM trata uma importante regra na integridade do


VSAM. Ele especifica como e qual extent de um arquivo será
compartilhado entre um ou múltiplos programas em um Parallel Sysplex.
Quando se define um arquivo VSAM, pode-se especificar como o arquivo
será compartilhado pelo uso do parâmetro SHSREOPTIONS do comando
DEFINE.

As opções de compartilhamento são especificadas como


SHAREOPTIONS(x,y), onde x e y especificam cross-region e cross-
system. De qualquer forma, opções de compartilhamento são a nívewl
de sysplex.

O compartilhamento é controlado pelas estruturas de bloco de controle


do VSAM. O VSAM usa os valores do SHAREOPTIONS para determinar
sempre que cria uma estrutura de blocos de controle se está violando as
regras de SHAREOPTIONS. Se estiver, o OPEN falha.

O VSAM usa enqueue para implementar o nível de compartilhamento


solicitado no SHAREOPTIONS, quando criando uma nova estrutura de
bloco de controle no momento do OPEN.

Opções de cross-region

(1) Este SHAREOPTIONS significa que pode haver apenas uma


estrutura de blocos de controle para VSAM OUTPUT através do
Sysplex ou qualquer estrutura de blocos de controle para VSAM
INPUT.

3-52
(2) Este SHAREOPTIONS significa que pode haver apenas uma
estrutura de blocos de controle para VSAM OUTPUT através do
Sysplex e muitas estruturas de blocos de controle para VSAM
INPUT.
(3) O VSAM permite muitos OPEN para INPUT e OUTPUT. O usuário é
quem deve garantir a integridade das operações de leitura e
gravação.
(4) O VSAM permite muitos OPEN para INPUT e OUTPUT. O usuário é
quem deve garantir a integridade das operações de leitura e
gravação. O VSAM faz o refresh dos buffers pool de dados e índice
para acesso direto para garantir a coerência dos dados no buffer
pool.

Opções de cross-system

Opções de cross-system oferece a mesma capacidade das opções 3 e 4


em cross-region.

(3) O VSAM não faz refresh do buffer pool para acesso direto. Quando
SHAREOPTIONS(3,3) ou SHAREOPTIONS(4,3) o VSAM fornece um
Control Block Update Facility (CBUF).

3.1.6 Considerações

Programas que ignoram a integridade de gravação nas opções de


shareoptions 3 e 4 podem causar falas no VSAM, perda de registros ou
incorrigíveis falas no arquivo.

Programas que ignoram a integridade de leitura em shareoptions 2, 3 e


4 resultam em registros desatualizados e condições erradas de registros
não encontrados.

Como dito anteriormente, a opção de shareoption 4 tanto para cross-


region como cross-system, fazem refresh de buffer em acesso direto,
significando que:

Cada operação de gravação resulta na gravação imediata do


buffer VSAM para o seu objeto em disco;
Cada operação de leitura resulta no refresh de todos os buffers
serem atualizados. O conteúdo de cada buffer é recebido do
arquivo em disco;

3-53
3.2 Endereçamento Estendido

Endereçamento estendido foi introduzido no DFSMS/MVS 1.3 para


arquivos KSDS. Desde o DFSMS/MVS 1.4, o EA é suportado para record
level sharing (RLS). Com o DFSMS/MVS 1.5 o suporte a endereçamento
estendido foi permitido a todos os tipos de arquivos VSAM.

Com EA, o limite de arquitetura de 4 GB para o tamanho máximo de


arquivo utilizando um campo de 4 bytes para a RBA foi eliminado.

Usando EA, o limite de tamanho para um arquivo VSAM é determinado


por:

O tamanho da CISIZE multiplicado por 4 GB;


O tamanho do volume multiplicado por 59;

Uma CI com o tamanho de 4 KB atinge o tamanho máximo de 16 TB,


enquanto uma CI de 32 KB atinge o tamanho máximo de 128 TB.

Para utilizar o EA, o arquivo deve ser:

SMS Managed;
Definido como formato estendido;

3-54
4 VSAM RLS
VSAM RLS é um outro modo de gerenciamento de buffer pool que
permite qualquer número de usuários em um Sysplex compartilharem
arquivos VSAM. Ele oferece total integridade de dados. A serialização
ocorre a nível de registro. Contudo, para implementar situações de
recuperação o usuário deve ter seu próprio controle, como o CICS tem.

VSAM RLS não introduz novos tipos de arquivos VSAM: ao invés disto,
ele introduz uma nova forma de acessar arquivos existentes.

Para indicar o uso do RLS pode-se utilizar a própria macro ACB com o
parâmetro MACRF=RLS ou a palavra chave RLS no sub-parâmetro AMP
do cartão DD no JCL.

4-55
4.1 Como o RLS trabalha

A lógica do RLS é implementação no address space SMSVSAM que


recebe controle das solicitações do RLS por cross memory. A principal
diferença entre RLS e não RLS é que a estrutura de blocos de controle
do VSAM são colocadas em uma CF (Coupling Facility) e compartilhada
por todos os programas no Sysplex.

A Coupling Facility contem:


Estrutura de lock IGWLOCK00 que contem locks globais para
serialização ao nível do registro e funções como split;
Estruturas de cache para armazenar estruturas de blocos de
controle;

4-56
4.2 RLS em um único sistema

Um VSAM pode ser acessado em modo RLS por usuários executando em


um único z/OS. Contudo, mesmo em um ambiente monoplex, uma
Couplinf Facility é requerida.

4-57
4.3 Restrições do RLS

Existem restrições que devem ser consideradas antes da implementação


do RLS.

Compartilhar VSAM sob o RLS exige que o sphere VSAM seja SMS
managed;
O IDCAMS não possui acesso aos blocos de controle no address
space do SMSVSAM. Não é possível obter informações
pertencentes ao RLS pelo IDCAMS;
Arquivos LINEAR, temporários e com key ranges não são
suportados pelo RLS;
Devido ao compartilhamento das estruturas de bloco de
controlem o RLS não utiliza shareoptions;
O RLS não suporta data striping;

4-58
4.4 Implementação do RLS

Para a implementação do RLS devem ser executadas as seguintes


tarefas:

Definição do Sharing Control Data Set (SHCDS);


Definição das estruturas de cache na CF;
Definição das estruturas de lock na CF;
Definições das estruturas SMS;
Alteração no membro IGDSMSxx da SYS1.PARMLIB;
Definições de segurança;

4-59
5 Introdução ao DFSMStvs
O DFSMStvs é uma extensão do uso do RLS para o VSAM. A sua função
chave é que o VSAM oferece funcionalidades de lock, commit, backuot e
log que possibilitam múltiplos usuários batch executarem
concorrentemente com acesso do CICS aos mesmos arquivos mantendo
a integridade e habilidade de recuperação.

O DFSMStvs foi criado com a função de possibilitar o compartilhamento


de arquivos VSAM sob o domínio do CICS com aplicações batch,
aumentando a janela de disponibilidade do ambiente.

Existem outras formas de compartilhar o uso dos arquivos VSAM entra


as aplicações batch e CICS, sendo elas:

Uso do CICS External Interface;


Uso do compartilhamento com read only para o CICS;
Uso do SHAREOPTIONS 3 ou 4;

Acontece que estes métodos oferecem algumas complicações ou


reduzem a integridade e condição de recuperação. É claro que se faz
necessário o uso de uma solução genérica para o problema de
compartilhamento das atualizações entre CICS e aplicações batch.

5-60
5.1 Definições

Nesta seção serão vistos alguns termos e um resumo de suas


definições.

5.1.1 Backward recovery

Se uma transação falha, ela pode deixar dados inconsistentes. Algumas


atualizações podem ser solicitadas mas o programa pode terminar antes
de sua finalização.

O processo de remoção de alterações inconsistentes é chamado de


backward recovery, rollback ou backout. Ele requer o uso de logs que
guardam imagens dos registros antes de serem atualizados. Este log é
chamado de undo log na terminologia do CICS.

5.1.2 Forward recovery

Se um arquivo é perdido, uma forma comum de ter os dados


novamente é a recuperação de uma cópia backup e então aplicar todas
as alterações que foram realizadas após a execução do backup.

Este processo é chamado de forward recovery. Ele exige o uso de um


arquivo de log das alterações efetuadas ao arquivo junto com data e
hora. Este log é chamado de redo ou forward recovery log.

5.1.3 Atomic updates

Por atomic updates, entende-se um indivisível grupo de atualizações


onde todas são feitas ou nenhuma é feita; ela não é possível para
algumas atualizações mas para outras sim. Esta propriedade é uma
exigência absoluta de integridade.

5-61
5.2 Overview do DFSMStvs

Para complemento do curso será visto um resumo do DFSMStvs e seu


relacionamento com o RLS.

5.2.1 Conexão com o RLS

Como visto no capítulo anterior, o RLS oferece um novo modo de


acesso a arquivos VSAM. Para isso o RLS utiliza da Coupling Facility para
fornecer as estruturas de lock e capacidades de cache para habilitar o
gerenciamento e garantir a integridade dos dados quando o VSAM é
compartilhado. DFSMStvs estende o compartilhamento dos dados para
CICS e aplicações batch similarmente mantendo a integridade dos
dados para leitura e gravação. Para contemplar isto, o DFSMStvs deve
oferecer algumas habilidades que o CICS oferece, como log para
backward e forward recovery, backout e processo de two-phase
commit.

5.2.2 Lock no DFSMStvs

Quando uma aplicação VSAM emite uma instrução de GET ou PUT, o


VSAM RLS adquire os locks para a aplicação. Uma coupling facility é
utilizada para armazenar os locks para que eles possam ser
compartilhados por todos os address spaces SMSVSAM no sysplex.

Em geral o VSAM RLS irá obter locks compartilhados para acessos de


leitura e locks exclusivos para acessos de atualização ou delete. Ele irá
esperar um certo período de tempo se outra task guarda o lock
requerido. Um lock compartilhado pode ser obtido de um recurso se não
existe lock para o mesmo recurso ou se o lock existente é do tipo
compartilhado. Um lock exclusivo pode somente ser obtido se nenhum
outro lock existir.

5.2.3 Log do DFSMStvs

O z/OS system logger é usado para oferecer as funções de log


necessárias para garantir a consistência dos dados após uma falha. O
nome do redo log é mantido como um atributo de um arquivo
recuperado enquanto o nome do undo log é fixo. P forward recovery é
feito tanto para o CICS como o DFSMStvs do mesmo redo log. O CICS
registra as alterações feitas pelas transações CICS enquanto o DFSMStvt
registra as alterações feitas por seus chamantes.

5-62
O system logger é usado porque ele pode fazer merge de entradas de
muitos sistemas z/OS para um único log stream, onde um log stream é
simplesmente um conjunto de entradas de log. Um único log stream
para o sysplex facilita o gerenciamento e garante a integridade dos
dados.

Esta capacidade de fazer merge de entradas de log é usada para


forward recovery para facilitar a recuperação. O system logger registra
entradas de log na coupling facility.

5.2.4 Implementação

Para implementar o DFSMStvs já se deve ter implementado o VSAM


RLS.

Uma vez o RLS esteja implementado, já podem ser definidas as


estruturas de lock e cache na coupling facility e, então, seguir os
seguintes passos:

Definir estruturas de lista na coupling facility;


Definir log stream na coupling facility;
Definir os arquivos de stage;
Preparar as definições de segurança;

5-63
Definir as classes SMS;
Atualizar o membro IGDSMSxx da SYS1.PARMLIB;

5.2.5 Alterações no IDCAMS

Existem numerosas mudanças e adições aos comandos do IDCAMS.


Aqui estão algumas delas:

5.2.5.1 ALLOCATE

BWO(TYPECICS)
Esta opção especifica o backup-while-open (BWO) em um
ambiente DFSMStvs. Para o processamento do RLS esta opção
ativa o BWO para o DFSMStvs.
DATACLASS CISIZE
Para o DFSMStvs, especificação de n*2K evita desperdício em
uma estrutura de cache na coupling facility.
SHAREOPTIONS
Quando se usa o acesso do DFSMStvs, o DFSMS assume um
valor de (3,3)

5.2.5.2 ALTER

BWO(TYPECICS)
Esta opção especifica o backup-while-open (BWO) em um
ambiente DFSMStvs. Para o processamento do RLS esta opção
ativa o BWO para o DFSMStvs.
LOG(UNDO)
Especifica que mudanças ao sphere acessado em modo
DFSMStvs pode ser backed out usando um log externo. O
DFSMStvs considera o sphere recuperável.
LOG(ALL)
Especifica que mudanças ao sphere acessado em modo
DFSMStvs pode ser backed out e também forward recovered
usando log externo. O DFSMStvs considera o sphere recuperável.
LOGSTREAMID também deve ser definido.
LOGSTREAMID
Esta opção adiciona ou altera o nome do DFSMStvs log forward-
recovery para todos os componentes de um VSAM sphere.

5.2.5.3 DEFINE ALTERNATEINDEX

BUFFERSPACE
Quando se usa o acesso do DFSMStvs, o DFSMS ignora o
parâmetro BUFFERSPACE.
CONTROLINTERVALSIZE

5-64
Para o DFSMStvs, a especificação de n*2K evita desperdício de
espaço na estrutura de cache da coupling facility.
KEYRANGES
Não se pode abrir arquivos com keyranges em processamento do
RLS e DFSMStvs porque o DFSMS não suporta este parâmetro.
SHAREOPTIONS
Quando se usa o acesso do DFSMStvs, o DFSMS assume um
valor de (3,3)
WRITECHECK
Quando se usa o acesso DFSMStvs, o DFSMS ignora o parâmetro
WRITECHECK.

5.2.5.4 DEFINE CLUSTER

BUFFERSPACE
Quando se usa o acesso do DFSMStvs, o DFSMS ignora o
parâmetro BUFFERSPACE.
CONTROLINTERVALSIZE
Para o DFSMStvs, a especificação de n*2K evita desperdício de
espaço na estrutura de cache da coupling facility.
KEYRANGES
Não se pode abrir arquivos com keyranges em processamento do
RLS e DFSMStvs porque o DFSMS não suporta este parâmetro.
LOG(UNDO)
Especifica que mudanças ao sphere acessado em modo
DFSMStvs pode ser backed out usando um log externo. O
DFSMStvs considera o sphere recuperável.
LOG(ALL)
Especifica que mudanças ao sphere acessado em modo
DFSMStvs pode ser backed out e também forward recovered
usando log externo. O DFSMStvs considera o sphere recuperável.
LOGSTREAMID também deve ser definido.
LOGSTREAMID
Esta opção adiciona ou altera o nome do DFSMStvs log forward-
recovery para todos os componentes de um VSAM sphere.
SHAREOPTIONS
Quando se usa o acesso do DFSMStvs, o DFSMS assume um
valor de (3,3)
WRITECHECK
Quando se usa o acesso DFSMStvs, o DFSMS ignora o parâmetro
WRITECHECK.

5.2.5.5 DEFINE PATCH

NOUPDATE

5-65
Ele trabalha da mesma forma para o DFSMStvs como RLS.

5.2.5.6 SHCDS

LISTDS
Uma nova e opcional palavra chave, JOBS, retorna uma lista dos
jobs que correntemente acessam arquivos em modo DFSMStvs.
LISTSHUNTED
Lista informação sobre tarefas que foram “shunted” devido a
incapacidade de completar um syncpoint para um arquivo, uma
unidade de recuperação ou todas as unidades de recuperação.
PURGE
Descarta entradas de log e libera os locks associados para uso
quando o arquivo é corrompido e não se pode restaura-lo para
um estado de consistência com as entradas do log.
RETRY
Tenta novamente o syncpoint; ele é usado quando se recupera
um arquivo para um estado que é consistente com entradas de
log.

5-66