Estou montando um shell script cujo objetivo é criar uma tablespace, com os datafiles porém, os dados que farão parte da montagem da tablespace e datafiles, virão por meio de variáveis.
Preciso pegar o arquivo .sql gerado e via shell scrpt substituir as informações por meio de variáveis.
Alguém já passou e/ou está passando por essa situação no momento ?
Estou montando um shell script cujo objetivo é criar uma tablespace, com os datafiles porém,
os dados que farão parte da montagem da tablespace e datafiles, virão por meio de variáveis.
Preciso pegar o arquivo .sql gerado e via shell script substituir as informações por meio de variáveis.
Alguém já passou e/ou está passando por essa situação no momento ?
Grato
Marco Aurélio
Boa noite Marco.
Qual a dúvida e/ou problema encontrado?
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________
3. criar tablespace com shell script
maperes100usa Outra
Post recolhido
Enviado em 13/01/2022 - 08:18h
Bom dia Marcelo.
Tudo bem ?
Obrigado pelo seu contato.
Vou mostrar qual o problema/dúvida que enfrento no momento.
Tenho essa DDL de uma tablespace já criada no banco de dados, é um exemplo.
CREATE TABLESPACE "UNIAO" DATAFILE
'/u01//dados/uniao01.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE
'/u01/dados/uniao01.dbf' RESIZE 2097152000
O que preciso fazer é o seguinte :
criar uma nova tablespace com o DDL gerado acima, porém o nome da tablespace virá de uma variável a ser inputada, assim como o(s) datafile(s).
não estou conseguindo por meio de shell script uma forma de passar essa variável para o DDL de criação.
Não sei se essa é a melhor forma de se fazer o processo, minha intenção é tornar o processo o mais possível automatizado.
4. Re: criar tablespace com shell script
leandropscarduausa Ubuntu
Post recolhido
Enviado em 13/01/2022 - 23:02h
Vc quer substituir o nome da tablespace, é isso?
5. Re: criar tablespace com shell script
msoliverusa Debian
Post recolhido
Enviado em 13/01/2022 - 23:56h
maperes100 escreveu:
Bom dia Marcelo.
Tudo bem ?
Obrigado pelo seu contato.
Vou mostrar qual o problema/dúvida que enfrento no momento.
Tenho essa DDL de uma tablespace já criada no banco de dados, é um exemplo.
CREATE TABLESPACE "UNIAO" DATAFILE
'/u01//dados/uniao01.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE
'/u01/dados/uniao01.dbf' RESIZE 2097152000
O que preciso fazer é o seguinte :
criar uma nova tablespace com o DDL gerado acima, porém o nome da tablespace virá de uma variável a ser inputada, assim como o(s) datafile(s).
não estou conseguindo por meio de shell script uma forma de passar essa variável para o DDL de criação.
Não sei se essa é a melhor forma de se fazer o processo, minha intenção é tornar o processo o mais possível automatizado.
Boa noite Marco.
Não ficou muito claro.... mas, segue um exemplo:
Opção 01:
Informe os valores das variáveis na linha de comando, como parâmetro.
Exemplo:
tabela.sh NOMETABELA NOMEDATAFILE
#!/bin/bash
echo "
CREATE TABLESPACE \"${1}\" DATAFILE '${2}' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '${2}' RESIZE 2097152000
"
Opção 02:
Solicitando as variáveis:
#!/bin/bash
read -p "Nome da Tabela: " tablename
read -p "Nome do DataFile: " datafile
echo "
CREATE TABLESPACE \"${tablename}\" DATAFILE '${datafile}' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '${datafile}' RESIZE 2097152000"
Coloquei o "echo" para mostrar a saída com as variáveis.
Uma outra forma para melhor automação, seria colocar os valores em um txt,
tipo, cada linha contendo um par de valores.....
O shell script, percorre o arquivo e complementa com os "valores".
Exemplo:
cat DDL.txt
CREATE TABLESPACE \"ts\" DATAFILE 'tnm' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE 'tnm' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_AA\" DATAFILE '/u01/dados/uniao_AA.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_AA.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_BB\" DATAFILE '/u01/dados/uniao_BB.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_BB.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_CC\" DATAFILE '/u01/dados/uniao_CC.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_CC.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_DD\" DATAFILE '/u01/dados/uniao_DD.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_DD.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_EE\" DATAFILE '/u01/dados/uniao_EE.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_EE.dbf' RESIZE 2097152000
.................................................
______________________________________________________________________ Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________ Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________
6. Re: criar tablespace com shell script
maperes100usa Outra
Post recolhido
Enviado em 14/01/2022 - 08:45h
leandropscardua escreveu:
Vc quer substituir o nome da tablespace, é isso?
Preciso substituir o nome da tablespace e os data files, no caso de haver mais que um.
7. Re: criar tablespace com shell script
maperes100usa Outra
Post recolhido
Enviado em 17/01/2022 - 10:38h
msoliver escreveu:
maperes100 escreveu:
Bom dia Marcelo.
Tudo bem ?
Obrigado pelo seu contato.
Vou mostrar qual o problema/dúvida que enfrento no momento.
Tenho essa DDL de uma tablespace já criada no banco de dados, é um exemplo.
CREATE TABLESPACE "UNIAO" DATAFILE
'/u01//dados/uniao01.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE
'/u01/dados/uniao01.dbf' RESIZE 2097152000
O que preciso fazer é o seguinte :
criar uma nova tablespace com o DDL gerado acima, porém o nome da tablespace virá de uma variável a ser inputada, assim como o(s) datafile(s).
não estou conseguindo por meio de shell script uma forma de passar essa variável para o DDL de criação.
Não sei se essa é a melhor forma de se fazer o processo, minha intenção é tornar o processo o mais possível automatizado.
Boa noite Marco.
Não ficou muito claro.... mas, segue um exemplo:
Opção 01:
Informe os valores das variáveis na linha de comando, como parâmetro.
Exemplo:
tabela.sh NOMETABELA NOMEDATAFILE
#!/bin/bash
echo "
CREATE TABLESPACE \"${1}\" DATAFILE '${2}' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '${2}' RESIZE 2097152000
"
Opção 02:
Solicitando as variáveis:
#!/bin/bash
read -p "Nome da Tabela: " tablename
read -p "Nome do DataFile: " datafile
echo "
CREATE TABLESPACE \"${tablename}\" DATAFILE '${datafile}' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '${datafile}' RESIZE 2097152000"
Coloquei o "echo" para mostrar a saída com as variáveis.
Uma outra forma para melhor automação, seria colocar os valores em um txt,
tipo, cada linha contendo um par de valores.....
O shell script, percorre o arquivo e complementa com os "valores".
Exemplo:
cat DDL.txt
CREATE TABLESPACE \"ts\" DATAFILE 'tnm' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE 'tnm' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_AA\" DATAFILE '/u01/dados/uniao_AA.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_AA.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_BB\" DATAFILE '/u01/dados/uniao_BB.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_BB.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_CC\" DATAFILE '/u01/dados/uniao_CC.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_CC.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_DD\" DATAFILE '/u01/dados/uniao_DD.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_DD.dbf' RESIZE 2097152000
CREATE TABLESPACE \"UNIÃO_EE\" DATAFILE '/u01/dados/uniao_EE.dbf' SIZE 1048576000
AUTOEXTEND ON NEXT 1048576000 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
ALTER DATABASE DATAFILE '/u01/dados/uniao_EE.dbf' RESIZE 2097152000
.................................................
______________________________________________________________________ Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________ Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________
Olá Marcelo.
É bem isso mesmo que preciso, vou ter que fazer algumas adaptações ,mas acredito que dará certo (a opção 3 - vou chamá-la assim).
No meu caso, precisarei fazer algumas adaptações, visto que haverá momentos em que terei que trazer para uma só tablespace 4 diferentes.
8. Re: criar tablespace com shell script
msoliverusa Debian
Post recolhido
Enviado em 17/01/2022 - 14:04h
Complementando.
Na opção 3, no arquivo var.txt,
pode colocar um campo com o nome do arquivo onde será salvo a saída do awk.
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________