승적이익강 (勝敵而益强)
오라클팁 본문
/********************************************************/
오라클 시작과 종료
/********************************************************/
오라클 BIN 디렉토리로 이동
svrmgrl : 실행
connect internal : 접속
startup : 시작
shutdown abort : 종료
/********************************************************/
오라클 처음 구축
/********************************************************/
- TABLESPACE 작성
CREATE TABLESPACE TS_MYDB_DATA01 DATAFILE 'C:\ORACLE\ORADATA\ORADB\TS_MYDB_DATA01.DBF' SIZE 100M
DEFAULT STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 50);
CREATE TABLESPACE TS_MYDB_IDX01 DATAFILE 'C:\ORACLE\ORADATA\ORADB\TS_MYDB_IDX01.DBF' SIZE 50M
DEFAULT STORAGE (INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
- TABLESPACE SIZE 변경
ALTER TABLESPACE TS_MYDB_IDX01 ADD DATAFILE 'C:\ORACLE\ORADATA\ORADB\TS_MYDB_IDX02.DBF' SIZE 100M;
ALTER DATABASE DATAFILE 'C:\ORACLE\ORADATA\ORADB\TS_MYDB_IDX01.DBF' RESIZE 500M
- TABLE의 TABLESPACE 이동
ALTER TABLE EMP MOVE TABLESPACE TS_NAME;
- SCHEMA 작성
CREATE USER goodman IDENTIFIED BY jj1004
DEFAULT TABLESPACE ta_mydb_data01
TEMPORARY TABLESPACE temp;
User password change : alter user goodman identified by jj1004
- 권한부여
접근권한:GRANT connect,resource TO goodman; connect,resource 라는 Role를 부여한다
/********************************************************/
@====>> 오라클 JOB에 관한 작업
SELECT * from user_jobs
SELECT * from dba_jobs
select * from sys.v_$parameter where name like '%job%'
재실행
begin
dbms_job.run(203);
end;
delete SYS.DBA_JOBS where job = ''
select * from SYS.DBA_JOBS
variable jobno number;
begin
dbms_job.submit(:jobno, 'sp_common_code;', trunc(sysdate) + 1 + 2.5/24, 'trunc(sysdate) + 7 + 2.5/24');
-- 매개변수 plsql명 시작일 day = 02:30 다음 시작일 day
end;
/
@====>> 다른 DB접속시 링크확인
SELECT * FROM user_DB_LINKS
eworks.k_user@eworks21
CREATE DATABASE LINK COMMON(db_link)
CONNECT TO COMMON(username) IDENTIFIED BY COMMON(password)
USING 'common'(tnsname.ora);
drop DATABASE LINK EWORKS21.US.ORACLE.COM
init.ora : global_names를 true로 하면 dblink의 이름과 접속하는 db의 이름이 동일하도록 요구한다.
@====>> SYNONYM 작업
QE로 접속해서 권한을 준다.
GRANT SELECT ON qez020 TO eworks
개발 서버에서 시노미를 만든다.
CREATE SYNONYM qez020 FOR qe.qez020@dbsvr03
@====>> Create Table Ex
CREATE TABLE INS_INFO (
PJT_SEQ_NO VARCHAR2(6),
PO_NO VARCHAR2(30),
VEND_NO VARCHAR2(10),
INS_LEVEL VARCHAR2(3),
VP_STATUS CHAR(3),
CONTACT_PERSON VARCHAR2(30),
CON_TEL_NO VARCHAR2(25),
CON_FAX_NO VARCHAR2(25),
CON_EMAIL VARCHAR2(50),
CON_PLACE VARCHAR2(100),
INS_STATUS VARCHAR2(2000),
NON_STATUS VARCHAR2(2000),
APP_MAX_NO VARCHAR2(3),
DSGN_DEPT VARCHAR2(6),
ORIGIN_EMP_ID CHAR(5),
ORIGIN_DATE CHAR(8),
WRITED_DATE CHAR(8),
CONSTRAINT INS_INFO_PK // pk 선언
PRIMARY KEY (PJT_SEQ_NO, PO_NO)
USING INDEX
TABLESPACE BUYDBIDX //인덱스가 저장될 tablespace
);
@====>> Table 생성과 동시에 데이터 복사
create table 테이불명 as select * from 테이불명
@====>> Table 수정
alter table ins_ncr_main add app_rev_no varchar2(3)
alter table ins_ncr_main modify app_rev_no char(3)
@====>> P_K (제약조건)수정
alter table ins_ncr_main drop constraint INS_NCR_MAIN_PK //삭제
alter table ins_ncr_main add CONSTRAINT INS_INFO_PK // 추가
PRIMARY KEY (PJT_SEQ_NO, PO_NO)
USING INDEX
TABLESPACE BUYDBIDX
@====>> Create Index
create index K_OBJECT_IDX01 on K_OBJECT (S_ROOT_ID)
tablespace EWORKS_IDX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
);
@====>> DB LOCK 확인
select *
from sys.v_$locked_object a,
dba_objects b
where b.object_id = a.object_id
@====>> 오라클 속성 정의를 본다.
SELECT * FROM dict
SELECT * FROM sys.v_$parameter
@====>> 제약조건 검색
select * from user_constraints where table_name = 'EPMD013'
@====>> 소스보기
SELECT * FROM USER_SOURCE WHERE NAME = 'SF_IPS_PASS_DECODE'
@====>> User Object List
select * from user_objects where object_type = 'FUNCTION'
SELECT * FROM user_objects WHERE status = 'INVALID'
@====>> HINT 사용
SELECT /*+ INDEX_DESC(b CO_SAMPLE_FILE_PK) USE_NL(a b) */
@====>> Oracle Connection String
connStr = "Provider=MSDAORA.1;Persist Security Info=False;User ID=eworks;Password=eworks;Data Source=eworks;"
/********************************************************/
PL / SQL
/********************************************************/
@====>> EXCEPTION 처리
EXCEPTION
WHEN NO_DATA_FOUND THEN --// NO DATA일 경우 ''처리
vMaxNcr_date := '';
EXCEPTION
WHEN OTHERS THEN --에러가 있다면...
t_SqlErrm := '-1'; --//임의의 숫자를 반환하는 경우
t_SqlErrm := SQLCODE || SQLERRM; --//ERR CODE와 ERR DESCRIPTION를 반환하고자 할때 사용
RAISE Exit_Process;
@====>> OUTPUT변수 선언 및 PROCEDURE 호출
variable aa varchar2(20)
execute SP_INSP_INDEX_SEL('09006','11','11',:aa,:bb,:cc);
begin SP_INSP_INDEX_SEL('09006','11', '11',:AA,:BB,:CC); end;
@====>> PROCEDURE내에서 변수값 확인해 보기
dbms_output.put_line(변수); --> 프로시져내서...
set serveroutput on --> dbms_output package을 사용하기 전에..먼저 실행
@====>> Returning Value
인서트후 값을 받는다.
@====>> EXECUTE IMMEDIATE v_SQL;
스트링변수의 쿼리문을 직접실행한다.
'Database' 카테고리의 다른 글
열을 행으로 변환 (0) | 2008.09.19 |
---|---|
25가지 SQL작성법 (0) | 2008.09.19 |
순위 - RANK, DENSE_RANK (0) | 2008.09.19 |
누적곱 (0) | 2008.09.19 |
누적 평균값 (0) | 2008.09.19 |