#오라클

uutopiauutopia· 5년

질문오라클에서 테이블이 없으면 CREATE 있으면 ALTER 하는 방법

개발자이긴 한데 오라클에 대한 지식이 좀 부족합니다. 고객사에 전달할 자회사 패키지의 DB 생성 Script를 작성중인데 고객사의 현재 테이블 상황이 어떤지 알 수가 없습니다. 우리테이블이 이미 존재할 수도 있고 존재하지 않을 수도 있습니다. 존재할 경우 테이블을 ALTER해야 하고 존재하지 않을 경우 CREATE 해야 합니다. 이걸 하나의 Script로 만드는 방법이 있을까요?   즉, Script를 DB툴에서 실행 시 테이블이 존재하지 않으면 CREATE문을 실행해서 테이블을 생성하고, 이미 존재하면 ALTER를 실행해서 테이블의 구조를 바꾸는 쿼리를 만들 수 있나요? 하나의 쿼리로 만들어 지면 제일 좋겠지만 불가능 하다면 PL/SQL을 써서 IF문을 쓰거나 다양한 방법으로 시도 가능합니다.
2.7K
2
0
kimho
kimho·2020-09-07
원하시는 해결을 위해 많은 상용 데이터베이스에서는 CRAETE OR REPLABE TABLE 이라는 구문을 제공하지만 오라클에서는 테이블에 대하여 CREATE OR REPLACE 구문을 제공하지 않습니다.   따라서 PL/SQL 등을 이용하여 별도로 작성해야 할 것 같습니다. 참고로 아래는 테이블 칼럼 존재 여부를 판단해서 칼럼을 추가하는 ...
끼뤼끼뤼· 6년

질문오라클 expdp/impdp 사용시 중복 캐릭터셋 에러

오라클 11g에서 오라클 19c로 shcama 혹은 db를 이전시키려 합니다 (둘다 리눅스 서버). expdp 커맨드를 통해 11g의 dump를 받으려고 하는데 아래와 같은 에러가 발생합니다. Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORA-39006: internal error ORA-39065: unexpected master process exception in DISPATCH ORA-00600: internal error code, arguments: [kokle_lob2lob13:input mismatch], [1], [], [], [], [], [], [], [], [], [], [] ORA-39097: Data Pump job encountered unexpected error -600   인터넷에 검색해보니 중복된 캐릭터 셋이 원인이 될 수 있다는 글을 발견해 아래의 코드를 구동시켜 캐릭터 셋을 확인했습니다.   select distinct(nls_charset_name(charsetid)) CHARACTERSET, decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'), 9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'), 96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'), 112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112) order by types_used_in; 그 결과 11g에서 아래의 값을 얻었습니다. CHARACTERSET  TYPES_USED_IN US7ASCII CHAR UTF8 CHAR US7ASCII CLOB AL16UTF16 NCHAR AL16UTF16 NCLOB AL16UTF16 NVARCHAR2 US7ASCII VARCHAR2 UTF8 VARCHAR2   1. 여기서 11g 캐릭터 셋에 어떤 조치를 취해줘야 할까요? 2. 19c로 복원시에 문제가 없으려면 캐릭터셋에 대하여 고려해줘야 할 부분이 있을까요?   조언 부탁드립니다.  
2.3K
0
겍코겍코· 7년

[근조] 오라클, 인터넷을 죽이다 |

[근조] 오라클, 인터넷을 죽이다 - Byline Network 오라클과 구글의 자바 API 저작권 전쟁에서 미국 연방순회항소법원이 끝내 오라클의 손을 들어줬다.... byline.network 오라클과 구글의 자바 API 저작권 전쟁에서 미국 연방순회항소법원이 끝내 오라클의 손을 들어줬다. 이번 법정 다툼에서 패배한 구글은 오라클에 수조 원을 배상해야할 지도 모른다. 그러거나말거나. 돈 많은 구글을 걱정할 필요는 없다. 중요한 것은 이 판결이 인터넷 산업, 나아가 IT산업에 어떤 영향을 미칠 것인가 하는 점이다. 언론은 이번 분쟁을 '자바 전쟁'이라고 표현한다. 구글이 자바의 특허권과 저작권을 침해했다는 오라클의 주장으로 시작된 분쟁이기 때문이다. 그러나 이번 자바 법적 분쟁은 자바 전쟁이라고 불리면 안된다. 이는 문제를 축소시키는 표현이다. 이 재판의 핵심은 자바가 아니다. 이번 재판은 자바가 아니라 API에 대한 것이었다. API에 저작권을 인정하느냐마느냐, 저작권이 있다고 하더라도 공정사용 대상이냐 아니냐가 핵심이다. 공정사용이란 저작권이 있는 저작물이라도 허가없이 이용할 수 있는 권리를 말한다. API란 프로그램이 서로 통신할 수 있는 규격이다. 프로그래밍 언어에서는 일종의 명령처럼 이용된다. 최종 저작물을 만들기 위한 과정에 사용되는 도구가 API인데, 여기에 저작권을 부여한다면 자유로운 창작이 방해를 받을 수밖에 없다. 전자프론티어재단은 이번 분쟁에 대해 "API는 일반적으로 프로그램이 서로 통신하기 위한 것으로 프로그램을 구현하는 코드와는 다르다"면서 "API를 저작권으로 취급하는 것은 상호운용성과 혁신에 매우 부정적인 영향을 미칠 것"이라고 논평한 바 있다. IT의 발전은 API를 개선하면서 이뤄졌다. 현존하는 거의 모든 프로그램과 온라인 서비스는 개방된 API를 기반으로 만들어졌다고 해도 과언이 아니다. 예를 들어 지구상 거의 모든 온라인 기업이 사용하는 운영체제인 리눅스를 생각해보자. 리눅스는 어날 갑자기 하늘에서 뚝 떨어진 것일까? 리누스 토발즈라는 천재가 하얀 백지 위에 하나씩 코드를 써서 갑자기 '짠' 하고 세상에 내보인 것일까? 아니다. 리눅스는 유닉스를 기반으로 만들어졌다. 리눅스가 유닉스 기반으로 만들여졌다는 것은..
1.2K
2
0