Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
Entendi Reginaldo, cabe então a tomada de uma decisão no sentido de como serão acessadas as tablespaces de uma Base. Achei alguns artigos sobre tablespaces que me clarearam a forma na qual o Oracle administra seus dados, em visão Lógica e Física. Agora eu tive a seguinte situação questionada por um desenvolvedor: Criei um usuário que pode apenas fazer select em algumas tabelas (medida de segurança). Mas através da ferramenta Oracle SQL Developer para quem estiver utilizando este usuário, precisa alcançar um caminho mais longo para acessar a tabela (Other Users, UserName, Table). Existe alguma forma de criar um Alias (diferente do sinonym) que este usuário se identifica com a tabela assim como o próprio Owner? Não sei se fui claro na explicação, mas para desenvolvedor a forma mais simples que a tabela pode ser buscada é a forma mais desejada. rs Atenciosamente, Paulo Andrade MobileCard [EMAIL PROTECTED] --- Em oracle_br@yahoogrupos.com.br, Reginaldo Ribeiro [EMAIL PROTECTED] escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ao meu ver, a principal implicação é a administração. Você cria com seu usuário Paulo uma table chamada tabela. Depois, com seu user Paulo2 você cria uma table chamada table2. Aí, com o mesmo usuário Paulo2, você cria um sinônimo público chamado tabela, apontando para Paulo2.table2. Aí você sai de férias em dezembro (porque é clt e antigo na empresa) e quando volta em janeiro têm um novo projeto gigantesco. A próxima vez que você olhar esses objetos, lá por julho do ano que vêm, você vai ter que ficar caçando os objetos porque não se lembra mais que tabela é um sinônimo público apontando para um objeto cujo nome não tem relação aparente com o nome do sinônimo. Alguns sinônimos públicos, tudo bem... Mas como você já falou em equipe de desenvolvimento... Eu iria devagar com isso e passaria a pensar mais em sinônimos privados apenas. De qualquer forma, é sua a decisão. Qualquer coisa, estamos por aí. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Paulo wrote: Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da tabela como: OWNER.nometabela como assinalado. Mas posso também criar um Sinonimo como Reginaldo me indicou através do e-mail, solução fantástica que facilita para os desenvolvedores quando criarei usuários com permissões diferentes. Muito obrigado mesmo pela ajuda! Agora só por uma questão conceitual: Devo adotar então que esta é a forma única ou a melhor forma para realizar a divisão de acesso de uma tabela dentre alguns usuários? É possível uma tabela possuir mais de um OWNER(tenho absoluta certeza que não, mas para checar)? O uso de sinônimos do tipo public é um recurso utilizado(penso em questões de segurança)? Enfim preciso de um argumento interessante para convencer a minha chefe que esta é a solução mais interessante. Um abração! --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br, Reginaldo Ribeiro rflribeiro@ escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: rflribeiro@ site: http://www.dbcom.com.br http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Antes da dúvida, só mais uma observação. O acesso a segmentos nos tablespaces, no seu caso, é uma coisa secundária na sua dúvida. Este tipo de tarefa é mais voltada à administração e infra-estrutura. Desvincule-se desta visão. Pense no acesso aos objetos e não no acesso a determinado tablespace. Mesmo que você conceda grant de unlimited tablespace a um determinado usuário ele não poderá ver objetos de outros usuários, sacou? Em relação à dúvida: A forma de acessar informações no raptor (sqldeveloper) é irrelevante. Cada ferramenta têm seu formato próprio. No raptor, você poderá criar conexões específicas para o usuário owner dos objetos se não quiser percorrer todo o caminho (other users, etc...) que mencionou. Atrelar a administração dos dados à uma ferramenta é um tiro no pé. Se ainda fosse ao formato de acesso de uma determinada linguagem de programação... As soluções que eu proporia a seus desenvolvedores seriam views, sinônimos privados ou snônimos públicos. No caso das views e sinônimos privados, cada usuário teria que ter a/o sua/seu apontando para os objetos do outro schema que se quer acessar. No caso do sinônimo público, você cai no problema mencionado anteriormente, de administração. Cada decisão tem suas consequências e cabe a você decidir o que fazer ou não. Eu não perderia tanto tempo tentando prover ao desenvolvedor meios de acessar os dados de forma gráfica rapidamente. O meio mais rápido (ainda não inventaram outro) é SELECT COLUNA FROM OWNER.OBJETO; no sqlplus. P.S. Se os desenvolvedores reclamarem, ameace utilizar nomes científicos de animais invertebrados marinhos como nomes de atributos das tabelas. SELECT /MacrodactylaDoreensis// FROM tb_cliente order by 1;/ (brincadeira, hein!?) Boa sorte. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Paulo wrote: Entendi Reginaldo, cabe então a tomada de uma decisão no sentido de como serão acessadas as tablespaces de uma Base. Achei alguns artigos sobre tablespaces que me clarearam a forma na qual o Oracle administra seus dados, em visão Lógica e Física. Agora eu tive a seguinte situação questionada por um desenvolvedor: Criei um usuário que pode apenas fazer select em algumas tabelas (medida de segurança). Mas através da ferramenta Oracle SQL Developer para quem estiver utilizando este usuário, precisa alcançar um caminho mais longo para acessar a tabela (Other Users, UserName, Table). Existe alguma forma de criar um Alias (diferente do sinonym) que este usuário se identifica com a tabela assim como o próprio Owner? Não sei se fui claro na explicação, mas para desenvolvedor a forma mais simples que a tabela pode ser buscada é a forma mais desejada. rs Atenciosamente, Paulo Andrade MobileCard [EMAIL PROTECTED] mailto:paulo%40mobilecard.com.br --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br, Reginaldo Ribeiro [EMAIL PROTECTED] escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ao meu ver, a principal implicação é a administração. Você cria com seu usuário Paulo uma table chamada tabela. Depois, com seu user Paulo2 você cria uma table chamada table2. Aí, com o mesmo usuário Paulo2, você cria um sinônimo público chamado tabela, apontando para Paulo2.table2. Aí você sai de férias em dezembro (porque é clt e antigo na empresa) e quando volta em janeiro têm um novo projeto gigantesco. A próxima vez que você olhar esses objetos, lá por julho do ano que vêm, você vai ter que ficar caçando os objetos porque não se lembra mais que tabela é um sinônimo público apontando para um objeto cujo nome não tem relação aparente com o nome do sinônimo. Alguns sinônimos públicos, tudo bem... Mas como você já falou em equipe de desenvolvimento... Eu iria devagar com isso e passaria a pensar mais em sinônimos privados apenas. De qualquer forma, é sua a decisão. Qualquer coisa, estamos por aí. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Paulo wrote: Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or view does not exist [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from paulo.T_TSE; não há linhas selecionadas De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Paulo Enviada em: segunda-feira, 27 de outubro de 2008 10:24 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Novo Usuário para Tablespace Existente O usuário que executou os comandos foi o OWNER que criou as tabelas. Ele pertence à rule DBA: SQL select * from owner.T_TSE; select * from owner.T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL select * from T_TSE; ORDER_ID NAME -- -- 1 Joao 5 Paulo Quando eu faço: SQL select OWNER from DBA_SEGMENTS where TABLESPACE_NAME = 'TSE'; OWNER -- PAULO O que eu quero é que o usuário PAULO2 tenha acesso a tabela T_TSE. SQL GRANT SELECT ON T_TSE TO PAULO2; Grant succeeded. SQL COMMIT; SQL CONNECT PAULO2/PAULO2; Connected. Commit complete. SQL SELECT * FROM T_TSE; SELECT * FROM T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Rafael Almeida Milanez [EMAIL PROTECTED] escreveu Voce necessita colocar o OWNER (dono da tabela) antes para visualizar select * from owner.T_TSE De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] Em nome de Paulo Andrade Enviada em: segunda-feira, 27 de outubro de 2008 09:34 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: [oracle_br] Novo Usuário para Tablespace Existente Pessoal tem uma dúvida que não consigo encontrar resposta: Possuo uma Base SID = BASE3 com alguns tablespaces. Tenho por exemplo um TABLESPACE de nome TSE e criei uma tabela de teste e inseri algum dado. Tenho também um usuário que está com a permissão de DBA e CONNECT definido na tablespace TSE. Tudo certo até então. Agora não consigo fazer o seguinte: Criar um novo usuário que consiga acessar a tabela que está na TABLESPACE TSE. Criei o usuário novo com o comando: CREATE USER NEWUSR IDENTIFIED BY NEWUSR DEFAULT TABLESPACE TSE TEMPORARY TABLESPACE TEMP_TSE PROFILE DEFAULT ACCOUNT UNLOCK; e defini as permissões: GRANT CONNECT TO NEWUSR e GRANT SELECT ON T_TSE TO NEWUSR; Apesar de ser retornado que efetivou o GRANT, não consigo realizar o SELECT na tabela T_TSE com o NEWUSR. O que devo fazer? Paulo Andrade !-- #ygrp-mkp{ border: 1px solid #d8d8d8; font-family: Arial; margin: 14px 0px; padding: 0px 14px; } #ygrp-mkp hr{ border: 1px solid #d8d8d8; } #ygrp-mkp #hd{ color: #628c2a; font-size: 85%; font-weight: bold; line-height: 122%; margin: 10px 0px; } #ygrp-mkp #ads{ margin-bottom: 10px; } #ygrp-mkp .ad{ padding: 0 0; } #ygrp-mkp .ad a{ color: #ff; text-decoration: none; } -- !-- #ygrp-sponsor #ygrp-lc{ font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd{ margin: 10px 0px; font-weight: bold; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad{ margin-bottom: 10px; padding: 0 0; } -- !-- #ygrp-mlmsg {font-size:13px; font-family:
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da tabela como: OWNER.nometabela como assinalado. Mas posso também criar um Sinonimo como Reginaldo me indicou através do e-mail, solução fantástica que facilita para os desenvolvedores quando criarei usuários com permissões diferentes. Muito obrigado mesmo pela ajuda! Agora só por uma questão conceitual: Devo adotar então que esta é a forma única ou a melhor forma para realizar a divisão de acesso de uma tabela dentre alguns usuários? É possível uma tabela possuir mais de um OWNER(tenho absoluta certeza que não, mas para checar)? O uso de sinônimos do tipo public é um recurso utilizado(penso em questões de segurança)? Enfim preciso de um argumento interessante para convencer a minha chefe que esta é a solução mais interessante. Um abração! --- Em oracle_br@yahoogrupos.com.br, Reginaldo Ribeiro [EMAIL PROTECTED] escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or view does not exist [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from paulo.T_TSE; não há linhas selecionadas De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Paulo Enviada em: segunda-feira, 27 de outubro de 2008 10:24 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Novo Usuário para Tablespace Existente O usuário que executou os comandos foi o OWNER que criou as tabelas. Ele pertence à rule DBA: SQL select * from owner.T_TSE; select * from owner.T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL select * from T_TSE; ORDER_ID NAME -- -- 1 Joao 5 Paulo Quando eu faço: SQL select OWNER from DBA_SEGMENTS where TABLESPACE_NAME = 'TSE'; OWNER -- PAULO O que eu quero é que o usuário PAULO2 tenha acesso a tabela T_TSE. SQL GRANT SELECT ON T_TSE TO PAULO2; Grant succeeded. SQL COMMIT; SQL CONNECT PAULO2/PAULO2; Connected. Commit complete. SQL SELECT * FROM T_TSE; SELECT * FROM T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Rafael Almeida Milanez rmilanez@ escreveu Voce necessita colocar o OWNER (dono da tabela) antes para visualizar select * from owner.T_TSE De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] Em nome de Paulo Andrade Enviada em: segunda-feira, 27 de outubro de 2008 09:34 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: [oracle_br] Novo Usuário para Tablespace Existente Pessoal tem uma dúvida que não consigo encontrar resposta: Possuo uma Base SID = BASE3 com alguns tablespaces. Tenho por exemplo um TABLESPACE de nome TSE e criei uma tabela de teste e inseri algum dado. Tenho também um usuário que está com a permissão de DBA e CONNECT definido na tablespace TSE. Tudo certo até então. Agora não consigo fazer o seguinte: Criar um novo usuário que consiga acessar a tabela que está na TABLESPACE TSE.
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
Apenas um detalhe que não comentei na mensagem anterior: Quando entrei para a empresa em que trabalho, a maior parte das bases utilizadas pelos programadores foram criadas por um usuário que utiliza a TABLESPACE USERS. Pelo o que entendi, está TABLESPACE acompanha a base oracle vazia, não sendo necessária cria-la. É uma boa opção utilizar esta TABLESPACE? Ou sempre é melhor criar uma nova TABLESPACE especifica? Agradeço! --- Em oracle_br@yahoogrupos.com.br, Paulo [EMAIL PROTECTED] escreveu Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da tabela como: OWNER.nometabela como assinalado. Mas posso também criar um Sinonimo como Reginaldo me indicou através do e-mail, solução fantástica que facilita para os desenvolvedores quando criarei usuários com permissões diferentes. Muito obrigado mesmo pela ajuda! Agora só por uma questão conceitual: Devo adotar então que esta é a forma única ou a melhor forma para realizar a divisão de acesso de uma tabela dentre alguns usuários? É possível uma tabela possuir mais de um OWNER(tenho absoluta certeza que não, mas para checar)? O uso de sinônimos do tipo public é um recurso utilizado(penso em questões de segurança)? Enfim preciso de um argumento interessante para convencer a minha chefe que esta é a solução mais interessante. Um abração! --- Em oracle_br@yahoogrupos.com.br, Reginaldo Ribeiro rflribeiro@ escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: rflribeiro@ site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or view does not exist [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from paulo.T_TSE; não há linhas selecionadas De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Paulo Enviada em: segunda-feira, 27 de outubro de 2008 10:24 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Novo Usuário para Tablespace Existente O usuário que executou os comandos foi o OWNER que criou as tabelas. Ele pertence à rule DBA: SQL select * from owner.T_TSE; select * from owner.T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL select * from T_TSE; ORDER_ID NAME -- -- 1 Joao 5 Paulo Quando eu faço: SQL select OWNER from DBA_SEGMENTS where TABLESPACE_NAME = 'TSE'; OWNER -- PAULO O que eu quero é que o usuário PAULO2 tenha acesso a tabela T_TSE. SQL GRANT SELECT ON T_TSE TO PAULO2; Grant succeeded. SQL COMMIT; SQL CONNECT PAULO2/PAULO2; Connected. Commit complete. SQL SELECT * FROM T_TSE; SELECT * FROM T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Rafael Almeida Milanez rmilanez@ escreveu Voce necessita colocar o OWNER (dono da tabela) antes para visualizar select * from owner.T_TSE De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] Em nome de Paulo Andrade Enviada em: segunda-feira, 27 de outubro de 2008
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Via de regra, sem falarmos de tablespaces exclusivos para lobs, separação de dados e índices e tudo mais, tente sempre vincular seus tablespaces à sua aplicação, no mínimo. Quando você tiver que efetuar alguma operação relacionada apenas com uma aplicação, está tudo num lugar só. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Paulo wrote: Apenas um detalhe que não comentei na mensagem anterior: Quando entrei para a empresa em que trabalho, a maior parte das bases utilizadas pelos programadores foram criadas por um usuário que utiliza a TABLESPACE USERS. Pelo o que entendi, está TABLESPACE acompanha a base oracle vazia, não sendo necessária cria-la. É uma boa opção utilizar esta TABLESPACE? Ou sempre é melhor criar uma nova TABLESPACE especifica? Agradeço! --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br, Paulo [EMAIL PROTECTED] escreveu Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da tabela como: OWNER.nometabela como assinalado. Mas posso também criar um Sinonimo como Reginaldo me indicou através do e-mail, solução fantástica que facilita para os desenvolvedores quando criarei usuários com permissões diferentes. Muito obrigado mesmo pela ajuda! Agora só por uma questão conceitual: Devo adotar então que esta é a forma única ou a melhor forma para realizar a divisão de acesso de uma tabela dentre alguns usuários? É possível uma tabela possuir mais de um OWNER(tenho absoluta certeza que não, mas para checar)? O uso de sinônimos do tipo public é um recurso utilizado(penso em questões de segurança)? Enfim preciso de um argumento interessante para convencer a minha chefe que esta é a solução mais interessante. Um abração! --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br, Reginaldo Ribeiro rflribeiro@ escreveu Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: rflribeiro@ site: http://www.dbcom.com.br http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or view does not exist [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from paulo.T_TSE; não há linhas selecionadas De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Paulo Enviada em: segunda-feira, 27 de outubro de 2008 10:24 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Novo Usuário para Tablespace Existente O usuário que executou os comandos foi o OWNER que criou as tabelas. Ele pertence à rule DBA: SQL select * from owner.T_TSE; select * from owner.T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL select * from T_TSE; ORDER_ID NAME -- -- 1 Joao 5 Paulo Quando eu faço: SQL select OWNER from DBA_SEGMENTS where TABLESPACE_NAME = 'TSE'; OWNER -- PAULO O que eu quero é que o usuário PAULO2 tenha acesso a tabela T_TSE. SQL GRANT SELECT ON T_TSE TO PAULO2; Grant succeeded. SQL COMMIT; SQL CONNECT PAULO2/PAULO2;
Re: RES: RES: [oracle_br] Novo Usuário para Tablespace Existente
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ao meu ver, a principal implicação é a administração. Você cria com seu usuário Paulo uma table chamada tabela. Depois, com seu user Paulo2 você cria uma table chamada table2. Aí, com o mesmo usuário Paulo2, você cria um sinônimo público chamado tabela, apontando para Paulo2.table2. Aí você sai de férias em dezembro (porque é clt e antigo na empresa) e quando volta em janeiro têm um novo projeto gigantesco. A próxima vez que você olhar esses objetos, lá por julho do ano que vêm, você vai ter que ficar caçando os objetos porque não se lembra mais que tabela é um sinônimo público apontando para um objeto cujo nome não tem relação aparente com o nome do sinônimo. Alguns sinônimos públicos, tudo bem... Mas como você já falou em equipe de desenvolvimento... Eu iria devagar com isso e passaria a pensar mais em sinônimos privados apenas. De qualquer forma, é sua a decisão. Qualquer coisa, estamos por aí. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Paulo wrote: Fantástico, era exatamente este meu problema: Para acessar a tabela de outro usuário eu preciso colocar o OWNER antes do nome da tabela como: OWNER.nometabela como assinalado. Mas posso também criar um Sinonimo como Reginaldo me indicou através do e-mail, solução fantástica que facilita para os desenvolvedores quando criarei usuários com permissões diferentes. Muito obrigado mesmo pela ajuda! Agora só por uma questão conceitual: Devo adotar então que esta é a forma única ou a melhor forma para realizar a divisão de acesso de uma tabela dentre alguns usuários? É possível uma tabela possuir mais de um OWNER(tenho absoluta certeza que não, mas para checar)? O uso de sinônimos do tipo public é um recurso utilizado(penso em questões de segurança)? Enfim preciso de um argumento interessante para convencer a minha chefe que esta é a solução mais interessante. Um abração! --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br, Reginaldo Ribeiro [EMAIL PROTECTED] escreveu -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Paulo, alguns amigos já tiveram oportunidade de orientá-lo. Eu, inclusive, lhe enviei um exemplo imenso em pvt contendo, inclusive, instruções para lidar com sinônimos de objetos e links de referência. Seria interessante informar se sua dúvida está sanada. Obrigado. Ribeiro, Reginaldo Administrador de Bancos de Dados Oracle Certified Associate 10g - DBCom Brazil Consultoria em Tecnologia da Informação skype: rflribeiro mobile: 551192344290 fone: 551135225172 e-mail: [EMAIL PROTECTED] site: http://www.dbcom.com.br http://www.dbcom.com.br Chave Pública: http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index http://keyserver.noreply.org/pks/lookup?search=rflribeiro%40dbcom.com.brfingerprint=onop=index Rafael Almeida Milanez wrote: Vamos la para simulação [EMAIL PROTECTED]show user USER é PAULO [EMAIL PROTECTED]create table T_TSE 2 ( cod number); Tabela criada. [EMAIL PROTECTED]grant create session to paulo2 ; [EMAIL PROTECTED]grant select on paulo.T_TSE to paulo2; Concessão bem-sucedida. Agora conecto com Paulo2 [EMAIL PROTECTED]show mailto:[EMAIL PROTECTED]show user USER é PAULO2 Ai esta a diferença, voce tem que colocar o OWNER.tabela [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from T_TSE; select * from T_TSE * ERRO na linha 1: ORA-00942: table or view does not exist [EMAIL PROTECTED]select mailto:[EMAIL PROTECTED]select * from paulo.T_TSE; não há linhas selecionadas De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Paulo Enviada em: segunda-feira, 27 de outubro de 2008 10:24 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Novo Usuário para Tablespace Existente O usuário que executou os comandos foi o OWNER que criou as tabelas. Ele pertence à rule DBA: SQL select * from owner.T_TSE; select * from owner.T_TSE * ERROR at line 1: ORA-00942: table or view does not exist SQL select * from T_TSE; ORDER_ID NAME -- -- 1 Joao 5 Paulo Quando eu faço: SQL select OWNER from DBA_SEGMENTS where TABLESPACE_NAME = 'TSE'; OWNER -- PAULO O que eu quero é que o usuário