AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-2453

kevinskio's questions

Martin Hope
kevinskio
Asked: 2015-03-04 19:04:08 +0800 CST

Removendo a edição de um usuário Oracle

  • 3

Eu mantenho um banco de dados Oracle Enterprise 11.2.0.3 onde um usuário tem edição habilitada. Entendo que esta foi uma escolha irreversível de acordo com a documentação.

Se eu quiser reverter esse usuário para um status não editado, posso exportar seus objetos, eliminar e recriar o usuário e depois importar os objetos antigos?

  • Existem consequências?
  • Qual edição o Oracle exportará?
  • devo descartar todas as edições filhas primeiro?

Esta dúvida é causada pela avaliação da equipe de que a edição não é utilizada e não oferece nenhum benefício quando temos períodos de tempo generosos para paradas programadas. Isso impede que qualquer visualização materializada seja criada pelo usuário editado se ele selecionar um objeto não editado de outro usuário. Isso é necessário para um projeto com vencimento em breve e um data warehouse em um futuro próximo.

oracle oracle-11g-r2
  • 1 respostas
  • 3019 Views
Martin Hope
kevinskio
Asked: 2013-05-24 09:40:31 +0800 CST

onde está definido o fuso horário da sessão oracle?

  • 3

Eu tenho uma tabela de registro

CREATE TABLE EMAIL_LOGGING
(
  ID               NUMBER(9)                    NOT NULL,
  SEND_DATE        TIMESTAMP(6)                 DEFAULT LOCALTIMESTAMP        NOT NULL,
  SEND_TO_USER_ID  NUMBER(9)                    NOT NULL);

e um pacote que insere nele com este fragmento:

  INSERT INTO EMAIL_LOGGING ("ID",SEND_DATE, SEND_TO_USER_ID)
       VALUES (NULL, LOCALTIMESTAMP,send_to_user_in);

Quando isso é chamado de um DBMS_JOB de um pacote, ele insere o horário de Greenwich. Quando é chamado de um DBMS_JOB de outro pacote que usa um db_link para outro banco de dados ele insere corretamente a hora local.

Acho que isso é causado pelo fuso horário do cliente sendo usado, mas adicionar isso ao trabalho não resolveu:

execute immediate 'alter session set time_zone=local';

Claro que a melhor solução é mudar para DBMS_Scheduler, mas até que isso seja feito, como posso garantir que o timestamp inserido seja a hora local?

select * from v$version where banner like 'Oracle%';
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
SELECT DBTIMEZONE FROM DUAL;
+00:00
SELECT SESSIONTIMEZONE from dual;
-04:00
oracle oracle-11g-r2
  • 1 respostas
  • 6640 Views
Martin Hope
kevinskio
Asked: 2013-03-15 06:10:13 +0800 CST

Imponha a integridade dos dados com uma tabela recursiva

  • 6

Eu tenho um esquema de banco de dados oracle 11g existente que funciona com um aplicativo da web. Estou planejando uma expansão para o aplicativo para que um serviço da Web possa fazer operações de dados no banco de dados. Como parte do planejamento, percebi que não há verificações de integridade de dados nas relações pai/filho, o que tornaria problemático permitir que outros aplicativos trabalhem com a tabela. Estou planejando fazer a validação no serviço da web, mas a melhor prática é ter validação no banco de dados e no serviço da web.

--the base lookup table has a table with text values that is not shown.
--Example Red, Green, 
CREATE TABLE PROPERTY
(
  ID                        NUMBER(9)           NOT NULL, --PRIMARY KEY
  TENANT_ID                 NUMBER(9)           NOT NULL
)
-- a property may or may not have a parent property. 
--Example "Weight" of an item is a child of the "Shipping Weight"
CREATE TABLE PROPERTY_DEPENDENCY  --PRIMARY KEY PROPERTY_ID,PROPERTY_TYPE_ID
(
  PROPERTY_ID               NUMBER(9)           NOT NULL,
  PARENT_PROPERTY_ID        NUMBER(9),
  PROPERTY_TYPE_ID          NUMBER(9)           NOT NULL,
  ACTIVE                    NUMBER(1)           NOT NULL
)
--examples "Item Colour", "Item Trim Colour","Shipping Weight", "Weight"
CREATE TABLE PROPERTY_TYPE
(
  ID                        NUMBER(9)           NOT NULL,  --PRIMARY KEY
  VALUE                     VARCHAR2(200 BYTE)  NOT NULL,
  PROPERTY_TYPE             NUMBER(10)          DEFAULT 1   NOT NULL
)

--and the table that you insert and update into
CREATE TABLE CASE_PROPERTY
(
  ID                        NUMBER(9)           NOT NULL, --PRIMARY KEY
  PARENT_ID                 NUMBER(9),          --constraint on PROPERTY
  CASE_ID                   NUMBER(9)           NOT NULL,--foreign key
  PROPERTY_ID               NUMBER(9),          --constraint on PROPERTY
  PROPERTY_TYPE_ID          NUMBER(9)           NOT NULL --constraint on PROPERTY_TYPE
)

Estes são os problemas que identifiquei:

  • você pode inserir em CASE_PROPERTY e tornar uma propriedade seu próprio pai ou avô
  • você pode inserir o PROPERTY_TYPE_ID errado para um PROPERTY_ID em CASE_PROPERTY
  • você pode inserir em CASE_PROPERTY um PARENT_ID que não faz sentido para um PROPERTY_TYPE_ID

Posso adicionar uma restrição de verificação para que PARENT_ID <> PROPERTY_IDvocê não possa ser pai de si mesmo.

Edição 3: O problema real é que as tabelas não são normalizadas corretamente, o que é ótimo para relatórios, mas difícil para validação de dados. CASE_PROPERTY.PROPERTY_TYPE_IDdeve ser sempre igual ao valor em PROPERTY_DEPENDENCY.PROPERTY_TYPE_IDmas não sei como validar isso.

Existem outras maneiras além de gatilhos para impor a integridade dos dados CASE_PROPERTY?

Editar: vou montar um exemplo completo. Se eu adicionasse restrições de chave estrangeira PROPERTY_DEPENDENCY, verificaria se apenas propriedades com pais foram inseridas, mas seriam os pais corretos?

Editar 2: Aqui está um exemplo completo das inserções permitidas. As duas últimas inserções são exemplos de dados que são permitidos, mas não deveriam ser.

ALTER TABLE CASE_PROPERTY ADD  CONSTRAINT CASE_PROPERTY_R01  FOREIGN
KEY (PARENT_ID)  REFERENCES CASE_PROPERTY (ID)  ENABLE  VALIDATE

Insert into PROPERTY    (ID, TENANT_ID)  Values    (2, 1); 
Insert into PROPERTY    (ID, TENANT_ID)  Values    (3, 1); 
Insert into PROPERTY    (ID, TENANT_ID)  Values    (4, 1); 

Insert into PROPERTY_TYPE    (ID, 
    VALUE, PROPERTY_TYPE)  Values    (10, 'Colour', 2);    
Insert into PROPERTY_TYPE    (ID, 
    VALUE, PROPERTY_TYPE)  Values    (11, 'Trim Colour', 1);    
Insert into PROPERTY_TYPE    (ID, 
    VALUE, PROPERTY_TYPE)  Values    (12, 'Shipping Weight', 1); 
Insert into PROPERTY_TYPE    (ID, 
    VALUE, PROPERTY_TYPE)  Values    (13, 'Weight', 3); 

Insert into PROPERTY_DEPENDENCY    (PROPERTY_ID, 
    PARENT_PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (4, 3, 11); 
Insert into PROPERTY_DEPENDENCY    (PROPERTY_ID, 
    PARENT_PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (3, NULL, 10);
Insert into PROPERTY_DEPENDENCY    (PROPERTY_ID, 
    PARENT_PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (1, NULL, 12);    
Insert into PROPERTY_DEPENDENCY    (PROPERTY_ID, 
    PARENT_PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (2, 1, 13); 

--example of a property validated data insert

--item 201 with type 13 is the child of item 200 of type 12
Insert into CASE_PROPERTY    (ID, 
    PARENT_ID, CASE_ID, PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (200, NULL, 3000, 1, 12); 
Insert into CASE_PROPERTY    (ID, 
    PARENT_ID, CASE_ID, PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (201, 200, 3000, 2, 13); 

--bad data inserts

-- a property is parent to itself with an incorrect property_type_id 

Insert into CASE_PROPERTY    (ID, 
    PARENT_ID, CASE_ID, PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (202, 202, 4000, 3, 10);  
--should be 202, null,4000,3,10 

--a property is inserted with a parent that is not allowed 

Insert into CASE_PROPERTY    (ID, 
    PARENT_ID, CASE_ID, PROPERTY_ID, PROPERTY_TYPE_ID)  Values    (203, 200, 4000, 2, 13);  
--parent property should be 1 not 2
oracle database-design
  • 1 respostas
  • 1362 Views
Martin Hope
kevinskio
Asked: 2012-11-24 06:13:31 +0800 CST

Forçar a precisão do número em uma exibição com União

  • 0

Estou usando Entity Framework e Oracle. O ODAC da Oracle parece ter um bug conhecido em que os dados do tipo NUMBER são convertidos para Int64 pelo Entity Framework. Eu pensei que uma visão me ajudaria, mas

CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
union
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual

Quando você olha para a exibição, o tipo de dados é Número sem precisão para todos eles. Isso parece ser uma consequência da UNIÃO como apenas

CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual

produz NUMBER, NUMBER(1), NUMBER como os tipos de dados

Existe uma solução alternativa para forçar o Oracle a derivar uma precisão em uma visão com um UNION?

Editar: @Phil pergunta qual é o resultado desejado. Ele está certo de que o Entity Framework precisa ter uma precisão para trabalhar, portanto, o tipo de dados desejado da amostra acima seria NUMBER (1)

Editar: @Phil para esta versão Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Produção no Windows de 32 bits, uma visualização com uma união fornece uma visualização que possui NUMBER sem precisão. Entity Framework interpreta isso como int 64.

Estou procurando uma solução que mostre os NÚMEROS com uma precisão que o Entity Framework possa entender como um inteiro de 32 bits. Qualquer precisão de NUMBER(1) a NUMBER (9) faz o trabalho.

oracle oracle-11g-r2
  • 1 respostas
  • 2529 Views
Martin Hope
kevinskio
Asked: 2012-10-30 07:02:28 +0800 CST

Armadilhas de criar uma restrição de chave estrangeira em uma tabela do sistema?

  • 1

Eu tenho várias tabelas que contêm metadados sobre as tabelas e pacotes no sistema. Este destina-se a ser um recurso para analistas e documentação, portanto, não é usado para criar dados.

Uma das colunas que aparecem em algumas dessas tabelas mostra o usuário ou "Proprietário" do objeto. Os dados devem conter apenas contas de usuário no banco de dados e parece uma boa prática ter uma restrição de chave estrangeira das tabelas de metadados para sys.user$.

No entanto, sempre abordei tabelas SYS com cautela e fiquei surpreso ao ver que não há chave primária para SYS.USER$ apenas um índice exclusivo na coluna NAME.

Tanto quanto sei, não posso criar uma chave estrangeira em sys.all_users. Ou eu poderia criar uma tabela como Select username, user_id from all_users para que a entrada de dados seja verificada na inserção, mas tudo parece muito desajeitado.

Existe uma maneira melhor de acessar uma tabela que possui uma chave primária e os nomes de todos os esquemas?

Acabei adicionando uma restrição de verificação como uma solução codificada que não mexe com os arquivos do sistema. Ainda acho que deve haver uma maneira de obter uma lista dos esquemas ou "proprietários" que podem ser usados ​​como uma restrição de chave estrangeira.

@Phil, por que você não publica seu comentário como resposta?

oracle oracle-11g-r2
  • 1 respostas
  • 291 Views
Martin Hope
kevinskio
Asked: 2012-09-18 05:35:33 +0800 CST

Como instalar o Oracle 10g Express e 11g Enterprise na mesma máquina

  • 4

Tenho que continuar mantendo um banco de dados Oracle 8i que recebe informações (cerca de 20 Inserts e Updates por dia) de um banco de dados 9i. Estou atualizando o banco de dados 9i para 11g, que não suporta links de banco de dados para 8i.

O plano é linkar do Oracle 11g para o Oracle 10 XE e depois para o 8i e torcer para um dia não ter que fazer isso.

Já encontrei artigos observando que a instalação do XE após qualquer outra versão não é recomendada.

Alguém instalou o XE e outra versão do Oracle lado a lado? Que ordem foi usada e quais problemas foram encontrados?

Editar: @George3 algumas postagens do fórum indicam que você pode usar drivers JDBC para conectar 11g e 8i. Por favor, adicione alguns detalhes e poste como resposta.

oracle oracle-11g-r2
  • 2 respostas
  • 3788 Views
Martin Hope
kevinskio
Asked: 2012-09-14 07:03:58 +0800 CST

Essa lógica de negócios pode ser aplicada por uma restrição de banco de dados condicional?

  • 7

Estou tentando duplicar a lógica de negócios incorporada a um aplicativo da Web C# da intranet no banco de dados para que outros bancos de dados possam acessá-lo e trabalhar sob as mesmas regras. Essa "regra" parece difícil de implementar sem o uso de hacks.

CREATE TABLE CASE_STAGE
(
  ID                        NUMBER(9)           PRIMARY KEY NOT NULL, 
  STAGE_ID                  NUMBER(9)           NOT NULL,
  CASE_PHASE_ID             NUMBER(9)           NOT NULL,
  DATE_CREATED              TIMESTAMP(6)        DEFAULT CURRENT_TIMESTAMP     NOT NULL,
  END_REASON_ID             NUMBER(9),
  PREVIOUS_CASE_STAGE_ID    NUMBER(9),
  "CURRENT"                 NUMBER(1)           NOT NULL,
  DATE_CLOSED               TIMESTAMP(6)        DEFAULT NULL
);

e

CREATE TABLE CASE_RECOMMENDATION
(
  CASE_ID                   NUMBER(9)           NOT NULL,
  RECOMMENDATION_ID         NUMBER(9)           NOT NULL,
  "ORDER"                   NUMBER(9)           NOT NULL,
  DATE_CREATED              TIMESTAMP(6)        DEFAULT CURRENT_TIMESTAMP     NOT NULL,
  CASE_STAGE_ID             NUMBER(9)           NOT NULL
);

ALTER TABLE CASE_RECOMMENDATION ADD (
  CONSTRAINT SYS_C00000
 PRIMARY KEY
 (CASE_ID, RECOMMENDATION_ID));

A lógica de negócios pode ser resumida como

When Inserting into CASE_STAGE
If CASE_STAGE.STAGE_ID = 1646
THEN
 CASE_STAGE.PREVIOUS_STAGE_ID must be found in CASE_RECOMMENDATION.CASE_STAGE_ID

Essa lógica pode ser incorporada em uma restrição Check ou um gatilho feio é o único caminho?

Editar:

  • Para todos os valores de CASE_STAGE.STAGE_ID, o valor de PREVIOUS_STAGE_ID deve ser encontrado em CASE_STAGE.ID
  • O aplicativo não permite exclusões de CASE_RECOMMENDATION, uma vez que não é mais CURRENT (ou seja, quando o valor de CASE_STAGE.CURRENT é 0, este estágio é fechado e não pode mais ser alterado, quando = 1, este é o estágio, ou linha, que está ativo e pode ser alterado agora.)

Editar: usar todas as excelentes ideias e comentários aqui é uma solução funcional para esse problema

CREATE MATERIALIZED VIEW LOG ON CASE_STAGE
TABLESPACE USERS
STORAGE    (
            BUFFER_POOL      DEFAULT
           )
NOCACHE
LOGGING
NOPARALLEL
WITH ROWID;

CREATE MATERIALIZED VIEW LOG ON CASE_RECOMMENDATION
TABLESPACE USERS
STORAGE    (
            BUFFER_POOL      DEFAULT
           )
NOCACHE
LOGGING
NOPARALLEL
WITH ROWID;

CREATE MATERIALIZED VIEW CASE_RECOMMENDATION_MV REFRESH FAST ON COMMIT AS
  SELECT
         cr.ROWID cr_rowid, --necessary for fast refresh
         cs.ROWID cs_rowid, --necessary for fast refresh
         cr.case_id,
         cs.stage_id,
         cr.recommendation_id
         cr.case_stage_id,
         cs.previous_case_stage_id
  FROM   CASE_RECOMMENDATION cr,
         case_stage cs
  WHERE  cs.previous_case_stage_id = cr.case_stage_id (+)
  AND CS.PREVIOUS_CASE_STAGE_ID IS NOT NULL
  AND EXTRACT (YEAR FROM CS.DATE_CREATED) > 2010 --covers non conforming legacy data
  AND CR.RECOMMENDATION_ID IS NULL
  AND cs.stage_id =1646;  
--this last line excludes everything but problem cases due to the outer join

ALTER TABLE CASE_RECOMMENDATION_MV ADD CONSTRAINT CASE_RECOMMENDATION_ck CHECK (
    (previous_case_stage_id IS NOT NULL AND case_stage_id IS NOT NULL)
);

Ao inserir um estágio 1646 usando pacotes existentes sem recomendação, o erro era

ORA-12008: error in materialized view refresh path
ORA-02290: check constraint (APPBASE.CASE_RECOMMENDATION_MV_C01) violated
ORA-06512: at line 49

Tarefa concluída! Não é o objetivo de uma visão materializada, mas é melhor do que um gatilho.

oracle database-design
  • 4 respostas
  • 1235 Views
Martin Hope
kevinskio
Asked: 2012-02-13 14:36:58 +0800 CST

privilégios mínimos necessários para um usuário

  • 5

Estou configurando um banco de dados 10g Express no Windows 2003 que será o back-end de um servidor web público. Há muitas outras coisas a fazer para fortalecer o banco de dados, mas um bom lugar para começar são os privilégios do usuário. Sei que o usuário precisa dos privilégios Conectar e Criar sessão. Todas as tabelas, procedimentos e pacotes são de propriedade deles.

Existem outros privilégios necessários para operações CRUD básicas em seu próprio esquema?

oracle best-practices
  • 1 respostas
  • 7071 Views
Martin Hope
kevinskio
Asked: 2011-12-17 12:07:32 +0800 CST

como verificar se o valor da próxima sequência pode ser usado como uma nova chave primária

  • 1

Eu tenho muitas tabelas com um gatilho anexado assim

BEFORE INSERT
ON BRULES 
...snip...
  if inserting and :new.ID is NULL then
  SELECT BRULES_SEQ.nextval into :new.ID FROM DUAL;
  end if;

Devido a um estilo de codificação interessante, o aplicativo faz inserções em algumas tabelas com um ID nulo que dispara o gatilho e usa a sequência existente. Para outras tabelas ele pega o ID do registro mais novo e adiciona 1. Neste caso a sequencia não é utilizada e fica fora de sincronia com o número de registros da tabela.

Como saber se o próximo valor de uma sequência é válido para um insert? Eu poderia ler todos os gatilhos para o nome da sequência e, em seguida, fazer algum SQL dinâmico para comparar o ID máximo e o valor atual da sequência, mas parece um pouco desajeitado.

oracle oracle-11g-r2
  • 2 respostas
  • 3995 Views
Martin Hope
kevinskio
Asked: 2011-11-30 07:45:43 +0800 CST

Link do banco de dados Oracle 10g Express para Oracle 8i

  • 6

Atualizei uma instalação 9i para 11g com apenas um problema. Links de banco de dados entre 11g e nosso banco de dados legado 8i não são mais suportados. Tenho que transferir dados de 11g para 8i duas ou três vezes por dia, então pensei que seria possível usar 10g express para vincular os bancos de dados. Os dados seriam criados em 11g, gravados em uma tabela em 10g e depois gravados em 8i. (Concordo que esta não é a solução mais elegante e posso melhorá-la usando tabelas de filas avançadas).

O 10g express oferece suporte a links de banco de dados para o Oracle 8i?

Editar: obrigado pelo link para a documentação do Oracle. Alguém já fez isso com 10g express?

Edit: O banco de dados 8i é Oracle8i Enterprise Edition Release 8.1.7.0.0 - Produção O intermediário seria o 10g express para windows O banco de origem é Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Produção

oracle oracle-11g-r2
  • 1 respostas
  • 2423 Views
Martin Hope
kevinskio
Asked: 2011-11-28 14:11:26 +0800 CST

Tabelas de decisão no banco de dados: uma solução válida?

  • 2

Tenho que estender um aplicativo de gerenciamento de casos .Net 4/C# que usa o Oracle 11g para lidar com casos legais.

Tenho um orçamento mínimo, minha experiência com Oracle e um desenvolvedor C# muito júnior para fazer isso. O módulo adicional será utilizado por no máximo 20 pessoas em uma intranet.

As regras existentes são geralmente assim:

  • para completar uma ação deve haver propriedade a, propriedade b, propriedade c presente em uma tabela com uma relação claramente definida com a tabela onde a nova inserção deve ser validada
  • Para casos legais, novas regras de negócios são mais como "tudo é uma exceção" Mais formalmente reformulado, pois as entradas de dados em outras tabelas podem ou não afetar o resultado de transações futuras com base em condições desconhecidas

O aplicativo existente usa o Microsoft Workflow para implementar as regras de negócios. Isso provou ser pesado, quase inutilizável para nós. Drools e seus equivalentes comerciais são igualmente complicados e não atingirão o objetivo de permitir que os gerentes entendam sua lógica de negócios.

  • seria um benefício se a lógica de negócios pudesse ser vista pelos usuários em um relatório sem a necessidade de ler comentários ou código C#.
  • a lógica pode ser adicionada ou desabilitada rapidamente sem desativar o aplicativo da web
  • bastante fácil de implementar, dado que temos orçamento limitado e conjuntos de habilidades

Isso me traz à velha ideia de manter a lógica de negócios no banco de dados como uma série de tabelas de decisão. Isso ainda é feito ou tem a ideia de que a eficiência de manter a lógica de negócios no aplicativo é obviamente melhor?

Editar: o fluxo de trabalho é implementado como um serviço. Meu entendimento é que ele visava fluxos de trabalho de longa duração. No nosso caso, os usuários pressionam o botão salvar e o fluxo de trabalho é executado. Nossos problemas são
- dolorosamente lento para desenvolver em nossas máquinas, congela, trava
- difícil de depurar
- de vez em quando o gerenciador de fluxo de trabalho lança erros por algumas horas sem motivo que possamos encontrar
- toque em um fluxo de trabalho e você terá que alterar 14 outros arquivos
- o aplicativo é lento para os usuários, parte dos quais rastreamos os fluxos de trabalho.

A validação no banco de dados começa a parecer boa porque a validação é toda baseada nos dados do banco de dados.
@catcall Existem 10 ou 12 advogados que não usam o aplicativo, mas têm 8 ou 10 administradores para fazer a entrada de dados.
Acabamos de atualizar o desktop, mas o chefe não acredita que os programadores contratados devam ter equipamentos melhores do que funcionários. Portanto, o Windows XP com 4 núcleos e 3 GB de RAM é o melhor que podemos fazer. Investigarei se existe alguma classificação de tipos de lógica de negócios. Algumas delas podem ser feitas de forma mais eficiente no aplicativo. Outros tipos podem ser alterados e configurados com mais facilidade no lado do banco de dados.

best-practices oracle-11g-r2
  • 1 respostas
  • 831 Views
Martin Hope
kevinskio
Asked: 2011-11-01 11:12:03 +0800 CST

índice baseado em função como uma chave única condicional?

  • 1

Eu tenho uma tabela de pesquisa que possui uma chave primária PK_ID gerada e também possui chaves primárias de três ou quatro outras tabelas na coluna FK_ID

CREATE TABLE METADATA  
(  
  PK_ID        NUMBER(10)                       NOT NULL,  
  OBJ_OWNER    VARCHAR2(35 BYTE)                NOT NULL,  
  OBJ_PACKAGE  VARCHAR2(35 BYTE),  
  OBJ_NAME     VARCHAR2(35 BYTE)                NOT NULL,  
  OBJ_TYPE     NUMBER(10)                       NOT NULL,  
  FK_ID        NUMBER(10)                       NOT NULL  
);

Por exemplo, quando OBJ_TYPE = 1, cada FK_ID deve ser exclusivo para esse valor de OBJ_TYPE.

Acho que posso fazer isso com um índice baseado em função, mas o link para a discussão de Tom Kyte sobre isso está quebrado em alguns sites e não tenho certeza de como.
(Oráculo 9.2.0.8)

Um índice composto fará o trabalho. Um bônus seria se um índice baseado em função pudesse ser usado como uma chave estrangeira para as outras tabelas. Isso é possível?

oracle constraint
  • 1 respostas
  • 5306 Views
Martin Hope
kevinskio
Asked: 2011-09-15 12:12:26 +0800 CST

Consequências da alteração de NLS_TIMESTAMP_FORMAT

  • 4

Eu administro um banco de dados 9.2.0.8 onde o NLS_TIMESTAMP_FORMATestá definido como 'DD-MON-RR HH.MI.SSXFF AM';.

Isso leva a resultados ímpares ao usar a CAST TO TIMESTAMPfunção:

select CAST('14-SEP-2011' AS TIMESTAMP) "DATE" from dual;
----------
14-SEP-2020 11:00:00.000000 AM  

Se eu alterar o NLS_TIMESTAMP_FORMATto 'DD-MON-YYYY HH.MI.SSXFF AM', então estou pronto para ir.

Alterar o NLS_TIMESTAMP_FORMATparâmetro no banco de dados YYYYteria alguma consequência?

oracle configuration
  • 2 respostas
  • 5435 Views
Martin Hope
kevinskio
Asked: 2011-08-26 08:13:53 +0800 CST

Você pode acionar uma ação quando uma visualização é criada?

  • 2

É possível criar um gatilho que dispara quando uma exibição é criada em um esquema de usuário?

Desejo criar uma tabela de metadados que conterá todas as visualizações e uma listagem contendo o que elas devem fazer. Neste sistema (Oracle 9.2.0.8) existe apenas um usuário que possui o privilégio create view para facilitar.

A sequência de eventos deve ser algo como view is created trigger dispara e insere o nome da view na tabela da tabela de metadados

Eu poderia escrever algum pacote para criar visualizações usando sql dinâmico, mas isso parece um pouco exagerado

oracle
  • 1 respostas
  • 768 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve