[ORACLE]ALTER COLUMN

Database 2017.10.17 08:34 Posted by 애플자라

-- 일반 컬럼수정
ALTER TABLE EM_MMT_TRAN
MODIFY RECIPIENT_NUM VARCHAR2(16 BYTE)

 

-------------------------------------------------------------------------------------


-- 일반 컬럼수정(NOT NULL)
-- ORA-01442: column to be modified to NOT NULL is already NOT NULL
ALTER TABLE EM_MMT_TRAN
MODIFY CALLBACK VARCHAR2(16 BYTE) NOT NULL

 

-- DISABLE
ALTER TABLE EM_MMT_TRAN DISABLE CONSTRAINT SYS_C0037363 CASCADE

 

--> 일반 컬럼 수정문 실행

 

-- ENABLE
ALTER TABLE EM_MMT_TRAN ENABLE CONSTRAINT SYS_C0037363 

 

SYS_C0037363 Check    Enabled        Not Deferrable    Immediate    Validated            1    "CALLBACK" IS NOT NULL

 

[MYSQL]mysqldump 백업

Database 2016.09.29 20:02 Posted by 애플자라

■ mysqldump 사용하는 방법

 

전체 데이터베이스 또는 특정 데이터베이스를 백업하거나 특정테이블만 백업 할 수 있다.

 

▷ 전체 데이터베이스 백업

 

- 서버의 전체 데이터베이스를 alldatabase.sql로 백업한다.

 

mysqldump -uroot -p -A > alldatabase.sql

 

▷ 특정 데이터베이스 백업

 

- test 데이터베이스만 백업한다.

 

mysqldump -uroot -p test > testdb.sql

 

▷ 특정 테이블만 백업

 

- test 데이터베이스의 board 테이블만 백업 한다.

 

mysqldump -uroot -p test board > testdbboard.sql

 

 

※ 특정 데이타베이스의 테이블생성(schema) 정보만 백업하는 방법

 

mysqldump -uroot -p --no-data test > testdbschema.sql

 

- mysqldump-? 명령어로 여러 옵션을 확인 할 수 있다.

 


▷ InnoDB에서 트리거 , 프로시져, 함수 포함하여 백업하기


  - 트리거는 default값으로 백업이 실행되나 저장 프로시져는 백업되지 않는다. 


  - 저장 프로시져가 백업되게 하기 위해서는 옵션에  --routines 을 넣어줘야 한다.  


mysqldump -u계정 -p비밀번호 --routines 특정DB명 > 함수프로시져트리거.sql


(예) mysqldump -uroot -ppassword --routines  northwind > northwind.sql

 

 

   ※ 트리거 , 프로시져, 함수 만 백업하기 - 쿼리문만  


 mysqldump -u계정 -p비밀번호 --routines  --no-create-info --no-data --no-create-db --skip-opt 특정DB명 > 함수프로시져트리거.sql 

(예) mysqldump -uroot -ppassword --routines --no-create-info --no-data --no-create-db --skip-opt northwind > northwind_only_sp_trigger_function.sql

이렇게 트리커 프로시져 함수만 백업한 경우는 반드시 Data와 테이블 스키마를 별도로 백업 받아 줘야 합니다




출처 - http://bizadmin.tistory.com/entry/MySQL-%EB%B0%B1%EC%97%85-%EB%B0%8F-%EB%B3%B5%EA%B5%AC%ED%95%98%EA%B8%B0

[MYSQL]테이블 카운트, rows

Database 2016.09.20 09:35 Posted by 애플자라

-- 테이블 카운트

select count(*) from information_schema.tables


-- 테이블 row수 카운트

select TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS,TABLE_TYPE from information_schema.tables

[ORACLE]조인 결과로 테이블 UPDATE하기

Database 2014.10.29 16:54 Posted by 애플자라

UPDATE TB_MARKETING AA

SET (AGENCY_ID) = (SELECT AGENCY_ID FROM TEMP_GROUP B WHERE B.GROUP_NAME =AA.GROUP_NAME)

 

 

SELECT E.ID, E.SUBID, T.SUBID

UPDATE TB_MARKETING SET SUBID = T.SUBID

FROM TB_MARKETING E

INNER JOIN #TEMP_GROUP T ON ( E.SEQ = T.SEQ )

[ORACLE]Tablespace별로 용량 체크하기

Database 2012.12.05 14:40 Posted by 애플자라

SELECT 
    SUBSTR(MAX(A.TABLESPACE_NAME),1,16) "Tablespace",
    --TO_CHAR(A.FILE_ID, '9999') "File ID",
    SUBSTR(MAX(A.FILE_NAME),1,43) "Data file",
    SUBSTR(MAX(A.STATUS),1,10) "Status",
    MAX(A.BYTES)/1024/1024 "TOTAL SIZE(Mb)" ,
    (MAX(A.BYTES)-NVL(SUM(B.BYTES),0))/1024/1024 "USED SIZE(Mb)",
    NVL(SUM(B.BYTES),0)/1024/1024 "FREE SIZE(Mb)",    
    --MAX(A.BLOCKS)-NVL(SUM(B.BLOCKS),0) "USED BLOCKS",
    TO_CHAR((MAX(A.BYTES)-NVL(SUM(B.BYTES),0))*100/MAX(A.BYTES),'990.99')||'%' "USED USAGE",
    --NVL(SUM(B.BLOCKS),0) "FREE BLOCKS",
    TO_CHAR(NVL(SUM(B.BYTES),0)*100/MAX(A.BYTES),'990.99')||'%' "FREE USAGE"
    --MAX(A.BLOCKS) "TOTAL BLOCKS"
FROM DBA_DATA_FILES A, DBA_FREE_SPACE B
WHERE A.FILE_ID=B.FILE_ID(+)
--AND   A.FILE_ID IN ('6','7','8')
GROUP BY A.FILE_ID
ORDER BY 1,2;

 

 

SELECT U.TABLESPACE_NAME "테이블 스페이스"
, U.BYTES / 1048576 "크기(mb)"
, (U.BYTES - SUM(NVL(F.BYTES,0))) / 1048576 "사용됨(mb)"
, (SUM(NVL(F.BYTES,0))) / 1048576 "남음(mb)"
, TRUNC((SUM(NVL(F.BYTES,0)) / U.BYTES) * 100,2) "남은 %"
, U.FILE_NAME "저장위치"
FROM DBA_FREE_SPACE F
, DBA_DATA_FILES U
WHERE F.FILE_ID(+) = U.FILE_ID
GROUP BY U.TABLESPACE_NAME
, U.FILE_NAME
, U.BYTES
ORDER BY U.TABLESPACE_NAME;

 

 

select file_name, tablespace_name, bytes, autoextensible
  from dba_data_files
  where tablespace_name='AMAIL_DATA_TS';

[HTML]테이블이 긴글로 깨질때

Programing 2012.11.01 15:54 Posted by 애플자라

고정( 게시판의 width의 고정, 줄의 자동 줄바꿈)을 하시려면..

스타일을 이용하셔야 합니다.

 

스타일 내용은 두가지가 있습니다.

 

1 :::   style="TABLE-LAYOUT:fixed;"

2 :::   style="word-break:break-all"

 

1번은 가로폭을 고정하고 넘어가는 글자는 짤려서 안보입니다.

2번은 가로폭을 고정하고 글을 줄바꿈을 해줍니다.

 

사용법은 td나 table 안에 넣어 주시면 됩니다.

 테이블 복사하기 스키마 데이터

CREATE TABLE 새로만들테이블명 AS

SELECT * FROM 복사할테이블명 [WHERE 절]

 

 테이블 구조만 복사하기

CREATE TABLE 새로만들테이블명 AS

SELECT * FROM 복사할테이블명 WHERE 1=2 [where에다가 참이 아닌 조건을 넣어줌]

 

 테이블은 이미 생성되어 있고 데이터만 복사

INSERT INTO 복사할테이블명 SELECT * FROM 복사할테이블명 [WHERE 절]

 

테이블 이름 변경

ALTER TABLE 구테이블명 RENAME TO 신테이블명

주의할 점은, Primary Key 나 Index 등 Constraint 는 복제되지 않습니다. 당연한 것이, 복제된다면 동일한 이름의 Object 가 이미 존재한다는 에러를 만나게 되겠죠. 데이터를 잠시 옮겨놓기 위한 용도의 테이블 복제에선 불필요하다고 봅니다.

[ORACLE]Table Lock 걸렸을 때 처리 (ORA-00054)

Database 2012.04.19 11:45 Posted by 애플자라

ORA-00054 발생했을때 처리하는 방법..

발생 가능성은 다양하게 존재한다. Commit가 수행되지 않았을 경우라던가 Toad에서 Schema Browser를 사용하다가 삽질을 했다던가 등의 문제로 다양한 경우에서 발생할 수 있는 문제이다.

Truncate같은 명령은 ORA-00054라는 에러라도 출력하지만, DML(Delete) 문장 실행시엔 그냥 멈춰버리는 경우도 있다고 한다.

해결 방법은 오라클 서비스를 재시작 하면 쉽게 처리가되지만, DB를 사용하는 곳에서 DB 재시작이 그리 녹녹하진 않을 것이다. 이러한 에러가 발생하는 이유는 테이블에 Lock이 걸려서 생기는데 이 원인을 해결해주면 된다.


[Qeury]

SELECT A.sid , A.serial#
FROM v$session A , v$lock B , dba_objects C
WHERE A.sid = B.sid and B.id1 = C.object_id
AND B.type = 'TM' and C.object_name='TABLE_NAME';


[Result]

     SID    SERIAL#
------- ----------
    2391       18325


Lock를 하고 있는 대상의 데이터가 나오면

ALTER system kill session '2391, 18325';

와 같은 쿼리를 날려서 원인이 되는 세션을 날려버리면 된다.

출처 - http://www.secret.pe.kr/6323

[ORACLE]테이블명,인덱스명 변경

Database 2012.03.30 14:08 Posted by 애플자라

테이블명 변경: RENAME {변경전이름} TO {변경후이름};
인덱스명 변경: ALTER INDEX {변경전이름} RENAME TO {변경후이름};

1.변경하고자 하는 COLUMN으로 Unique Index를 생성한다.

쿼리 -
CREATE UNIQUE INDEX PK명 ON TABLE명(COLUMN명) TABLESPACE TABLESPACE명;
예제(테이블스페이스는 사용 안함) -
CREATE UNIQUE INDEX PK_FTA_PO_LEDGER ON FTA_PO_LEDGER(COMPANY_CODE, PROJECT_CODE, FTA_CODE, ITEM_CODE);


2.해당하는 PK를 삭제한다

ALTER TABLE RECRUIT_APP DROP PRIMARY KEY


쿼리 -
ALTER TABLE TABLE명 DROP CONSTRAINT PK명;
예제(테이블스페이스는 사용 안함) -
ALTER TABLE FTA_PO_LEDGER DROP CONSTRAINT FTA_PO_LEDGER_PK;


3.PK에 속성을 추가한다.
쿼리 -
ALTER TABLE TABLE명 ADD CONSTRAINT PK명 PRIMARY KEY(COLUMN명);
예제 -
ALTER TABLE FTA_PO_LEDGER ADD CONSTRAINT PK_FTA_PO_LEDGER PRIMARY KEY(COMPANY_CODE, PROJECT_CODE, FTA_CODE, ITEM_CODE);

select * from USER_IND_EXPRESSIONS where table_name = 'COUNSELLING'; -- 인덱스검색

[출처] 테이블의 PK 변경하기 (개발자로 살아남기) |작성자 정우아빠


SELECT   OWNER,
         OBJECT_NAME,
         OBJECT_TYPE,
         CREATED,
         LAST_DDL_TIME
  FROM   DBA_OBJECTS 
 WHERE   owner = 'APLUSORA' -- 계정
 --AND object_name = 'EMS_V_KIUM_CUSTOMER_LETTER' -- 테이블/INDEX/VIEW

-- 오너, 테이블명, 타입, 테이블생성날짜, 마지막 DDL 날짜
-- 마지막 DDL 날짜는 GRANT, REVOKE등 해당 OBJECT에 대한 권한작업 시에도 갱신됨