출처 : http://devzeroty.tistory.com/entry/%E3%85%87%E3%85%87%E3%85%87

출처2 : http://all4museum.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B3%A0-%EC%A4%91%EC%A7%80%ED%95%98%EA%B8%B0-%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%B0%B0%EC%B9%98%ED%8C%8C%EC%9D%BC

출처3 : http://babtingdev.tistory.com/67

출처4 : http://somahhh.tistory.com/entry/ORA-6552-ORA-6553-PLS-553



2016/08/05 - [프로그램 자료/Oracle] - System 계정 ORA-01031: 권한이 불충분합니다 해결방법, system 계정에 sysdba 권한 주기




[ 문자셋 확인 ]
SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_CHARACTERSET';

SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_NCHAR_CHARACTERSET';

[ 언어셋 확인 ]
SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_LANGUAGE';


[ 캐릭터 셋 변경 sysdba 권한으로 ] 
update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';
update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET';
update sys.props$ set value$='AMERICAN_AMERICA.KO16MSWIN949' where name='NLS_LANGUAGE';
commit;


[ 캐릭터 셋 변경 후 캐릭터셋 정보 다시 확인 ] 

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


캐릭터셋 확인 쿼리 결과(잘못된 경우): varchar2가 2개 의 캐릭터셋이 설정되어있음.
        CHARACTERSET                            TYPES_USED_IN
        -----------------------------------------------------
        AL16UTF16                               NCHAR
        AL16UTF16                               NVARCHAR2
        AL16UTF16                               NCLOB
        US7ASCII                                CHAR
        US7ASCII                                VARCHAR2
        WE8DEC                                 VARCHAR2
        US7ASCII                                CLOB
       
       
캐릭터셋 확인 쿼리 결과(정상인 경우): TYPES_USERD_IN 하나당 하나의 캐릭터셋
        CHARACTERSET                            TYPES_USED_IN
        -----------------------------------------------------
        AL16UTF16                               NCHAR
        AL16UTF16                               NVARCHAR2
        AL16UTF16                               NCLOB
        AL32UTF8                                CHAR
        AL32UTF8                                VARCHAR2
        AL32UTF8                                CLOB


만약 잘못된 형식으로 CHAR와 NVARCHAR가 두개 씩 나온다면 

sysdba 계정으로 아래 쿼리 실행

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

COL VALUE NEW_VALUE NCHARSET

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

SHUTDOWN IMMEDIATE;

STARTUP;

-- yes, 2 times startup/shutdown . This is not a typo

SHUTDOWN IMMEDIATE;

STARTUP;

SHUTDOWN IMMEDIATE;

STARTUP;




재시작 할 때는 아래의 배치파일을 적당히 수정해서 쓰면 편하다

Start_ORCL.bat


Stop_ORCL.bat






Posted by motolies
,