[oracle_br] Alteração do nome de tabelas
Prezados, Bom Dia Existe alguma forma de alterar o nome de todas as tabelas? Exemplo: xxx_tb1, xxx_tb2 etc mudar para yyy_tb1, yyy.tb2 etc
[oracle_br] Re: Alteração do nome de tabelas
vi o ALTER TABLE tblAntiga RENAME TO tblNova Porem queria saber se os objetos ligados a tbl renomeada, serão atualizados ... ou terei de fazer isso manualmente? Em 21 de julho de 2014 10:14, Mario Rodrigues marioirodrig...@gmail.com escreveu: Prezados, Bom Dia Existe alguma forma de alterar o nome de todas as tabelas? Exemplo: xxx_tb1, xxx_tb2 etc mudar para yyy_tb1, yyy.tb2 etc
Re: [oracle_br] Alteração do nome de tabelas
Bom dia Mário. Acredito que você pode usar um bloco anônimo. Porém considere a possibilidade dos indices, views que fazem referencia a essas tabelas. Um exemplo aqui: DECLARE CURSOR C1 IS SELECT table_name FROM all_tables where UPPER(table_name) like '*FINAN*%'; v_stmt VARCHAR2(32767) := NULL; BEGIN FOR I IN C1 LOOP v_Stmt := 'RENAME '||I.table_name||' TO* yyy*_'||I.table_name; EXECUTE IMMEDIATE v_stmt; v_stmt := NULL; END LOOP; END; / Utilizei esse link abaixo quando precisei mudar os nomes de todas as tabelas de um schema que iniciavam com as iniciais FINAN, dai você mudar os parâmetros. Lembrando que efetue em um *ambiente de homologação.* [1] https://community.oracle.com/thread/1120407?start=0tstart=0 Att, Emerson Martins DBA Oracle Oracle 11g Certified Associate 2014-07-21 10:14 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br: Prezados, Bom Dia Existe alguma forma de alterar o nome de todas as tabelas? Exemplo: xxx_tb1, xxx_tb2 etc mudar para yyy_tb1, yyy.tb2 etc
Re: [oracle_br] Alteração do nome de tabelas
Emerson Obrigado ... vou tentar fazer e dou um retorno ... obrigado mesmo! Em 21 de julho de 2014 10:49, Emerson Martins emersonmarti...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Bom dia Mário. Acredito que você pode usar um bloco anônimo. Porém considere a possibilidade dos indices, views que fazem referencia a essas tabelas. Um exemplo aqui: DECLARE CURSOR C1 IS SELECT table_name FROM all_tables where UPPER(table_name) like '*FINAN*%'; v_stmt VARCHAR2(32767) := NULL; BEGIN FOR I IN C1 LOOP v_Stmt := 'RENAME '||I.table_name||' TO* yyy*_'||I.table_name; EXECUTE IMMEDIATE v_stmt; v_stmt := NULL; END LOOP; END; / Utilizei esse link abaixo quando precisei mudar os nomes de todas as tabelas de um schema que iniciavam com as iniciais FINAN, dai você mudar os parâmetros. Lembrando que efetue em um *ambiente de homologação.* [1] https://community.oracle.com/thread/1120407?start=0tstart=0 Att, Emerson Martins DBA Oracle Oracle 11g Certified Associate 2014-07-21 10:14 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br: Prezados, Bom Dia Existe alguma forma de alterar o nome de todas as tabelas? Exemplo: xxx_tb1, xxx_tb2 etc mudar para yyy_tb1, yyy.tb2 etc
[oracle_br] Re: Alteração do nome de tabelas
Opa, então : a. não, não há no RDBMS Oracle (a afaik na maioria dos outros) um comando/built-in que permita o RENAME de múltiplas tabelas de uma só vez - no caso do RDBMS Oracle, o procedimento é emitir um comando RENAME TABLE para cada tabela... O que vc pode fazer para Agilizar é um pequeno programinha PL/SQL e/ou um pequeno script (numa ferramenta-cliente que permita, como sqlplus ou sql developer, entre outras) que gere e execute (ao ao menos gere) os comandos RENAME TABLE todos que vc precisa Pelo sqlplus, por exemplo, vc conecta ao banco em questão e digita algo do tipo (trocando pelos seus dados, claro): SPOOL renomear.sql SELECT 'RENAME TABLE ' || table_name || ' TO ' || substr(table_name,4) || ';' FROM DBA_TABLES WHERE owner='DONODASTABELAS' AND TABLE_NAME LIKE '%'; SPOOL OFF aí edita o arquivo (se for preciso alguma mínima alteração) e executa o script renomear.sql . Via PL/SQL vc usa o EXECUTE IMMEDIATE, + ou - tipo : BEGIN for r in SELECT TABLE_NAME FROM DBA_TABLES WHERE owner='DONODASTABELAS' AND TABLE_NAME LIKE '%' loop execute immediate('RENAME TABLE ' || r.table_name || ' TO ' || substr(r.table_name,4)) ; end loop; END; - vai do gosto e do conhecimento - eu gosto mais da opção de gerar um Arquivo-texto com os comandos porque (entre outras vantagens) esse tal arquivo é uma Evidência, que pode ser anexada à Documentação b. sim, os elementos do database que são Subordinados à tabela a renomear e Apontavam para o/ Dependiam do nome antigo da tabela (ie, índices, constraints, triggers, etc) Automaticamente passarão a apontar para o novo nome depois de um RENAME. O que *** NÃO VAI SER *** alterado automaticamente são os objetos do database que se referenciam/usam o nome da tabela a renomear num SQL qualquer deles (principalmente VIEWS, PROCEDURES, FUNCTIONS e PACKAGES) - o código de todos esses caras VAI continuar tendo uma referência para o nome antigo, que deverá ser editada/corrigida manualmente por vc ... NEM PRECISO DIZER, os objetos EXTERNOS ao database (ie, o código da tua Aplicação, eventuais shell scripts/scripts sqlplus, relatórios, etc) logicamente TAMBÈM podem conter referências às tabelas renomeadas, VAI ter que ser revisto após os RENAMEs []s Chiappa
Re: [oracle_br] Re: Alteração do nome de tabelas
Chiappa, Como sempre muito solícito com todos ... obrigado a todos pela ajuda!!! o/ Em 21 de julho de 2014 13:14, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Opa, então : a. não, não há no RDBMS Oracle (a afaik na maioria dos outros) um comando/built-in que permita o RENAME de múltiplas tabelas de uma só vez - no caso do RDBMS Oracle, o procedimento é emitir um comando RENAME TABLE para cada tabela... O que vc pode fazer para Agilizar é um pequeno programinha PL/SQL e/ou um pequeno script (numa ferramenta-cliente que permita, como sqlplus ou sql developer, entre outras) que gere e execute (ao ao menos gere) os comandos RENAME TABLE todos que vc precisa Pelo sqlplus, por exemplo, vc conecta ao banco em questão e digita algo do tipo (trocando pelos seus dados, claro): SPOOL renomear.sql SELECT 'RENAME TABLE ' || table_name || ' TO ' || substr(table_name,4) || ';' FROM DBA_TABLES WHERE owner='DONODASTABELAS' AND TABLE_NAME LIKE '%'; SPOOL OFF aí edita o arquivo (se for preciso alguma mínima alteração) e executa o script renomear.sql . Via PL/SQL vc usa o EXECUTE IMMEDIATE, + ou - tipo : BEGIN for r in SELECT TABLE_NAME FROM DBA_TABLES WHERE owner='DONODASTABELAS' AND TABLE_NAME LIKE '%' loop execute immediate('RENAME TABLE ' || r.table_name || ' TO ' || substr(r.table_name,4)) ; end loop; END; - vai do gosto e do conhecimento - eu gosto mais da opção de gerar um Arquivo-texto com os comandos porque (entre outras vantagens) esse tal arquivo é uma Evidência, que pode ser anexada à Documentação b. sim, os elementos do database que são Subordinados à tabela a renomear e Apontavam para o/ Dependiam do nome antigo da tabela (ie, índices, constraints, triggers, etc) Automaticamente passarão a apontar para o novo nome depois de um RENAME. O que *** NÃO VAI SER *** alterado automaticamente são os objetos do database que se referenciam/usam o nome da tabela a renomear num SQL qualquer deles (principalmente VIEWS, PROCEDURES, FUNCTIONS e PACKAGES) - o código de todos esses caras VAI continuar tendo uma referência para o nome antigo, que deverá ser editada/corrigida manualmente por vc ... NEM PRECISO DIZER, os objetos EXTERNOS ao database (ie, o código da tua Aplicação, eventuais shell scripts/scripts sqlplus, relatórios, etc) logicamente TAMBÈM podem conter referências às tabelas renomeadas, VAI ter que ser revisto após os RENAMEs []s Chiappa
[oracle_br] Erros Oracle (Ora....)
Boa Tarde Banco Oracle 10gr2 com Windows 2003 Server. Gostaria de saber como traduzir aqueles erros oracle (Ora-), pois vários usuários reclamam que não sabem interpretar a mensagem em Inglês. Alguém tem alguma ideia de como resolver isso. Desde já muito obrigado. Alessandro
[oracle_br] Add Parametro no SPFILE
Pessoal, Como faço para adicionar um novo parâmetro no SPFILE. Estou tentando executar este abaixo. SQL alter system set diagnostic_dest = '$ORACLE_HOME/rdbms/log' scope=spfile; alter system set diagnostic_dest = '$ORACLE_HOME/rdbms/log' scope=spfile * ERROR at line 1: ORA-02065: illegal option for ALTER SYSTEM Grato, Ednilson Silva
[oracle_br] Re: Add Parametro no SPFILE
A sintaxe é Exatamente essa afaik : o erro tá indicando que diagnostic_dest não é um parâmetro que ele conheça Será que o teu database não é 10g ou inferior ??? SE sim, tá explicado, esse parâmetro iirc só foi introduzido no 11g... []s Chiappa
[oracle_br] Re: Erros Oracle (Ora....)
Explica melhor : vc está falando das mensagens de erro do database, enviadas PELO DATABASE para o cliente ?? Se sim, basicamente o que vc tem que fazer é setar a tool cliente/linguagem/ambiente de programação para informar ao database a lingguagem que vc quer usar, que aí as mensagens de erro, dias da semana, etc, etc , serão traduzidas Já se a mensagem de erro vinda do database tá sendo Processada pela tool/ferramenta de programação (como sei por exemplo que o JDBC pode fazer) , aí outras técnicas vão ser necessárias, talvez ... == Exemplo com SQLPLUS como tool-cliente, que se configura com variáveis de ambiente (OBVIAMENTE, outras tools/linguagens se configuram de outras maneiras) : == database está configurado para usar Inglês : SYS:AS SYSDBA@orcl:SQLselect * from nls_database_parameters; PARAMETER -- VALUE - NLS_LANGUAGE AMERICAN NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET AL32UTF8 NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN == acesso o database SEM especificar NLS settings para o cliente, ele usa o default do database : [oracle@localhost ~]$ echo $NLS_LANG [oracle@localhost ~]$ [oracle@localhost ~]$ sqlplus / as sysdba SYS:AS SYSDBA@orcl:SQLselect 1/0 from dual; select 1/0 from dual * ERROR at line 1: ORA-01476: divisor is equal to zero SYS:AS SYSDBA@orcl:SQLexit == agora seto o NLS environment do cliente, NO MEU CASO de sqlplus via variável NLS : [oracle@localhost ~]$ export NLS_LANG=BRAZILIAN PORTUGUESE_BRAZIL.AL32UTF8 [oracle@localhost ~]$ echo $NLS_LANG BRAZILIAN PORTUGUESE_BRAZIL.AL32UTF8 == óia aí as msg de erro em pt-br : [oracle@localhost ~]$ sqlplus / as sysdba SYS:AS SYSDBA@orcl:SQLselect 1/0 from dual; select 1/0 from dual * ERROR at line 1: ORA-01476: o divisor é igual a zero SYS:AS SYSDBA@orcl:SQLSELECT * FROM NLS_SESSION_PARAMETERS; PARAMETER VALUE - NLS_LANGUAGE BRAZILIAN PORTUGUESE NLS_TERRITORY BRAZIL NLS_CURRENCY R$ NLS_ISO_CURRENCY BRAZIL NLS_NUMERIC_CHARACTERS ,. NLS_CALENDAR GREGORIAN NLS_DATE_LANGUAGE BRAZILIAN PORTUGUESE NLS_SORT WEST_EUROPEAN []s Chiappa == REPITO : no Meu caso o setting é feito via variável, Outras tools demandam Outros ajustes Diga EXATAMENTE em que vc desenvolveu e onde/como vc roda o Aplicativo, que eventualmente quem usa a mesma coisa pode te dar umas dicas...