Olá Evandro, tudo bem?
Os dois primeiros erros ocorrem pois o nome da constraint está "junto" do tipo da constraint.
No primeiro: PRODUTO_EXERCICIO_COD_PK junto da palavra PRIMARY:
..ADD CONSTRAINT PRODUTO_EXERCICIO_COD_PKPRIMARY KEY (COD);
No segundo: PRODUTO_VENDA_EXERCICIO_ID_PK da palavra PRIMARY:
..ADD CONSTRAINT PRODUTO_VENDA_EXERCICIO_ID_PKPRIMARY KEY (ID);
Separando:
ALTER TABLE PRODUTO_EXERCICIO
ADD CONSTRAINT PRODUTO_EXERCICIO_COD_PK
PRIMARY KEY (COD);
ALTER TABLE PRODUTO_VENDA_EXERCICIO
ADD CONSTRAINT PRODUTO_VENDA_EXERCICIO_ID_PK
PRIMARY KEY (ID);
table PRODUTO_EXERCICIO alterado.
table PRODUTO_VENDA_EXERCICIO alterado.
Já o terceiro erro (criação da Foreign Key), além de ocorrer a mesma observação dos casos acima (nome da constraint estar "junto" do tipo da constraint), indica que o nome da constraint é muito longo:
Relatório de erros -
Erro de SQL: ORA-00972: identificador muito longo
00972. 00000 - "identifier is too long"
*Cause: An identifier with more than 30 characters was specified.
*Action: Specify at most 30 characters.
ALTER TABLE PRODUTO_VENDA_EXERCICIO ADD CONSTRAINT
PRODUTO_VENDA_EXERCICIO_PRODUTO_EXERCICIO_COD
FOREIGN KEY (COD_PRODUTO) REFERENCES PRODUTO_EXERCICIO (COD);
De fato o identificador PRODUTO_VENDA_EXERCICIO_PRODUTO_EXERCICIO_COD possui 45 caracteres.
Diminuindo, o comando foi aceito:
ALTER TABLE PRODUTO_VENDA_EXERCICIO ADD CONSTRAINT
PROD_VENDA_EXER_PROD_EXER_FK
FOREIGN KEY (COD_PRODUTO) REFERENCES PRODUTO_EXERCICIO (COD);
table PRODUTO_VENDA_EXERCICIO alterado.