[ 에러 사항 ]

- 증상 1번

# 일반 사용자로 접속시 에러 발생

$ sqlplus ID/PW@SID

 

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 11 15:12:50 2014

 

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

 

ERROR:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

 

- 증상 2번

$ 인스턴스 실행 시 아래와 같은 에러 발생

$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 11 15:41:55 2014

 

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

 

SQL> connect orcl as sysdba

Enter password: 

Connected to an idle instance.

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system

 

 

[ 원인 ]

오라클 11g에서 사용하는 AMM(automatic memory management)의 할당 메모리가 적다(memory_max_target,memory_target)

아래 명령어로 확인 시 결과가 나와야한다. 

SQL> show parameter memory

 

[ 해결방법 ]

- 확인 -

#df로 확인 시 /dev/shm할당 메모리를 확인한다. 가용 메모리가 충분한데도 에러가 발생한다.

# df -h

tmpfs                  32G   12G   21G  36% /dev/shm

 

- 조치 -

# 실제 메모리에 등록될 데이터 용량이 더 많은것이다. 충분히 늘려준다.

# mount -t tmpfs shmfs -o size=48g,remount /dev/shm

 

- 인스턴스 실행 -

$ sqlplus /nolog
SQL> connect orcl as sysdba

Enter password: 

Connected to an idle instance.

SQL> startup

ORACLE instance started.

 

Total System Global Area 2.6991E+10 bytes

Fixed Size                  2213976 bytes

Variable Size            2.5501E+10 bytes

Database Buffers         1342177280 bytes

Redo Buffers              145174528 bytes

Database mounted.

Database opened.

SQL> show parameter memory

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

hi_shared_memory_address             integer     0

memory_max_target                    big integer 25856M

memory_target                        big integer 25856M

shared_memory_address                integer     0

SQL>

 

# df -h

tmpfs                  48G   21G   28G  43% /dev/shm

 

출처 : egloos.zum.com/repository/v/5812005

Posted by 셋부터넷
,

Oracle의 계층형쿼리(Connect By Prior~)를 MySQL로 대체하여 표현해보자~

 

ex) 계층구조를 갖는 메뉴데이터를 계층쿼리로 표현

 

-------- 테이블 생성

CREATE TABLE 'tb_addr' (
    'a_idx' INT NOT NULL AUTO_INCREMENT COMMENT '주소번호',
    'a_pidx' INT NOT NULL COMMENT '부모 주소번호',
    'a_title' VARCHAR(100) NOT NULL COMMENT '주소명'
    PRIMARY KEY ('a_idx')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

-------- 쿼리(메뉴 계층구조 표현 및 정렬)

SELECT
  o_title, a_idx, IFNULL(lTB.a_pidx, 0) as a_pidx, IFNULL(cnt, 0) as sub_cnt, path
FROM(
  WITH RECURSIVE tmp1 AS
  (
      SELECT 
        a_idx, a_title, a_title as o_title, a_pidx, 
        a_title AS path,
        CONCAT(a_idx,',',a_title) AS sort_str,
        1 AS lvl
      FROM tb_addr WHERE a_pidx is null
      UNION ALL
      SELECT 
        e.a_idx, e.a_title, e.a_title as o_title, e.a_pidx, 
        CONCAT(t.path,'/',e.a_title) AS path, 
        CONCAT(t.sort_str,'>',CONCAT(e.a_idx,',',e.a_title)) AS sort_str, 
        t.lvl+1 AS lvl 
      FROM tmp1 t 
      JOIN tb_addr e 
      ON t.a_idx = e.a_pidx
  )
  SELECT 
    CONCAT(REPEAT(' ', lvl*4), a_title) as a_title, o_title,
    a_idx, a_pidx,
    path, sort_str, lvl
  FROM tmp1 
) lTB
LEFT JOIN(
  select a_pidx, count(a_pidx) as cnt from tb_addr group by a_pidx
) AS rTB
ON(lTB.a_idx = rTB.a_pidx)
ORDER BY sort_str

Posted by 셋부터넷
,