728x90

 create profile 명령을 사용하여 로그인을 시도할 경우에 허용된 실패횟수를 지정할 수 있을 뿐 아니라 유저계정이 잠금상태로 남아 있게 되는 시간도 지정할 수 있다.

 접속시에 일정 회수 이상 실패한 후 CONNECT를 시도하면 "ORA-28000: the account is locked"의 ERROR를 받게 된다.

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS;

 

OE 계정의 경우 LOCKED 이면서 EXPIRED 되어 있으니 우선 아래의 명령으로 LOCK을 풀어야 하는데 ALTER USER 명령을 사용한다.

 

ALTER USER OE ACCOUNT UNLOCK;

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS
  WHERE USERNAME = 'OE';

 

마지막으로 EXPIRED를 풀어야 하는데, 오라클의 관리자 계정으로 로그인 후

ALTER USER OE IDENTIFIED BY OE;

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS
  WHERE USERNAME = 'OE';

 

 

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 락 해제하기  (0) 2022.07.19
오라클에서 COMMENT 다는 법  (0) 2019.04.24
오라클 테이블스페이스 생성  (0) 2019.04.04
오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
728x90

 create profile 명령을 사용하여 로그인을 시도할 경우에 허용된 실패횟수를 지정할 수 있을 뿐 아니라 유저계정이 잠금상태로 남아 있게 되는 시간도 지정할 수 있다.

 접속시에 일정 회수 이상 실패한 후 CONNECT를 시도하면 "ORA-28000: the account is locked"의 ERROR를 받게 된다.

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS;

 

OE 계정의 경우 LOCKED 이면서 EXPIRED 되어 있으니 우선 아래의 명령으로 LOCK을 풀어야 하는데 ALTER USER 명령을 사용한다.

 

ALTER USER OE ACCOUNT UNLOCK;

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS
  WHERE USERNAME = 'OE';

 

마지막으로 EXPIRED를 풀어야 하는데, 오라클의 관리자 계정으로 로그인 후

ALTER USER OE IDENTIFIED BY OE;

 

SELECT USERNAME,
             ACCOUNT_STATUS,
             TO_CHAR(LOCK_DATE,'YYYY.MM.DD HH24:MI') LOCK_DATE          
    FROM DBA_USERS
  WHERE USERNAME = 'OE';

 

 

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 락 해제하기  (0) 2022.07.27
오라클에서 COMMENT 다는 법  (0) 2019.04.24
오라클 테이블스페이스 생성  (0) 2019.04.04
오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
728x90

오라클에서 COMMENT 다는 방법

- TABLE COMMENT 추가
   comment ON TABLE 테이블명 IS '설명'


- 컬럼 COMMENT 추가
   comment ON COLUMN 테이블명.필드명 IS '설명'


- TABLE COMMENT 삭제 
   comment ON TABLE 테이블명 IS ''

- TABLE COMMENT 확인
   SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '테이블명';

출처: https://uniksy1106.tistory.com/167 [* 루이지노의 행복한 이야기 : )]

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 락 해제하기  (0) 2022.07.27
오라클 락 해제하기  (0) 2022.07.19
오라클 테이블스페이스 생성  (0) 2019.04.04
오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
728x90

-- 데이터 테이블스페이스 생성

CREATE TABLESPACE DEV_DATA

DATAFILE 'C:\database\oracle\oradata\orcl\DEV_DATA.ORA' SIZE 1G

AUTOEXTEND ON NEXT 10M MAXSIZE 10G

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

 

-- 인덱스 테이블스페이스 생성

CREATE TABLESPACE DEV_IDX

DATAFILE 'C:\database\oracle\oradata\orcl\DEV_IDX.ORA' SIZE 100M

AUTOEXTEND ON NEXT 10M MAXSIZE 500M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

 

-- 임시 테이블스페이스 생성

CREATE TEMPORARY TABLESPACE DEV_TMP

TEMPFILE 'C:\database\oracle\oradata\orcl\DEV_TMP.ORA' SIZE 100M

AUTOEXTEND ON NEXT 5M MAXSIZE 500M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K;

 

-- 사용자 생성 후 tablespace 지정

create user dev identified by dev

default tablespace dev_data

temporary tablespace dev_tmp;

 

-- 사용자 권한설정

grant connect, resource, dba to dev;

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 락 해제하기  (0) 2022.07.19
오라클에서 COMMENT 다는 법  (0) 2019.04.24
오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
ORACLE PLS-553 오류 처리  (0) 2015.04.29
728x90

-- 분석 함수

    -- RANK OVER()

    -- ROW_NUMBER() OVER() ** 중요  제일 많은 씀 **

      -- 순위를 구함. 

      -- RANK() OVER()는 동일 순위인 경우 1,1,3, 형식으로 출력하지만

      -- ROW_NUMBER() OVER()는 동일 순위인 경우 1,2,3, 형식으로 출력

      -- DENSE_RANK() OVER()는 동일 순위인 경우 1,1,2 형식으로 출력

      -- ROW_NUMBER() OVER()는 매우매우매우 중요한 함수이므로 반드시 알아 둘것 !!!!!!!!!!!!!!!!!!!!!!!

      

      --기본급 내림차순으로 순위를 구하기

      SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa; -- 비교데이타가 똑같으면 순위를 건너뜀

      

      SELECT name, basicpay, ROW_NUMBER() OVER(ORDER BY basicpay DESC) 순위 FROM insa; -- 비교데이타가 똑같아도 순위를 차례대로 매김

      

      -- 기본급 내림차순으로 순위. 단, 기본급이 같으면 수당 내림차순.

      SELECT name, basicpay, sudang, RANK() OVER(ORDER BY basicpay DESC, sudang DESC) 순위 FROM insa;

      

       SELECT name, basicpay, sudang, ROW_NUMBER() OVER(ORDER BY basicpay DESC, sudang DESC) 순위 FROM insa;

      

      -- 부서별 기본급의 내림차순 순위 구하기

      SELECT name, basicpay, buseo, 

        RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC, sudang DESC) 순위 

        FROM insa;

      

      SELECT name, basicpay, buseo, 

        ROW_NUMBER() OVER(PARTITION BY buseo ORDER BY basicpay DESC, sudang DESC) 순위 

        FROM insa;

      

      -- 출신도별 부서별 순위(학년의 반별)

      SELECT name, basicpay, city, buseo, 

        RANK() OVER(PARTITION BY city ORDER BY basicpay DESC, sudang DESC) 순위 

        FROM insa;

        

      -- 여자 인원수가 가장 많은 부서는?

      SELECT buseo, COUNT(*) FROM insa

        WHERE SUBSTR(ssn,8,1) IN (2,4,6)

        GROUP BY buseo;

        

      SELECT buseo FROM(

      SELECT buseo, COUNT(*) cnt, RANK() OVER(ORDER BY COUNT(*) DESC) 순위

        FROM insa WHERE SUBSTR(ssn,8,1) IN (2,4,6) GROUP BY buseo

        ) WHERE 순위 =1;

        

      -- 기본급여 많이 받는 1~10등 까지 출력(name, basicpay)

      SELECT name, basicpay,RANK() OVER(ORDER BY basicpay DESC) 순위 FROM(

      SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa 

      ) WHERE 순위 <=10;

      

      -- 기본급 상위 10% 출력(name, basicpay)

       SELECT name, basicpay FROM(

        SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa 

        )WHERE 순위<=TRUNC((SELECT COUNT(*) FROM insa) *0.1);

      

      -- 기본급 하위 10% 출력(

      SELECT name, basicpay FROM(

        SELECT name, basicpay, RANK() OVER(ORDER BY basicpay) 순위 FROM insa 

        )WHERE 순위<=TRUNC((SELECT COUNT(*) FROM insa) *0.1);

      

      -- 부서별 기본급여 가장 높은 사람들 출력( name, buseo, jikwi)

      SELECT name, buseo,basicpay, RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC) 순위

      FROM insa; -- 일단 부서별 순위를 매기는 쿼리

      

      SELECT name, buseo,basicpay FROM(

        SELECT name, buseo,basicpay,

        RANK() OVER(PARTITION BY buseo ORDER BY basicpay DESC) 순위 

        FROM insa

        ) WHERE 순위=1;

        

    -- ***** 나중에 게시판 작성 할 때 사용하는 쿼리 형식이므로 반드 암기 해야함. *****

    -- ROW_NUMBER()를 이용한 쿼리가 아래 ROWNUM을 사용한 쿼리보다 우수

      SELECT num,name,basicpay FROM(

        SELECT num, name, basicpay, ROW_NUMBER() OVER(ORDER BY num DESC) rnum FROM insa

        ) WHERE rnum>= 10 AND rnum <=15 ORDER BY num DESC;

        

     SELECT num,name,basicpay FROM(

      SELECT ROWNUM rnum, num, name, basicpay FROM(

        SELECT num, name, basicpay FROM insa ORDER BY num DESC

      )

    )WHERE rnum>=10 AND rnum<=15;


출처 : http://tibang.tistory.com/

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클에서 COMMENT 다는 법  (0) 2019.04.24
오라클 테이블스페이스 생성  (0) 2019.04.04
oracle hr 사용자 unlock  (0) 2016.01.25
ORACLE PLS-553 오류 처리  (0) 2015.04.29
오라클 백업  (0) 2015.04.24
728x90

잠겨있는 계정을 언락 시켜준다.

 

SQL>ALTER USER HR ACCOUNT UNLOCK;

 

계정의 비밀번호 재 설정

 

SQL>ALTER USER HR IDENTIFIED BY a1234; (HR 계정의 비밀번호를 HR로 변경하였습니다.)

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 테이블스페이스 생성  (0) 2019.04.04
오라클 분석함수  (0) 2016.05.04
ORACLE PLS-553 오류 처리  (0) 2015.04.29
오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
728x90

 
문제) 오라클 10g : export 실행할때나 토드로 접속할때 아래의 에러발생.
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized

조치1) sysdba로 로긴하여 아래 구문 실행

SQL> @ $ORACLE_HOME/javavm/install/rmjvm.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> @ $ORACLE_HOME/rdbms/admin/catalog.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/catproc.sql

==> 문제 해결 안됨.


원인) 아래 쿼리를 날렸을때 데이터 타입이 중복되어서 나옴

쿼리)

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);

결과)

CHARACTERSET  TYPES_USED_IN
----------------- -------------
WE8ISO8859P1      VARCHAR2
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
WE8ISO8859P1       CHAR
AL16UTF16            NCLOB
KO16KSC5601        CLOB
AL16UTF16            NVARCHAR2
KO16KSC5601        NVARCHAR2
WE8ISO8859P1       CLOB
AL16UTF16            NCHAR


조치2) sysdba로 아래 구문들 실행

주의사항)

a) Make sure the parallel_server parameter in INIT.ORA is set to false or it is not set at all.
b) Run the next script in SQLPLUS connected "as sysdba"


SQL> sqlplus /nolog 
SQL> conn /as sysdba 
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> COL VALUE NEW_VALUE CHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
SQL> COL VALUE NEW_VALUE NCHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
-- yes, 2 times startup/shutdown . This is not a typo
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

실행중 오류발생)

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE KO16KSC5601
==> ORA-12714: invalid national character set specified

원인)

NATIONAL CHARACTER SET 은 Oracle9i 이후에는 UTF8과 AL16UTF16 만 제공
확인)  

SELECT VALUE 
FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET')
결과)

PARAMETER                                  VALUE
---------------------------------- ---------------
NLS_CHARACTERSET                     KO16KSC5601

NLS_NCHAR_CHARACTERSET         KO16KSC5601

조치)

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';


이후 위의 조치2)를 다시실행하면 아래와 같은 결과를 얻을수 있다..


문제해결)

CHARACTERSET   TYPES_USED_IN
----------------- -------------
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
KO16KSC5601        CLOB
AL16UTF16            NCLOB
AL16UTF16            NVARCHAR2
AL16UTF16            NCHAR



 

Export 할때 아래문장을 자세히 봤으면 조치하는데 시간이 들 걸릴듯 했건만..

조치전) Export done in KO16KSC5601 character set and KO16KSC5601 NCHAR character set

조치후) Export done in KO16KSC5601 character set and AL16UTF16 NCHAR character set

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
728x90

@ A컴퓨터에서 B 컴퓨터로 oracle db 백업



1. A 컴퓨터 db export(백업)


1.1. 오라클 db가 있는 컴퓨터 cmd 창



1.2. export 파일을 다운받을 위치까지 들어간다음 명령어 입력

 

  명령어 : exp dbid/dbpassword@tnsname file=filename.dmp log=filename.log full=y statistics=none

 

** tnsname 확인위치 : http://blog.naver.com/ksy90604/220311841230

 
oracle export(backup) /A컴퓨터에서 db export 할 때 tnsnames.ora 확인 위치
1. 오라클 full backup > 오라클이 설치되어있는 컴퓨터 cmd 창으로 들어간다 > 파일을 다운받을 위치까지 들어간다음 명령어 입력 > exp .....
blog.naver.com
본문으로 이동

2. B 컴퓨터 테이블스페이스 생성(기존에 오라클이 깔려있다면)


2.1. B컴퓨터 cmd 창


2.2. c:... > SQLPLUS SYSTEM/MANAGER


 ** db가 두개일 경우 이러한 방법으로는 들어가지지 않음 

  해결방안 : 1) sqlplus /nolog

 2) conn /@sid as sysdba

2.3. 테이블 스페이스 생성 

    SQL> create tablespace 생성할이름

  2  datafile 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\생성할이름.DBF'

  3  SIZE 1000M

  4  AUTOEXTEND ON

  5  EXTENT MANAGEMENT LOCAL AUTOALLOCATE;


3. 사용자 생성

sql > CREATE USER 유저이름  IDENTIFIED BY 유저이름;


4.  사용자 권한 부여

SQL> GRANT DBA TO 유저이름;


5. 사용자 테이블 스페이스 권한 수정

SQL> ALTER USER 유저이름 DEFAULT TABLESPACE 생성된테이블스페이스이름;


6. B 컴퓨터 db import  방법


6.1. B 컴퓨터 cmd창

6.2. import할 파일이 있는 위치까지 들어감

6.3. 명령어 

 imp dbid/dbpassword@tnsname file=operation.dmp log=operation.log fromuser=익스포트받은 유저이름 touser=임포트받을 유저이름 ignore=y

//fromuser는 export한 user touser는 impoert할 유저

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

oracle hr 사용자 unlock  (0) 2016.01.25
ORACLE PLS-553 오류 처리  (0) 2015.04.29
오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
프로시저 혹은 함수 목록 출력시  (0) 2014.06.25

+ Recent posts