출처] http://blog.naver.com/royalwang?Redirect=Log&logNo=100148098982



CREATE OR REPLACE PROCEDURE SEQUENCE_RESET(S_NAME IN VARCHAR2)

AS S_VALUE INTEGER;

BEGIN

execute immediate 'alter sequence ' || S_NAME || ' minvalue 0';

execute immediate 'select ' || S_NAME || '.nextval from dual' into S_VALUE ;

execute immediate 'alter sequence ' || S_NAME || 'increment by -'|| S_VALUE ;

execute immediate 'select ' || S_NAME || '.nextval from dual' into S_VALUE ;

execute immediate 'alter sequence ' || S_NAME || 'increment by 1';

END;



PL/SQL에서 Sequence를 생성하고 삭제하려고 했더니

DCL자체가 안 먹히는 듯.


그래서 위 게시물의 방법을 이용하여 실제로 프로젝트에 적용시켜 보기로 했다.


SEQUENCE_RESET 프로시져를 생성하여 패키지에서 호출해 쓰려고 하였으나, 알지 못하는 이유로 실패..

아래처럼 프로시져 내용을 통째로 옮겨넣고 진행하였다.


미리 seq_bgtmap 라는 시퀀스를 생성한 후에, 

아래처럼 해보자.


   Procedure sp_Copy_Bgtdtl(

             p_bgt_yy          in varchar2,

             p_inp_emp         in varchar2,

             CurQue_mB646      in out Que_mB646Cursor) IS

      temp_seq integer;

   Begin

     

      execute immediate 'alter sequence seq_bgtmap minvalue 0';

      execute immediate 'select seq_bgtmap.nextval from dual' into temp_seq;

      execute immediate 'alter sequence seq_bgtmap increment by -'||temp_seq;

      execute immediate 'select seq_bgtmap.nextval from dual' into temp_seq;

      execute immediate 'alter sequence seq_bgtmap increment by 1';


      insert into bgtmap(bgt_yy       , map_id       , prgm_id      , bugt_cd      ,

.

.

.

.



결과는 굿.


Posted by 야동우
,




보통 논리모델의 속성명을 comment로 보여지도록 작업하고자 할 때, 주로 보여주는 메세지인데,


Reset all attributes in model 옵션을 이용하여 한꺼번에 모든 모델에 대해서 적용할 경우, 


재수없으면 ESC키를 수천번 눌러야 하는 경우도 생긴다.(OK 연타는 꺼지지 않고 계속 이 메세지를 띄워준다.)


이 메시지가 뜨는 이유는 주로,  컬럼에 Comment가 달려있지 않아서인데 수백개의 테이블에 Comment가 하나도 달려 있지 않다면.. 그리고 이 메세지가 떴다면... -0- 생각만 해도 끔찍하다. 


이에 대한 대처방안이 몇가지가 있는데..


첫번째로, 데이터베이스 상에서 모든 컬럼에 Comment를 달아주는 방법으로 가장 이상적이지만, 한 번에 주석 다는게 어디 쉽나;;

무튼 모든 컬럼에 Comment가 달려 있으면 이 메세지는 안 봐도 된다. 



첫번째 방법이 싫고, 거의 모든 컬럼에 Comment가 달려있지만, 듬성듬성 누락된 경우.

Reset all attributes in model 메뉴를 사용하지 않고, 그 위에 All attributes of entity XXXX 옵션을 클릭하여 Entity 단위(테이블도 Entity의 일종)로 작업을 해 줄 수도 있다.



필자는 오늘 타 프로젝트의 ERD를 그리기 위해, 이 두가지 방법을 모두 사용하여 작업하였는데..


정리하자면, 막무가내로 Revers Engineer로 ERD를 뽑아내고 위의 작업을 하는 것보다.


오라클을 예로들어, DBMS에서 미리 아래 쿼리처럼 user_col_comments 데이터사전을 이용하여 


select *

from user_col_comments

where comments is null;


null값을 가진 컬럼과 테이블을 확인 한 후에, 


내가 Comment를 달아도 되는 상황이고, 컬럼에 대한 정보도 대충 안다면 Comment를 모두 달아 준 후에 ERD 작업을 하고, 

거진 다 Comment가 달려있고 몇몇개가 비어있을 경우, 위에서 말한 두번째 방법을 쓰면 될 것이다.


이보다 더한 상황이라면.. 그냥.. 힘내시길..


새벽 4시에 작성하는 글이라 두서가 없네, 시간나면 좀 정리해야겠다고 생각!!


Posted by 야동우
,


링크 : http://www.pplane.net/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%95%94%ED%98%B8%ED%99%94



오라클 지원 암호화 알고리즘 종류 -

 

해당 암호화는 dbms_obfuscation_toolkit툴킷을 설치를해야한다.

1) SYS 유저로 아래의 스크립트를 실행

   @$ORACLE_HOME/rdbms/admin/dbmsobtk.sql
   @$ORACLE_HOME/rdbms/admin/prvtobtk.plb
   
2) 권한을 부여

   SQL>GRANT execute ON dbms_obfuscation_toolkit TO public;

 

해당 암호화 구문은 프로시저로 되있으므로 사용자정의 함수로 만들어 사용하면 유용하다.

 

 

DES(Data Encrypt standard)

 

dbms_obfuscation_toolkit.DESEncrypt('입력값','공개키값')

dbms_obfuscation_toolkit.DESDecrypt('입력값','공개키값')

 

DES3

 

dbms_obfuscation_toolkit.DES3Encrypt('입력값','공개키값')

dbms_obfuscation_toolkit.DES3Decrypt('입력값','공개키값')

 

MD5(message digest algorithm 5)

 

dbms_obfuscation_toolkit.MD5('입력값')

 

 

 

그밖에 AES(Advanced Encryption Standard) 있으나 오라클 10g 에서 DBMS_CRYPTO 툴킷을 사용해야 한다.

 

 

출처 - oracleclub(오라클클럽), http://download-west.oracle.com/docs/cd/B10501_01/index.htm (오라클9i설명서)






//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




But, 정작 사용하려고 할 때  

ORA-06553: PLS-307: too many declarations of 'DESENCRYPT' match this call


오류가 뜨는 경우가 있다. 그럴 경우 아래 링크로~


링크 : http://yadw.tistory.com/220


 

Posted by 야동우
,

원본입니다 : http://www.database.sarang.net/?aid=34497&criteria=oracle&id=34540&inc=read&keyword=&limit=20&page=32&subcrit=qna



DES 암호화/복화화를 위해 

암호화는 dbms_obfuscation_toolkit툴킷을 설치를해야한다.

1) SYS 유저로 아래의 스크립트를 실행

   @$ORACLE_HOME/rdbms/admin/dbmsobtk.sql
   @$ORACLE_HOME/rdbms/admin/prvtobtk.plb
   
2) 
권한을 부여

   SQL>GRANT execute ON dbms_obfuscation_toolkit TO public;  

을 실행하여 정상적으로 수행되었습니다.

그런데, 사용하려고 하면 아래와 같이 ORA-06553: PLS-307: too many declarations of 'DESENCRYPT' match this call이 발생하고 있습니다.

뭐가 잘못 됐는지...도움 부탁드립니다.감사합니다.

 

wmgapp1@[wmgapp:/home/wmgapp]sql_plus

SQL*Plus: Release 8.1.7.0.0 - Production on Mon Oct 6 14:00:06 2008

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options

SQL> select svcmng_num,user_id,dbms_obfuscation_toolkit.DESEncrypt(user_id,'12345678') from mms_user_infos;
select svcmng_num,user_id,dbms_obfuscation_toolkit.DESEncrypt(user_id,'12345678') from mms_user_infos
                          *
ERROR at line 1:
ORA-06553: PLS-307: too many declarations of 'DESENCRYPT' match this call

이 글에 대한 댓글이 총 1건 있습니다.


@$ORACLE_HOME/rdbms/admin/dbmsobtk.sql

에 있는 raw 타입과 string 타입에 대해 function 이름이 같은 것으로 존재해서

충돌이 발생해서 ORA-06553: PLS-307: too many declarations of 'DESENCRYPT' match this call오류 메시지가 발생한것 같습니다.

raw 타입은 사용하지 않을것이어서 raw관련 함수/프로시저 부분을 삭제하고,

string관련 함수/프로시저만 두고 실행하니깐 정상적으로 수행이 되었습니다.

Posted by 야동우
,

 

오라클 데이터베이스를 덤프받아 테스트할 경우, 암호화/복호화가 쓰인 경우가 있다.

 

이때는 유저에게 암호화/복호화 함수를 실행할 수 있는 권한을 부여해줘야 한다.

 

 

 

C:\> sqlplus /nolog

 

SQL> conn /as sysdba               << dbms_crypto 를 부여할 수 있는 권한이 있는 유저로 로그인해도 무방하다.

 

 

SQL> grant execute on dbms_crypto to 유저이름;

 

 

 

Posted by 야동우
,

 

 

상황

sql/plus에서 @file.sql 로 스크립트를 돌리는데 & 문자가 데이터에 들어있을 경우,

& 문자를 그대로 입력하고 싶은데, 자꾸 치환변수로 인식해서 값을 입력하라고 한다.

 

 

해결방법

오라클상에서 치환변수로 인식하겠다는 옵션을 변경해주면 된다.

 

 

 

방법1.

오라클 sql/plus에서 치환변수 해제

SQL> set define off;

(다시 이 옵션이 필요할 수도 있으니, 스크립트를 돌리고 나면 set define on 으로 바꿔주자 ~_~

 

방법 2.

토드 9.x에서

View->Toad Options

->Editor->Execute/Compile->Behavior 영역에서

Prompt for substitution variables 체크 해제

 

 

 

 

 

[여담..] 이거 몰라서.. 스무개정도 수동으로 입력했다..... 데이터가 천개였기 망정이지, 몇만개만 됐어도 ㅎㄷㄷ.........

Posted by 야동우
,

 

SQL> ALTER TABLE 구DB명 RENAME TO 신DB명;

 

 

참 쉽죠잉~

 

근데 오라클에만 있는듯..

Posted by 야동우
,



SQL> GRANT EXECUTE ON DBMS_CRYPTO TO USERNAME;
Posted by 야동우
,

접속하려는 유저에게 sysdba 권한이 주어져 있으면 된다 -_-;;;

만약에 그런 권한이 주어져 있지 않다면.. 최소 1유저에게는 sysdba 권한을 주어야 하지 싶다...(추측)


== 서버측 ==
SQL> conn /as sysdba
SQL> grant sysdba to newscott (with admin option) ;




== 클라이언트측 ==
SQL> conn newscott/tiger@server as sysdba

executed on dbms_crypto 같은 권한을 부여하려면 dba 권한으로는 부족하다고 뜬다.
sysdba 권한이 있으니 부여가능하네요.
Posted by 야동우
,


Oracle Version 1, 1978:

Written in Assembly Language
Ran under PDP-11 under RSX in 128K of Memory
Implementation separates oracle code and user code.

Oracle Version 2, 1979:

The first SQL Relational Database Management system that was commercially released.
Written in PDP-11 Assembly Language
Ran on VAX/VMS in Compatibility mode

Oracle Version 3.1980:

Written in C, Portable Source Code
Retained Split Architecture
Introduced the concept of Atomic SQL Execution and transactions (Commit & Rollback)

Oracle Version 4, 1984:

Introduced Read Consistency.
Portable to many platforms
Interoperability between PC and Server

Oracle Version 5, 1986:

True Client Server –Distributed Processing
VAX –Cluster Support
Version 5.1- Distributed Queries

Oracle Version 6, 1989:

Major Kernel Rewritten
OLTP Performance enhancements (save points)
Online Backup and Recovery
Row level Locking
PL\SQL in the database
Parallel Servers (VAX Clusters, nCube)

Oracle Version 7, 1993:

Stored Procedures and Triggers
Shared SQL, Parallel Execution
Declarative Referential Integrity
Advanced Replication

Oracle Version 8, 1997:

Object Relation Extensions in the Database
From Client Server to Three tier Architecture
Partitioning Option

Oracle Version 8i, 1999:

Java in the database (JVM and SQLJ)
Partitioning Enhancements
Data Warehousing Enhancements
XML Support
Summary Management
Oracle Internet Directory (LDAP)
Ported to Linux

Oracle Version 9i, 2001:

Real Application Clusters, with cache fusion– Scalability on inexpensive clustered hardware
Automatic segment-space management
Internet security enhancements
Integrated business intelligence functionality
Data Guard (standby databases)
Oracle managed files
Globalization support (Unicode, time zones, locales)

Oracle Version 10g, 2003:

Primary goal: Build a self-managing database that requires minimal human intervention.
Reduction in administration cost without
Compromising high availability, scalability, and security.
Minimal performance impact
Effective for all configurations and workloads

Oracle Version 11g, 2007:

Flashback data Archive
Advanced Compression
Real Application Testing
Automatic Storage Management
Posted by 야동우
,