728x90
반응형
SMALL
728x90
반응형
LIST
728x90
반응형
SMALL
어느 날 잘 되고 있던 Oracle Database가 갑자기 접속이 안 되는 현상이 발생하였다.
Error Code는 ORA-01034, ORA-27101
구글링을 하여도 거의 서비스를 재시작하라는 거밖에 없었다.
모든 게 정상적으로 서비스가 올라와 있었는데 접속이 되지 않는 경우, 어떻게 해결하는지 알아보도록 하자.

■ ORA-01034, ORA-27101 에러 해결책

1. 잘 사용하고 있던 Database가 갑자기 아래 이미지와 같이 ORA-01034, ORA-27101 에러코드가 발생하면서 접속이 되지 않았다.

에러창

2. 명령 프롬프트 - sqlplus를 실행하여 sysdba로 접속한다.

>> sqlplus / as sysdba

 

-- 정상적으로 접속되는 경우 아래 이미지와 같이 SQL로 진입한다.

-- 접속이 되지 않는 경우 아래 이미지와 같이 ORA-12560 에러코드가 발생

 

3. SQL로 진입하지 못했을 경우, 명령 프롬프트에서 아래와 같이 먼저 Database를 직접 지정한다.

>> set oracle_sid=test    -- test는 접속할 Database로 알맞게 변경한다.

 

4. 그리고 다시 명령 프롬프트에서 sqlplus / as sysdba로 다시 접속하면 SQL로 진입된다.

    단, Connected to an idle instance.라는 메시지가 나온다. (휴지 인스턴스(idle instance)는 데이터베이스가 셧다운 된 상태)

5. 아래의 쿼리를 실행하면, 아래 이미지와 같이 에러가 발생한다. 

SQL> SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;    -- 현재 접속해 있는 Database와 상태를 확인할 수 있는 쿼리

 

6. startup을 실행한다. 이미 실행 중이라는 메시지가 나오면, shtdown immediate를 하고 다시 startup 한다.

    아래와 같이 에러가 발생한다. (정상적인 서버도 아래 경로에 xxx.ORA파일은 없음)

SQL> startup;

 

7. [C:\app\aa\virtual\admin\bb\pfile]의 경로로 들어가면 [init.ora. 숫자]로 된 파일이 있는데, 이 파일을 복사하여

    [C:\app\aa\virtual\product\12.2.0\dbhome_1\database] 경로 안으로 붙여 넣고 파일 이름을 [initbb.ora]로 변경한다.

    (주의 : 빨간색 글씨는 Database명으로, 해당 Database를 선택하면 된다. 경로는 사용자 PC에 따라 달라진다.)

 

8. SQL에서 startup을 파라미터와 함께 실행한다.

SQL> startup pfile="C:\app\aa\virtual\product\12.2.0\dbhome_1\database\initbb.ora"

 

-- 아래 이미지와 같이 성공적으로 startup이 된다.

 

9. 5번의 쿼리를 다시 실행한다. 아까와 달리 조회가 되는 것을 볼 수 있다.

SQL> SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;    -- 현재 접속해 있는 Database와 상태를 확인할 수 있는 쿼리

 

10. 마지막으로 DBeaver에서 Connection Test 해봐도 접속이 잘되는 것을 볼 수 있다.

 

※ 주의 : 이렇게 서비스가 시작된 것은 윈도우 서비스에서 재시작을 하면, 위와 같이 에러가 똑같이 나기 때문에 startup 할 때, pfile 파라미터를 넘

              겨줘서 서비스를 재시작해야 한다.

728x90
반응형
LIST
728x90
반응형
SMALL
Oracle DB Dump는 [expdp, impdp] 방법과, [exp, imp] 이렇게 2가지로 크게 요약된다.
이번 시간에는 [exp, imp]를 이용하여, 전체 데이터를 export, import를 해보자.

■ exp를 이용하여 데이터 export

1. 명령 프롬프트(cmd)를 실행하여, 아래 명령어를 입력한다.

>> exp userid=system/1@database file='C:\dump.dmp' full=y

 

-- system : 로그인 ID (고정 값이 아니고, 현재 사용하고 있는 ID를 입력하면 됨)

-- 1 : 로그인 Password (고정 값이 아니고, 현재 사용하고 있는 ID에 맞는 Password를 입력하면 됨)

-- database : export 할 database (옵션 값으로 안 써도 됨. database가 여러 개 있을 때 지정 - export 할 database를 입력하면 됨)

-- file : export 할 파일 경로 및 파일명

-- full = y : database를 전체 export (옵션 값)

명령 프롬프트에 명령어 입력

 

2. export가 완료되면 위에서 지정한 경로에 dmp파일이 생성된다.

    (파일이 3개인 이유는 과거에 export를 해서 생긴 파일이므로 별 다른 의미는 없음)

 

■ imp를 이용하여 데이터 import

1. 명령 프롬프트(cmd)를 실행하여, 아래 명령어를 입력한다.

>> imp userid=system/1@database file='C:\dump.dmp' full=y

 

-- system : 로그인 ID (고정 값이 아니고, 현재 사용하고 있는 ID를 입력하면 됨, import대상 ID)

-- 1 : 로그인 Password (고정 값이 아니고, 현재 사용하고 있는 ID에 맞는 Password를 입력하면 됨)

-- database : import 할 database (옵션 값으로 안 써도 됨. database가 여러 개 있을 때 지정 - import 할 database를 입력하면 됨)

-- file : import 할 파일명

-- full = y : database를 전체 export (옵션 값)

 

2. import가 완료되면 해당 database를 확인해 본다. import가 잘 되어있는 것을 확인할 수 있다.

 

■ 주의할 점

1. NLS_LANG을 export 한 것과 맞춰서 import 해야 한다.

NLS_LANG 확인

2. NLS_LANG을 맞추지 않을 경우 아래 이미지 같이 주석 문자가 깨지는 현상이 발생하였다. (다시 import 함)

주석 문자 깨짐

3. NLS_LANG을 을 맞추고 다시 Import하니 주석도 잘 나오는 것을 확인하였다.

 

※ 참고로 문자 관련해서는 아래 포스팅도 같이 참고하면 좋을 거 같다.

2024.01.27 - [Oracle] - ORA-12721, ORA-06552, ORA-06553 해결 방법 및 주의 사항

 

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 설치 후, DBeaver를 통하여 접속하려고 하였으나,
[ORA-12638 신용 검색에 실패했습니다.]라는 에러가 발생하였다.
해결책은 의외로 간단하였다.

 

■ 해결책

1. 오라클이 설치되어 있는 경로를 찾는다. 대략 아래와 비슷하다.

C:\Oracle\product\12.2.0\dbhome_1\network\admin

2. 위의 경로로 들어가면 sqlnet.ora라는 파일이 있다.

3. 파일을 열어 아래 이미지 사각형으로 표시된 부분 앞에 #을 붙여주고 저장하면 DBeaver가 잘 접속되는 것을 확인할 수 있다.

4. 바로 저장이 안 되면 다른 경로로 저장한 후 파일을 덮어쓰기 하도록 하자.

 

# 원인 : 오라클 설치 시 관리자 권한으로 설치하지 않아 생기는 문제

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 설치 후, 데이터 Import까지 하여 잘 사용하고 있었으나, 문자열을 아스키코드로 변환하는 과정에서,
과거 오라클을 설치했을 때와 다른 아스키코드 값이 나와 확인해 보니,
Characterset이 다르게 설정되었다는 것을 알게 되었다.
Characterset을 변경하는 방법 및 변경 과정에서 ORA-12721 에러가 발생하였는데,
이 모든 것들의 해결법을 알아보도록 하자.
이 작업을 하기 전에 데이터 Backup을 받아 놓도록 하자.
(Characterset을 바꾸면 이미 저장되어 있는 한글 데이터는 깨질 수 있다.)

 

■ 쿼리를 통하여 아스키 값 확인

-- 아래 쿼리 실행을 통하여, 과거 설치된 버전과 현재 설치된 버전 아스키 값 확인

select ascii('가나다')

 from dual

왼쪽: 과거 / 오른쪽: 현재

 

■ 아스키 값이 다르게 나오는 경우 먼저 Characterset을 확인

-- 아래 쿼리를 실행

select *

 from sys.props$

where name in ('NLS_NCHAR_CHARACTERSET', 'NLS_CHARACTERSET')

 

-- 실행 결과

-- 이전에 설치했던 Characterset 확인

-- NLS_CHARACTERSET이 다르다.

 

■ Characterset 변경

1. 명령 프롬프트(cmd) 창 실행하여 아래 구문을 차례대로 실행한다.

2. sqlplus / as sysdba

3. update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';

4. commit;

5. Characterset을 다시 확인하면, 아래 이미지와 바뀐 것을 볼 수 있다.

6. 아스키 값을 확인했던 쿼리를 다시 실행해 보면 아직 바뀌지 않은 것을 볼 수 있다. 서비스로 들어가서 아래 표시된 부분을 재시작한다.

    (sqlplus에서 shutdown immediate; startup;으로도 가능)

    그러면 아스키 값이 변경된 것을 확인할 수 있다.

7. 이후, 문제는 SQL편집 툴에서 테이블 목록을 열면 아래와 같은 메시지가 발생한다.

    ORA-06552: PL/SQL: Compilation unit analysis terminated

    ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다

8. 아래 쿼리를 실행하여 몇 가지를 확인해 보자.

-- 아래 쿼리를 실행

select distinct

           nls_charset_name(charsetid) characterset,

           decode(type#, 1, decode(charsetform, 1, 'varchar2',

                                                                           2, 'nvarchar2',

                                                                           'unknown'),

                                    9, decode(charsetform, 1, 'varchar',

                                                                            2, 'nchar varying',

                                                                           'unknown'),

                                    96, decode(charsetform, 1, 'char',

                                                                              2, 'nchar',

                                                                             'unknown'),

                                    112, decode(charsetform, 1, 'clob',

                                                                                2, 'nclob',

                                                                               'unknown')

                       ) types_used_in

  from sys.col$

where charsetform in (1, 2) and type# in (1, 9, 96, 112)

order by characterset

 

-- 실행 결과 (이쪽에는 Characterset이 바뀌지 않았음)

 

■ ORA-06552, ORA-06553 해결방법

1. sqlplus로 접속하여, 아래 순서대로 실행한다.

2. shutdown immediate;

3. startup mount;

4. ALTER SYSTEM ENABLE RESTRICTED SESSION;

5. ALTER SYSTEM SET AQ_TM_PROCESSES = 0;

6. ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;

7. ALTER DATABASE OPEN;

8. col value new_value charset

9. SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

10. ALTER DATABASE CHARACTER SET INTERNAL_USE & CHARSET;

11. shutdown immediate;

12. startup;

13. 여기까지 작업을 진행하면 에러를 해결할 수 있다.

 

※ 10번에서 [ORA-12721 다른 세션이 활성일 때는 실행할 수 없는 작업] 에러가 나오는 경우 해결책

  - 명령 프롬프트를 관리자 권한으로 실행하여 다시 진행한다. (여기까지만 해서 해결됨)

  - 그래도 안 되는 경우 shutdown immediate; startup; 진행 후, 다시 명령 프롬프트를 관리자 권한으로 실행하여 다시 진행해 본다.

 

■ 마지막으로 데이터 확인

1. Characterset을 변경하기 전 한글 데이터가 이미 존재하는 경우, 한글이 깨지는지 확인한다.

2. 한글이 깨지면, Import를 다시 한다. (이 방법 말고, 해결책이 있으면 댓글 달아주세요.)

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 서버로 붙지 못하여, 이런저런 작업을 하면서 shutdown immediate, startup을 반복하는 중
아래와 같은 에러메시지를 만났다.
해결책은 의외로 간단했다.

■ shutdown immediate 에러

1. 윈도우 서비스에서 재시작이 되지 않아 sqlplus를 접속하여 shutdown immediate을 시켜봤는데 다음과 같은 에러가 발생하였다.

   - sqlplus / as sysdba로 접속

   - shutdown immediate

 

2. cmd창을 닫고 재실행 후 sqlplus 재접속, shudown immediate를 실행하면 정상적으로 실행된다.

    원인은 데이터베이스가 정상적으로 종료되었을 때 발생되는 문제라고 한다.

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 서버를 설치하고, DBeaver를 통하여 서버에 접속을 시도하는 중
ORA-12514: 데이터베이스에 접속할 수 없습니다. 서비스가 리스너에 등록되지 않았습니다.
라는 메시지와 함께 접속되지 않았다.
해결책을 알아보도록 하자.

 

■ 접속에러

- 오라클을 설치하고 설치할 때의 정보를 아래와 같이 입력하였다. Test Connection을 누르니 아래와 같은 메시지가 발생하였다.

 

■ 해결책

1. 오라클을 설치한 경로로 이동한다. 설치 경로에 따라 다르겠지만 기본으로 설치된 경로는 아래 경로와 비슷한 형태일 것이다.

    (C:\app\belli\virtual\product\12.2.0\dbhome_1\network\admin)

2. 위와 같은 경로로 들어가서 listener.ora 파일을 클릭한다.

3. SID_LIST_LISTENER 하단 빨간색 박스에 오라클 서버를 설치할 때의 Database 이름을 적어 넣고 저장한다.

listener 파일 내용

4. 혹시 설치할 때의 Database의 이름이 무엇인지 모르면 아래의 이미지를 보고 설치할 때의 기억을 되살려야 한다.

서버설치할때의 Database이름

5. 저장하였으면 다시 접속을 시도해 본다.

6. 접속이 되지 않으면 서비스에 가서 오라클 리스너를 재실행해본다. 그러면 접속되는 것을 볼 수 있을 것이다.

    (혹시라도 접속이 안 되는 경우 아래 OracleService부터 재실행해보자.)

728x90
반응형
LIST
728x90
반응형
SMALL

■ Pivot - 행을 열로 변환

# Sample Query - 복사, 붙여 넣기로 테스트

select ymd, nvl(총무과, 0) as 총무과, nvl(인사과, 0) as 인사과, nvl(전산실, 0) as 전산실
  from (select a.ymd, a.dept, count(1) as cnt
              from (select '20230901' as ymd, '총무과' as dept from dual
                         union all
                         select '20230901' as ymd, '인사과' as dept from dual
                         union all
                         select '20230902' as ymd, '전산실' as dept from dual
                         union all
                         select '20230902' as ymd, '총무과' as dept from dual
                         union all
                         select '20230903' as ymd, '인사과' as dept from dual) a
            group by a.ymd, a.dept) a
            pivot (sum(cnt) for dept in ('총무과' as 총무과, '인사과' as 인사과, '전산실' as 전산실))
 order by ymd

Pivot 결과

■ UnPivot

# Sample Query - 복사, 붙여 넣기로 테스트

select *

 from (select 11 as apple, 2 as lemon, 17 as grape from dual
           union all

           select 5 as apple, 7 as lemon, 12 as grape from dual

           union all

           select 8 as apple, 6 as lemon, 7 as grape from dual

           union all

           select 9 as apple, 2 as lemon, 9 as grape from dual

           union all

           select 3 as apple, 1 as lemon, 1 as grape from dual)
unpivot (count for fruit in (apple, lemon, grape))

order by fruit

UnPivot 결과

 

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 데이터베이스에서 테이블스페이스를 생성할 때, 두 가지 유형의 테이블스페이스를 선택할 수 있다.
이 두 가지 유형 차이를 알아보도록 하자.

 

■ Bigfile 특징

1. 매우 큰 데이터 파일을 지원하는 특별한 유형의 테이블스페이스이다.

2. 하나의 데이터 파일만을 가지며, 대용량 데이터 관리 및 처리에 특화되어 있다.

 

■ Bigfile 장점

1. 하나의 데이터 파일만을 가지기 때문에, 파일 수 관리가 간단해지며 파일 할당과 관련된 오버헤드가 줄어든다.

2. 대규모 데이터베이스 시스템에서 높은 처리량과 입출력(IO) 성능을 제공한다.

3. 대량의 데이터를 빠르게 처리할 수 있는 높은 처리량을 제공한다.

4. 하나의 데이터 파일만을 가지기 때문에, 백업과 복구 작업을 간소화한다.

5. 많은 수의 작은 파일을 생성하지 않아도 되므로 데이터베이스의 설치 및 유지보수가 간소화된다.

6. 디스크 공간을 효율적으로 사용할 수 있다. 작은 파일들로 인해 발생하는 낭비를 줄일 수 있다.

 

■ Bigfile 단점

1. 작은 테이블이나 작은 규모의 데이터를 저장하기에는 적합하지 않을 수 있다.

    작은 크기의 테이블을 위한 것이 아니기 때문에 작은 규모의 데이터베이스에서는 오버헤드가 발생할 수 있다.

2. 파일에 손상이 발생하면 해당 파일 전체를 복구해야 한다. 이로 인해 복구 시간이 증가할 수 있다.

3. 하나의 큰 데이터 파일로 구성되기 때문에 데이터 파일의 크기가 계속 증가할 수 있다. 따라서 데이터베이스 용량 관리가 중요한데, 이를 관리하는데 어려움이 있을 수 있다.

4. 작은 크기의 테이블을 처리할 때에는 성능상의 제약이 있을 수 있다.

 

■ Smallfile 특징

1. 작은 크기의 데이터 파일을 사용하는 특별한 유형의 테이블스페이스이다.

2. 주로 작은 규모의 데이터베이스나 작은 테이블을 다룰 때 유용하다.

 

■ Smallfile 장점

1. 작은 규모의 데이터를 효율적으로 관리할 수 있다. 작은 테이블을 저장하거나 작은 규모의 데이터베이스를 다루는 데에 유리하다.

2. 데이터베이스의 용량 관리가 더욱 유연하다. 필요에 따라 데이터 파일을 추가하거나 관리하기 쉽다.

3. 백업 및 복구 작업이 더 빨리 수행될 수 있다.

4. 테이블이나 인덱스를 저장할 때 더 효율적인 성능을 제공한다.

5. 테이블스페이스의 구조가 단순하다. 데이터베이스의 구조를 이해하고 관리하기가 쉬워진다.

6. 시스템 리소스 사용량이 감소한다. 시스템 자원을 더욱 효율적으로 사용할 수 있도록 도와준다.

7. 대규모 데이터베이스에서 발생하는 관리 부담을 줄일 수 있다.

8. 작은 테이블과 데이터를 처리하는 데 최적화되어 있으므로 작은 크기의 데이터에 대한 액세스 성능을 향상시킬 수 있다.

 

■ Smallfile 단점

1. 대용량 데이터 처리에는 적합하지 않다. 대규모 데이터베이스에서는 데이터 파일의 수가 많아져 관리 오버헤드가 증가하며, 성능 이슈가 발생할 수 있다.

2. 데이터 파일의 수가 많아지면 백업 및 복구 시간이 늘어날 수 있다.

3. 작은 크기의 데이터 파일을 사용하기 때문에 데이터 파일의 크기가 계속해서 증가할 수 있다. 따라서 데이터베이스의 용량 관리가 어려워질 수 있다.

4. 작은 블록 크기를 사용하여 데이터를 저장하므로 대용량 데이터 처리나 대규모 트랜잭션 처리에는 성능 저하가 있을 수 있다.

5. 대량의 데이터를 검색하거나 조인하는 작업에서 성능 이슈가 발생할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL
오라클을 사용하면 SID, ServiceName이라는 말을 들어봤을 것이다.
항상 헷갈려왔던 SID, Service Name의 차이를 알아보고, SID를 여러 개 구성하는 이유를 살펴보자.

 

■ SID

1. 오라클 데이터베이스를 고유하게 식별하는 문자열로 데이터베이스 서버에는 여러 개의 인스턴스가 존재할 수 있다.

2. 각각의 오라클 인스턴스(Instance)는 유일한 SID를 가져야 한다.

3. 이 SID는 오라클 데이터베이스 서버가 실행될 때 자동으로 설정되는 값으로, 일반적으로 데이터베이스를 설치할 때 지정한다.

4. SID 추가 방법은 윈도우 - 시작 - Database Configuration Assistant을 클릭하여, 설치할 때와 동일한 방법으로 추가한다.

5. SID 확인방법

SELECT INSTANCE FROM v$thread;

 

■ ServiceName

1. 오라클 데이터베이스에 접속할 때 사용되는 서비스 식별자이다.

2. 이는 클라이언트 응용 프로그램이 오라클 데이터베이스와 통신할 때 사용되는 문자열이다.

3. 오라클 데이터베이스를 사용하려는 클라이언트가 데이터베이스 서버에 접속하면, 서비스 이름을 지정하여 특정 데이터베이스 인스턴스에 연결한다.

4. 오라클 데이터베이스는 한 번에 여러 개의 서비스를 호스팅 할 수 있으며, 각 서비스는 고유한 서비스 이름을 가질 수 있다.

5. Service Name은 TNSNAMES.ORA 파일로 관리된다.

6. TNSNAMES.ORA 파일의 기본 위치는 클라이언트 시스템의 ORACLE_HOME 디렉터리에 있다. 일반적으로 ORACLE_HOME/network/admin 경로에 위치한다.

    (경로예제: Z:\...\product\12.2.0\dbhome_1\network\admin\)

7. tnsnames.ora파일은 아래와 같이 구성된다.

<서비스 이름> =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = <호스트 이름 또는 IP 주소>)(PORT = <포트 번호>))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = <데이터베이스 서비스 이름>)

    )

  )

8. ServiceName 확인방법

SELECT name, db_unique_name FROM v$database;

 

■ SID 여러 개 구성하는 이유

1. 각각 다른 메모리 구성, 파라미터 설정, 데이터베이스 객체 등을 가질 수 있다. 이로 인해 데이터베이스의 특정 요구 사항에 맞게 최적화된 설정이 가능하다.

2. 데이터베이스 간에 서로 접근 권한을 분리할 수 있고, 또한 중요한 데이터를 보다 강력하게 보호할 수 있다.

3. 여러 개의 데이터베이스 인스턴스는 부하를 분산하여 데이터베이스 전체의 성능을 향상시킬 수 있다. 특정 데이터베이스에 발생하는 부하가 다른 데이터베이스에 영향을 미치

    지 않도록 구성할 수 있다.

4. 여러 개의 데이터베이스 인스턴스를 이용하여 고가용성 및 장애 복구를 구현할 수 있다. 하나의 데이터베이스가 장애를 겪더라도 다른 데이터베이스가 가용하게 유지될 수 있

    다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ INS-35075 오류 - 오라클 완전 삭제 방법

1. 윈도우 - 시작 - 서비스를 입력한다.

2. 서비스를 실행하여, Oracle에 관련된 서비스를 중지시킨다.

3. 오라클이 설치되어 있는 폴더(.... product\12.2.0\dbhome_1\ 밑에 있음)로 가서 deinstall.bat을 실행시킨다.

4. 삭제가 완료되었으면, 실행창(Ctrl+R)을 실행시킨다.

5. 실행창에 regedit를 입력한다.

6. 레지스트리에서 아래 목록을 삭제한다.

  - HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\ControlSet001\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\ControlSet002\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\CurrentControlSet\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_CLASSES_ROOT ORACLE, Ora로 시작하는 거 있으면 삭제

7. 6번까지 완료되었으면, 반드시 컴퓨터를 재부팅하고 다시 설치한다.

 

■ 오라클이 완전히 삭제되지 않는 이유

1. 대규모 데이터베이스 관리 시스템으로, 매우 복잡한 설치 구조를 가지고 있다. 이로 인해 제거 과정도 매우 복잡하고 시스템의 여러 부분에 설치되어 있을 수 있다.

    설치 프로세스 중에 생성된 여러 파일과 레지스트리 항목들을 하나하나 식별하여 삭제해야 하므로 완전한 제거가 어려울 수 있다.

2. 다른 소프트웨어와 강력한 의존성을 가질 수 있다.

    예를 들어, 다른 애플리케이션 또는 시스템 프로세스가 오라클 데이터베이스와 연동되어 작동하거나, 다른 프로그램이 오라클 클라이언트를 사용하는 경우 등이 있다.

3. 설치 과정에서 서비스와 백그라운드 프로세스를 생성하여 데이터베이스 관리를 수행한다.

    이러한 서비스와 프로세스는 시스템이 부팅될 때 자동으로 실행되며, 설치된 오라클을 완전히 제거하기 위해서는 이러한 서비스와 프로세스도 중단해야 한다.

4. 대량의 데이터 파일과 로그 파일을 생성한다.

    이러한 파일들은 데이터베이스 운영에 필수적이지만, 설치된 오라클을 삭제하더라도 데이터 파일과 로그 파일은 그대로 남을 수 있다.

    이로 인해 디스크 공간을 차지하게 되고, 완전한 삭제를 어렵게 만들 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ 에러 과정 및 해결

1. impdp를 통하여 database import 중 에러가 발생

2. Z:\998.Oracle\oradata\orcl\ (경로는 사용자마다 다를 수 있음) 안에 만들어 둔 .DBF을 삭제

3. DBeaver를 통하여 오라클을 접속하려고 하는데 ORA-01033 에러 발생

4. 아래 서비스를 재가동해 봄. - 여전히 되지 않음

5. 명령 프롬프트(cmd) - sqlplus 접속 - shutdown 및 시작 명령어 실행 (빨간색 글씨) - 여전히 안됨

C:\Users\MJMK>sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 일 7월 16 11:39:45 2023

Copyright (c) 1982, 2016, Oracle. All rights reserved.

 

다음에 접속됨:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

 

SQL>shutdown immediate;

ORA-01109: 데이터베이스가 개방되지 않습니다

 

데이터베이스가 마운트 해제되었습니다.

ORACLE 인스턴스가 종료되었습니다.

 

SQL>startup;

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE 인스턴스가 시작되었습니다.

 

Total System Global Area 5133828096 bytes

Fixed Size                                 8757472 bytes

Variable Size                      1560284960 bytes

Database Buffers               3556769792 bytes

Redo Buffers                            8015872 bytes

데이터베이스가 마운트 되었습니다.

ORA-01157: 데이터 8 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오

ORA-01110: 8 데이터 파일: 'Z:\998.ORACLE\ORADATA\ORCL\xxxx.DBF'

Database Buffers 3556769792 bytes

Redo Buffers 8015872 bytes

 

6. 아래와 같이 다시 실행 후, DBeaver 접속 시도 - 성공

SQL>alter database datafile 'Z:\998.ORACLE\ORADATA\ORCL\xxxx.DBF' offline drop;

데이터베이스가 변경되었습니다.

SQL>alter database open;

데이터베이스가 변경되었습니다.

 

7. 아래와 같은 오류 메시지가 나오면 데이터 파일명이 아직 drop이 안된 것이 있는 것으로, 메시지가 안 나올 때까지 6번과 같이 반복 실행한다.

SQL>alter database open;

*

1행에 오류:

ORA-01157: 데이터 11 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오

ORA-01110: 11 데이터 파일: 'Z:\998.ORACLE\ORADATA\ORCL\xx.DBF'

728x90
반응형
LIST
728x90
반응형
SMALL

■ 오라클 12C 다운로드

1. 오라클 다운로드 사이트 : https://edelivery.oracle.com/osdc/faces/Home.jspx

2. 다운로드를 위해서는 계정이 있어야 한다. 계정이 있으면 Sign In, 없으면 계정을 생성한다.

오라클 Sign In, Create Account 화면

3. 필자는 계정이 있으므로 사용자 이름 및 암호를 입력하고 로그인

오라클 계정 로그인

4. 오라클 설치버전을 선택한다. 설치버전을 클릭하고, 우측 상단의 Continue버튼을 클릭한다.

오라클 설치버전 선택

5. 설치할 패키지를 체크한다. 필자는 서버와 클라이언트만 필요하기 때문에 위의 2개를 체크하고 Platforms/Languages를 선택한다.

    (필자는 OS가 Microsoft Windows x64 (64-bit)를 선택), 이후 우측 상단 또는 하단의 Continue 버튼을 클릭한다.

패키지 선택화면

6. 하단의 체크란에 체크하고 Continue 버튼을 클릭한다.

7. Download 할 파일을 확인하고 Download 버튼을 클릭한다.

8. 다운로드가 완료되면 아래와 같은 파일이 다운로드 폴더 안에 생성된다.

9. 파일을 클릭하면 아래 이미지와 같이 실제 파일을 다운로드할 수 있는 창이 뜬다. 다운로드 폴더를 선택하고 Next를 눌러 파일을 다운로드한다.

10. 압축파일 V839963-01.zip을 풀고 setup을 클릭하여 설치를 시작한다. [My Oracle Support를 통해 보안 갱신 수신 체크]를 해제하고 다음을

      클릭한다. 그럼 아래와 같이 경고 메시지가 뜨는데, 예를 클릭한다.

11. 순서대로 아래 이미지와 같이 설치를 진행한다.

12. Oracle Base 등 경로에는 한글 및 특수문자가 들어가지 않도록 하며, 전역 데이터 베이스 비밀번호는 대소문자, 숫자 포함을 권장하나, 간단하게 입력해도 무방하다.

      설정한 비밀번호는 system 계정의 비밀번호로, 사용자를 만들지 않고 로그인할 때 필요하다.

      (설치 도중 에러 발생, 14번 참고 : Failed to add [Computer Name] install user to %2% group.)

13. 설치를 완료했으면, 오라클이 접속되는지 확인해 본다. (Oracle SQL Developer를 통해 확인)

      항목을 입력하고 테스트 버튼 클릭, 왼쪽 하단 상태가 성공이면 접속 완료된 것이다.

      (로그인 도중 에러 발생, 14번 참고 : ORA-01017: 사용자명/비밀번호가 부적합, 로그온 할 수 없습니다.)

    - 접속 이름 : 아무거나 입력

    - 사용자 이름 : system

    - 비밀번호 : 오라클을 설치하였을 때 지정한 비밀번호

    - 호스트 이름 : local에 접속할 것이므로, localhost

    - 포트 : 오라클에서 사용하는 기본포트로 1521

    - SID : 오라클을 설치하였을 때 만든 orcl

14. 위와 같은 절차로 진행하였을 때, 순조롭게 오라클이 설치될 수도 있지만, 그렇지 않은 경우 여러 에러에 부딪힐 수도 있다.

      설치하면서 났던 에러를 정리해 보았다. - 오라클 12C 에러 (설치, 접속)

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 12C 설치를 설치 및 접속하는 동안 여러 에러를 만날 수 있었는데,
에러 종류와 해결 방법을 알아보자.

 

■ 오라클 12C 설치 에러

1. 에러 메시지 : Failed to add [Computer Name] install user to %2% group.

  - Computer Name은 각 PC에 따라 명칭이 달라진다.

  - 이 에러는 사용자 이름과 컴퓨터 이름과 같으면 안 된다고 한다. 무슨 말인지 이해를 못 해서 무시하고 계속 설치를 진행한 결과 사용하는 데는 문제가 없었다.

 

■ 오라클 12C 접속 에러

1. DBeaver를 이용하여 접속을 시도했으나 다음과 같은 에러 메시지가 발생하였다. (초기 비번 대소문자 혼용해서 만듦)

  - ORA-01017: 사용자명/비밀번호가 부적합, 로그온 할 수 없습니다.

2. 명령 프롬프트(CMD)에 접속하여 다음과 같은 명령어를 입력한다.

C:\Users\MK> sqlplus / as sysdba

 

3. SQL에 접속되었으면, 다음과 같은 명령어를 입력하여 대소문자 구분 설정값을 확인한다.

  -  설정값 : TRUE (대소문자를 구분한다는 뜻)

SQL> show parameter sen

대소문자 설정값 확인

4. 대소문자 구분 안 하게 설정값을 변경한다.

SQL> alter system set sec_case_sensitive_logon=FALSE;

 

5. 그래도 접속이 되지 않는다면, 비밀번호를 재설정한다. (필자는 1로 변경)

SQL> alter user system identified by 1;

 

6. 그래도 접속이 되지 않는다면, 대소문자 설정값을 다시 구분하게 설정한다.

SQL> alter system set sec_case_sensitive_logon=TRUE;

 

7. 이렇게 반복해서 접속이 완료되었다.

728x90
반응형
LIST

+ Recent posts