'DataBase/ORACLE'에 해당되는 글 0건

[ORACLE] 43 is an invalid PageIndex value. PageIndex must be between 0 and 42.

[■DataBase/OO ORACLE OO]
This error can happen when you run Toad with a Toad.ini which was generated by a higher version of Toad.

To correct it, Close Toad, and edit toad.ini with notepad.  Find the [PAGEORDERS] section and delete it.  I think that will be enough but you may also have to delete the [PAGENAMES] and [PAGESHOW] sections.

No need to send Greg that info, this will fix it.

-John


[출처] : http://old.nabble.com/43-is-an-invalid- ··· 759.html
크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] EXP/IMP 백업/복구

[■DataBase/OO ORACLE OO]
[출처] : http://www.syuos.codns.com/?mid=study&a ··· %3D11561

백업 복구  export / import



- 테이블 재구성 : Row migration 이 많이 발생하는 경우, 빈 블럭이 많은 경우, fragmentation이 많이 발생하는 경우,
                        경합을 최소화 하기위해 등 테이블 재구성시 사용

============================================================================================================
export

table export
exp system/비번 tables=(테이블명, 테이블명) grants=y indexes=y

user export
:사용자의 모든 객체를 덤프
exp system/비번 file=백업명.dmp owner=사용자명 grants=y rows=y compress=y


full export
: DBA 사용자가 전체 데이타베이스 덤프하고자 할때
exp system/비번 full=y file=덤프명.dmp grants=y rows=y

=============================================================================================

import

table import
imp system/비번 file=덤프명.dmp fromuser=이전사용자명 tables=(테이블명,테이블명)
빈 테이블만 복구
imp system/비번 file=덤프명.dmp fromuser=이전사용자명 tables=dept
다른사용자에게 복구
imp system/비번 file=덤프명.dmp fromuser=이전사용자명 touser=현재사용자명 tables=(테이블명)



imp system/비번 file=덤프명.dmp
크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] ENCODE, DECODE

[■DataBase/OO ORACLE OO]

Select utl_encode.TEXT_DECODE('amV1c2FkbWlu','WE8ISO8859P1', 1) From Dual

Select utl_encode.TEXT_ENCODE('1234qwer','WE8ISO8859P1', 1) From Dual

크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 분석함수 이용한 누적,합계,비율 구하기

[■DataBase/OO ORACLE OO]
테이블 table_123에서 점이 1100인 것의
 
select mngbr, cifno, jikwonno, janamt
, row_number() over(partition by jikwonno order by mngbr, cifno ) accum -- 직원별 순차번호
, sum(janamt) over(partition by jikwonno order by mngbr, cifno rows between unbounded preceding and current row) accum1  -- 점,직원별/ 고객번호순 잔액의 누적
, sum(janamt) over(partition by jikwonno) accum_tot  -- 점,직원별 잔액의 합계
, round(ratio_to_report(janamt) over(partition by jikwonno), 2)*100 ratio_tot -- 점,직원별 잔액이 차지하는 비율
from   table_123
where  mngbr = 1100

[출처] 오라클 분석함수 - 누적,합계,비율구하기 |작성자 아직이군


분석함수가 약한 나에게 한줄기 빛이되신 아직이군님께 감사드립니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 계정이 Lock 걸린 경우

[■DataBase/OO ORACLE OO]
오라클에서
java.sql.SQLException: ORA-28000: the account is locked
이런 메세지의 경우 해결방법

Lock 걸린유저 확인
SELECT USERNAME, ACCOUNT_STATUS, TO_CHAR(LOCK_DATE, 'yy/mm/dd hh24:mi') lock_date, profile
FROM dba_users;

Lock 걸린유저 풀기
ALTER USER KFDA_NUTRI ACCOUNT UNLOCK;
크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] Toad 'IN' is not a valid integer value 해결 방법

[■DataBase/OO ORACLE OO]
mt1716님 블로그 펌 : http://mt1716.egloos.com/8442935

최근에 알려진 토드 8.6 대 버젼이 오라클 10G 패치로 인해 생기는 'IN' is not a valid integer value 에
러를 FIX하는 방법입니다.

버그의 원인은 오라클 패치로 인해 ALL_ARGUMENTS가 변경되서 입니다.

1) SYS 로 로그인 합니다.
2) 아래의 view를 생성합니다. (ALL_ARGUMENTS_TOAD)

CREATE OR REPLACE VIEW ALL_ARGUMENTS_TOAD
(OWNER, OBJECT_NAME, PACKAGE_NAME, OBJECT_ID, OVERLOAD,
ARGUMENT_NAME, POSITION, SEQUENCE, DATA_LEVEL,
DATA_TYPE, DEFAULT_VALUE, DEFAULT_LENGTH, IN_OUT, DATA_LENGTH,
DATA_PRECISION, DATA_SCALE, RADIX, CHARACTER_SET_NAME, TYPE_OWNER,
TYPE_NAME, TYPE_SUBNAME, TYPE_LINK, PLS_TYPE, CHAR_LENGTH,
CHAR_USED, SUBPROGRAM_ID)
AS
SELECT
u.name, /* OWNER */
NVL(a.PROCEDURE$,o.name), /* OBJECT_NAME */
DECODE(a.PROCEDURE$,NULL,NULL, o.name), /* PACKAGE_NAME */
o.obj#, /* OBJECT_ID */
DECODE(a.overload#,0,NULL,a.overload#), /* OVERLOAD */
a.argument, /* ARGUMENT_NAME */
a.position#, /* POSITION */
a.SEQUENCE#, /* SEQUENCE */
a.LEVEL#, /* DATA_LEVEL */
DECODE(a.TYPE#, /* DATA_TYPE */
0, NULL,
1, DECODE(a.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
2, DECODE(a.scale, -127, 'FLOAT', 'NUMBER'),
3, 'NATIVE INTEGER',
8, 'LONG',
9, DECODE(a.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
11, 'ROWID',
12, 'DATE',
23, 'RAW',
24, 'LONG RAW',
29, 'BINARY_INTEGER',
69, 'ROWID',
96, DECODE(a.charsetform, 2, 'NCHAR', 'CHAR'),
100, 'BINARY_FLOAT',
101, 'BINARY_DOUBLE',
102, 'REF CURSOR',
104, 'UROWID',
105, 'MLSLABEL',
106, 'MLSLABEL',
110, 'REF',
111, 'REF',
112, DECODE(a.charsetform, 2, 'NCLOB', 'CLOB'),
113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
121, 'OBJECT',
122, 'TABLE',
123, 'VARRAY',
178, 'TIME',
179, 'TIME WITH TIME ZONE',
180, 'TIMESTAMP',
181, 'TIMESTAMP WITH TIME ZONE',
231, 'TIMESTAMP WITH LOCAL TIME ZONE',
182, 'INTERVAL YEAR TO MONTH',
183, 'INTERVAL DAY TO SECOND',
250, 'PL/SQL RECORD',
251, 'PL/SQL TABLE',
252, 'PL/SQL BOOLEAN',
'UNDEFINED'),
DEFAULT$, /* DEFAULT_VALUE */
deflength, /* DEFAULT_LENGTH */
DECODE(in_out,NULL,'IN',1,'OUT',2,'IN/OUT','Undefined'), /* IN_OUT */
LENGTH, /* DATA_LENGTH */
PRECISION#, /* DATA_PRECISION */
DECODE(a.TYPE#, 2, scale, 1, NULL, 96, NULL, scale), /* DATA_SCALE */
radix, /* RADIX */
DECODE(a.charsetform, 1, 'CHAR_CS', /* CHARACTER_SET_NAME */
2, 'NCHAR_CS',
3, NLS_CHARSET_NAME(a.charsetid),
4, 'ARG:'||a.charsetid),
a.type_owner, /* TYPE_OWNER */
a.type_name, /* TYPE_NAME */
a.type_subname, /* TYPE_SUBNAME */
a.type_linkname, /* TYPE_LINK */
a.pls_type, /* PLS_TYPE */
DECODE(a.TYPE#, 1, a.scale, 96, a.scale, 0), /* CHAR_LENGTH */
DECODE(a.TYPE#,
1, DECODE(bitand(a.properties, 128), 128, 'C', 'B'),
96, DECODE(bitand(a.properties, 128), 128, 'C', 'B'), 0), /* CHAR_USED */
a.PROCEDURE# /* SUBPROGRAM ID */
FROM obj$ o,argument$ a,USER$ u
WHERE o.obj# = a.obj#
AND o.owner# = u.USER#
AND (owner# = USERENV('SCHEMAID')
OR EXISTS
(SELECT NULL FROM v$enabledprivs WHERE priv_number IN (-144,-141))
OR o.obj# IN (SELECT obj# FROM sys.objauth$ WHERE Grantee# IN
(SELECT kzsrorol FROM x$kzsro) AND privilege# = 12))
/

3) 다시 사용하던 유져ID로 아래와 같이 private synonym을 생성합니다.
CREATE SYNONYM all_arguments FOR sys.all_arguments_toad;

위와 같이 생성하면 정상적으로 작동합니다.
확인해본결과 TOAD 7버젼에서는 위에처럼 변경하지 않아도 정상으로 작동합니다.

Quest에서 패치를 받는법도 있다는데 다운받을수 없는분을 위해 알려드립니다.
국내에는 아직 잘 알려지지 않은버그인것 같습니다.
================================================================================================

SYNONYM 권한 생성 스크립트 SYS에서 실행
GRANT CREATE synonym TO 계정명;

SYNONYM 생성 스크립트 사용할 계정 로그인 후 실행
CREATE SYNONYM all_arguments FOR sys.all_arguments_toad;

앞으론 생고생이 적어 지겠네 ㅎㅎ
크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 동적쿼리 생성하여 INSERT

[■DataBase/OO ORACLE OO]

CREATE OR REPLACE PROCEDURE PROC_CONVERT_TABLE

   P_USER_NAME IN VARCHAR2,
   P_TABLE_NAME IN VARCHAR2
)
IS
tmpVar NUMBER;
P_CO_NAME VARCHAR2(200);
P_STR_SQL VARCHAR2(4000);

/******************************************************************************
   NAME:       PROC_CONVERT_TABLE
   PURPOSE:   

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        2009-06-18          1. Created this procedure.

   NOTES:

   Automatically available Auto Replace Keywords:
      Object Name:     PROC_CONVERT_TABLE
      Sysdate:         2009-06-18
      Date and Time:   2009-06-18, 오전 9:09:45, and 2009-06-18 오전 9:09:45
      Username:         (set in TOAD Options, Procedure Editor)
      Table Name:       (set in the "New PL/SQL Object" dialog)

******************************************************************************/
 CURSOR c1 IS
 select column_nm.column_name
 from user_tables, (
     select table_name, column_name, data_type,data_length
     from All_tab_columns
     where owner = P_USER_NAME
     ) column_nm
 where user_tables.table_name = column_nm.table_name
 and user_tables.table_name like P_TABLE_NAME
 and column_name not in ('SMN', 'AY', 'FN');
 
BEGIN

       OPEN c1;
           LOOP
              FETCH c1 INTO P_CO_NAME;
              EXIT WHEN c1%NOTFOUND;

               BEGIN       
     P_STR_SQL := 'INSERT INTO TEMP_2 '
     || ' SELECT SMN, AY, FN,  ' || '''' ||P_CO_NAME|| ''', '
     || ' MAX(DECODE('||P_CO_NAME||', '||P_CO_NAME||', '||P_CO_NAME||')) '
     || ' FROM TEMP '
     || ' GROUP BY SMN, AY, FN '
     || ' ORDER BY SMN';
     EXECUTE IMMEDIATE P_STR_SQL; //쿼리를 동적으로 생성하여 처리할 수 있다.
               END;
           END LOOP;
       CLOSE c1;


   tmpVar := 0;
   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END PROC_CONVERT_TABLE;


/

크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 수정가능 조인 뷰

[■DataBase/OO ORACLE OO]

수정가능 조인 뷰를 통한 업데이트

insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');

insert into test values('','bb','');
insert into test values('','bb','');

select * from test

/* Formatted on 2009/05/18 20:15 (Formatter Plus v4.8.6) */
select r from
(
SELECT ROWNUM r,  tt.b
  FROM (SELECT   b
            FROM TEST
        GROUP BY b) tt
)

/* Formatted on 2009/05/18 20:03 (Formatter Plus v4.8.6) */
-- rowid 로  순번
UPDATE TEST t
SET t.a = (SELECT r
                FROM (SELECT ROWNUM r, ROWID rd, a.*
                        FROM TEST a) tt
               WHERE t.ROWID = tt.rd)
 WHERE t.ROWID = (SELECT rd
                    FROM (SELECT ROWNUM r, ROWID rd, a.*
                            FROM TEST a) tt
                   WHERE t.ROWID = tt.rd)

-- rank 함수 사용
UPDATE TEST t
SET t.a = (SELECT r
                FROM (SELECT rank() over(partition by a.b order by rownum) r, ROWID rd, a.*
                        FROM TEST a) tt
               WHERE t.ROWID = tt.rd)
 WHERE t.ROWID = (SELECT rd
                    FROM (SELECT ROWNUM r, ROWID rd, a.*
                            FROM TEST a) tt
                   WHERE t.ROWID = tt.rd)      
       
     
SELECT rank() over(partition by a.b order by rownum) "rank", ROWID rd, a.a, a.b, rank() over(partition by a.b order by rownum) "rank"
FROM TEST a
GROUP BY rownum, rowid, a.a, a.b
order by rownum

A          B          C         
1          aa                   
2          aa                   
3          aa                   
4          aa                   
5          aa                   
6          aa                   
7          aa                   
8          aa                   
9          aa                   
10         aa                   
1          bb                   
2          bb                   


크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 날짜검색

[■DataBase/OO ORACLE OO]
/* Formatted on 2009/05/18 14:06 (Formatter Plus v4.8.6) */
SELECT *
FROM [테이블명]
WHERE [컬럼명] BETWEEN TO_date ('2009-05-01 00:00:01',  'YYYY-MM-DD HH24:MI:SS')
                        AND TO_date ('2009-05-18 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
크리에이티브 커먼즈 라이센스
Creative Commons License

[ORACLE] 자격증 관련 정보

[■DataBase/OO ORACLE OO]
http://kin.naver.com/detail/detail.php? ··· b%40yguq
크리에이티브 커먼즈 라이센스
Creative Commons License