SET LINESIZE 500
SET PAGESIZE 1000
SET VERIFY OFF

COLUMN owner FORMAT A20
COLUMN username FORMAT A20
COLUMN object_owner FORMAT A20
COLUMN object_name FORMAT A30
COLUMN locked_mode FORMAT A15

SELECT b.inst_id,
       b.session_id AS sid,
       NVL(b.oracle_username, '(oracle)') AS username,
       a.owner AS object_owner,
       a.object_name,
       Decode(b.locked_mode, 0, 'None',
                             1, 'Null (NULL)',
                             2, 'Row-S (SS)',
                             3, 'Row-X (SX)',
                             4, 'Share (S)',
                             5, 'S/Row-X (SSX)',
                             6, 'Exclusive (X)',
                             b.locked_mode) locked_mode,
       b.os_user_name
FROM   dba_objects a,
       gv$locked_object b
WHERE  a.object_id = b.object_id
ORDER BY 1, 2, 3, 4;

SET PAGESIZE 14
SET VERIFY ON

Posted by Any DB
,

Text:   object <name> does not exist
-------------------------------------------------------------------------------
Cause:  An object name was specified that was not recognized by the system.
        There are several possible causes:
        An invalid name for a table, view, sequence, procedure, function,
        package, or package body was entered.
        Since the system did not recognize the invalid name, it responded with
        the message that the named object did not exist.
        An attempt was made to rename an index or a cluster or some other
        object that cannot be renamed.
Action: Check the spelling of the renamed object and rerun the code.
        Valid names of tables, views, functions, and so forth can be listed by
        querying the data dictionary.

 

 

package안의 synonyms의 사용 시 부모 object가 사라져서 발생하는 에러일수도 있다

 

1. 문제의 synonym 확인
예) ora-04043 : object SYS_PLSQL_337779_26_2 does not exist 일경우

 

select owner,object_name,object_type
from dba_objects
where object_name like 'SYS_PLSQL@_337779_@_%'' escape '@'
order by object_name;

 

2. 모든 synonym 삭제

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-994 : missing OPTION keyword  (0) 2018.04.23
ORA-29740  (0) 2018.04.23
ORA-1652  (0) 2018.04.23
ORA-1651  (0) 2018.04.23
ORA-4031 unable to allocate %s bytes of shared memory  (0) 2018.04.23
Posted by Any DB
,

Cause:  The keywords WITH GRANT were specified at the end of a GRANT statement without the keyword OPTION.

 


Action: Change the keywords WITH GRANT to the keywords WITH GRANT OPTION. Then retry the statement

 

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-4043  (0) 2018.04.23
ORA-29740  (0) 2018.04.23
ORA-1652  (0) 2018.04.23
ORA-1651  (0) 2018.04.23
ORA-4031 unable to allocate %s bytes of shared memory  (0) 2018.04.23
Posted by Any DB
,

tnsping 시에 나는 오류

 

$ORACLE_HOME\NETWORK\ADMIN\sqlnet.ora 수정

 

NAMES.DIRECTORY_PATH = (TNSNAMES,HOSTNAME,ONAMES)

Posted by Any DB
,

log ####################################################

 

Sun Nov 28 06:47:43 2010
KSXPACT: slowsend diagnostics enabled by remote instance request
Sun Nov 28 06:47:45 2010
Trace dumping is performing id=[cdmp_20101128064745]
Sun Nov 28 06:49:25 2010
Waiting for clusterware split-brain resolution
Sun Nov 28 06:59:33 2010
Errors in file /oracle/admin/crmg/bdump/crmg2_lmon_20214.trc:
ORA-29740: 0 ??, ?? ?? 9? ?? ???
……………..
……………..
………………
……………….

위의 빨간 부분으로 표시한 부분과 같습니다.
아래는 위의 내용에 대한 내용 입니다.

 

############################################################
#                                 내용                                        #
############################################################

 

ORA-29740 에러는, 클러스터 환경에서 소속된 그룹의 다른 인스턴스가 여러가지
이유로 인해, 멤버 인스턴스를 추출할 때 발생하는 문제입니다.

주요 이유로는, 클러스터 내부의 통신 장애나, control file에 대한 heartbeat 실패
등이 있습니다. 이와 같은 메카니즘은, 데이터베이스 전체에 미치는 악영향을 예방하기 위해 설계된 것입니다. 예를 들어, 클러스터 전체에 Hang이 발생하는 것보다는, 오라클에서는 문제를 유발시키는 인스턴스를 클러스터에서 재 시작을 하는 것을
택합니다.

 

ORA-29740 에러가 발생할 경우, 클러스터에 계속 남게되는 인스턴스가, 문제를
유발시키는 인스턴스를 클러스터에서 제외시키게 됩니다.

문제가 발생할 경우, 여러 개의 인스턴스는, control file에 대한 갱신 권한을 획득
하기 위해 control file에 대한 lock에 대해 경합하게 됩니다.
Control file에 대한 lock을 RR lock 또는 Result Record Lock이라 합니다.
마침내 lock을 획득한 인스턴스가, 클러스터 멤버 구성을 결정하기 위한, "투표"
를 주관하게 됩니다.

멤버 인스턴스는 다음과 같은 경우에 재 시작을 합니다.

 

a) 통신 회선 장애
b) 하나 이상의 subgroup에서, subgroup 간 split-brain 현상이 발생
    하는데, 멤버 인스턴스가, 가장 큰 subgroup에 속하지 않는 경우
 c) 멤버 인스턴스가 inactive 상태인 것이 감지되었을 때

 

* Split-brain 현상은 클러스터 내 노드 간의 통신 장애가 발생하여, 각 노드 입장에서는 다른 노드가 죽은 것으로 간주 하는데, 실제로는, 각 노드들은 살아 있는 경우를 말합니다.


이와 같은 현상이 발생했을 때 적절한 조치를 취하지 않는다면, 각 노드에서 오라클 데이터 파일에 대해 write를 수행하여, corruption이 발생할 수 있습니다.
 
즉, 데이터 정합성을 위해서 클러스터가 한쪽 노드를 재 시작 합니다.

재 시작된 인스턴스의 alert log에는 위에서와 같은 로그가 남습니다.


-------------------------------------------------------------------------------------------
즉 위와 같은 에러는 위에서 말한 이유로 인해 데이터 정합성을 위해서 클러스터가 문제가 될 것 같은 인스턴스를 재 시작 하게 합니다.

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-4043  (0) 2018.04.23
ORA-994 : missing OPTION keyword  (0) 2018.04.23
ORA-1652  (0) 2018.04.23
ORA-1651  (0) 2018.04.23
ORA-4031 unable to allocate %s bytes of shared memory  (0) 2018.04.23
Posted by Any DB
,

발생원인 : 사용자의 소트 작업 중 Temp Segment의 확장실패로 인해 발생함
조치방안 : 먼저 Temp Segment의 PCTINCREASE가 0인지를 확인한다.


PCTINCREASE가 0이 아닌 경우에 Extent확장 시 발생하는 경우가 대부분이다.
또한 Temp, Tablespace의 INITIAL과 NEXT값이 과도하게 클 경우 각 사용자별로 같은 값을 할당하기 때문에 다수의 사용자가 Sort작업으로 인해 TEMP Segment를 요청하는 경우 위와 같은 에러가 발생할 수도 있으므로 TEMP Tablespace의 INITIAL, NEXT값을 되도록 크지 않게 가져간다(Initial은 최대 10M만, NEXT는 최대 5M미만으로 설정한다)

 

 

temp tablespace를 사용하는 sql문 찾기
## temp_size.sql ==> temporary tablespace size

 

set pages 40
set line 132
col tbs_name format a15
col Used_mega format a15
col Used_PCT format 999.99
col Cache_PCT format 999.99

SELECT d.tablespace_name tbs_name, d.status Status, d.CONTENTS Type,
d.extent_management Ext_manage,
NVL(a.BYTES / 1024 / 1024, 0) Total_mega,
NVL(t.BYTES, 1)/1024/1024 ||' / '|| NVL(a.BYTES / 1024 / 1024, 1) Used_mega,
NVL(t.BYTES / a.BYTES * 100, 1) Used_PCT,
NVL(t.curnt_byte/1024/1024, 1) Cache_mega,
(NVL(t.curnt_byte/1024/1024, 1)/NVL(a.BYTES / 1024 / 1024, 0)*100) Cache_PCT
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_temp_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES_USED) curnt_byte, sum(BYTES_CACHED) BYTES
FROM v$temp_extent_pool
GROUP BY tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management LIKE 'LOCAL'
AND d.CONTENTS LIKE 'TEMPORARY';

clear columns
ttitle off

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-994 : missing OPTION keyword  (0) 2018.04.23
ORA-29740  (0) 2018.04.23
ORA-1651  (0) 2018.04.23
ORA-4031 unable to allocate %s bytes of shared memory  (0) 2018.04.23
ORA-02097, ORA-00439  (0) 2018.04.23
Posted by Any DB
,

TEMPORARY TABLESPACE를 확장해줌으로서 해결 완료

ALTER DATABASE TEMPFILE '....' autoextend on next 200M;


resize
alter database tempfile '...' resize 2000m;

 

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-29740  (0) 2018.04.23
ORA-1652  (0) 2018.04.23
ORA-4031 unable to allocate %s bytes of shared memory  (0) 2018.04.23
ORA-02097, ORA-00439  (0) 2018.04.23
ORA-19809, ORA-19804, ORA-19815  (0) 2018.04.23
Posted by Any DB
,

 이 에러 메세지는 SQL 정보를 저장할 수 잇는 충분한 크기의 사용 가능 메모리 조각을 공유 풀의 프리리스트에서 찾지 못하고 또한 LRU리스트를 검색해도 찾지 못 할 경우 발생한다.

 이를 해결하기 위해서는 다음의 4가지를 고려할 수 있다.

 

 

1. Shared Pool 초기화 - Shared Pool 내에 존재하는 모든 내용을 제거하여 초기화를 수행할 수 있다. Shared Pool 내의 연속된 메모리 조각들을 하나의 조각으로 합쳐주는 역활을 수행하게 된다. 수행 방법은 다음과 같다.

  SQL> ALTER SYSTEM FLUSH SHARED_POOL;

그러나 위의 방법은 다른 SQL 정보도 Shared Pool에서 제거하므로 해당 명령어를 수행한 후에는 모든 SQL이 하드 구문 분석을 수행하게 되어 성능 저하가 발생 할 수 있다.

 

2. 패치 등을 고려 - ORA-4031 에러는 오라클 버그로 등록된 부분이 있으므로 해당 오라클 버전을 확인하여 오라클 패치 적용 및 업그레이드 등을 고려할 수 있다.

 

3. 파라미터 설정 - SHARED_POOL_RESERVED_SIZE 파라미터 설정을 통해 에러를 감소 시킬 수 있다.

 

4. Large Pool 설정 - 병렬 프로세싱을 사용한다면 Large Pool 설정으로 해당 에러를 감소 시킬 수 있다.

 

 

 

 



출처: http://boeok.tistory.com/entry/ORA4031-unable-to-allocate-s-bytes-of-shared-memory?category=564566 [Secret]

 

'CONSULTING SERVICE > Trouble Shooting' 카테고리의 다른 글

ORA-1652  (0) 2018.04.23
ORA-1651  (0) 2018.04.23
ORA-02097, ORA-00439  (0) 2018.04.23
ORA-19809, ORA-19804, ORA-19815  (0) 2018.04.23
libawt.so: libXp.so.6: cannot open shared object file:  (0) 2018.04.23
Posted by Any DB
,

Unable to restore resource manager plan to '':
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00439: feature not enabled: Database resource manager

 

 

오라클 Bug 4343398.

Oracle 10g SE버전에서 RMAN을 사용할 수 없어서 발생하는 Alert Msg.

그냥 무시해도 무방하며, 10.2.0.3에서 Fix되었다.

보기 싫은 사람은 10.2.0.3이상으로 패치를 해주면 해결된다



출처: http://boeok.tistory.com/entry/ORA02097-ORA00439-ERROR?category=564566 [Secret]

Posted by Any DB
,

이 경우는 대부분이 데이터 입력, 삭제 또는 복구 작업시에 일어나며, Archive Mode 운영중일때 발생한다.

[운영 로그 확인]

c:\> type C:\oracle\product\10.2.0\SID\alert_SID

; 오류가 발생하면 위와 같은 로그 파일을 생성한다.

Thu Apr 06 21:45:55 2006
Errors in file c:\oracle\product\10.2.0\admin\oradb\bdump\oradb_arc0_3556.trc:

ORA-19815: 경고: db_recovery_file_dest_size/2147483648바이트는 100.00%가 사용 중이므로, 나머지 0바이트를 사용할 수 있습니다.

; 위의 로그를 확인 한 결과 dest_size가 full이 되어서 발생한 행걸림 현상을 확인.

[로그 확인]

sql> archive log list;

데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 1
아카이브할 다음 로그 1
현재 로그 순서 3

sql> show parameter archive;

NAME TYPE VALUE
-------------------------- ------------------------- -------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string
log_archive_dest_1 string

; 위의 내용을 보면 log_archive_dest에 보면 Value가 없다. 진행이 안된 상태이다.

sql>show parameter dest;

; dest에 관련된 파라메터를 확인한다.


 

[해결방안1]
DB를 Shutdown immediate를 한다.
initSID.ora 파일 내용중 dest_size line을 주석처리한다.
DB를 Startup 한다

[해결방안2]
sql> alter system set db_recivery_file_dest_size=3000M;
운영중인 DB에서 dest_size를 늘려준다.


alert.log파일에 이런 에러가 떴거든요...

ORA-19815: 경고: db_recovery_file_dest_size/2147483648바이트는 85.28%가 사용 중이므로,
나머지 316203008바이트를 사용할 수 있습니다.


Thu Jul 13 10:54:55 2006
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************



가장 많이 발생하는 원인은 아카이브 로그 파일이 계속 쌓일 경우입니다.

OS 상에서 아카이브 로그 파일을 삭제하였을 경우에도 RMAN 상에서는 삭제한 걸 인식하지 못합니다.

해결 방법으로는

1) db_recovery_file_dest_size의 크기를 늘려 준다.

2) 필요 없는 아카이브 파일 OS에서 삭제후 RMAN에서 삭제

- OS 상에서 아카이브 삭제

- RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

3) 백업 정책 확인



출처: http://boeok.tistory.com/entry/ORA19809-ORA19804-ORA19815?category=564566 [Secret]

Posted by Any DB
,

$ ./runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be enterprise-4, enterprise-5, redhat-3, redhat-4,

redhat-5, redhat-5.1, SuSE-9, SuSE-10, UnitedLinux-1.0, asianux-1 or asianux-2
                                      Passed

All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-11-05_04-52-10PM.
 
Please wait ...[oracle@jptyooravmd2 agent]$ Exception in thread "main"

java.lang.UnsatisfiedLinkError: /tmp/OraInstall2009-11-05_04-52-
 
10PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file:

No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at sun.security.action.LoadLibraryAction.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
        at sun.awt.DebugHelper.<clinit>(Unknown Source)
        at java.awt.Component.<clinit>(Unknown Source)
        at oracle.sysman.emgc.oneclick.OneClickWizard.getGuiDefaults(OneClickWizard.java:239)
        at oracle.sysman.emgc.oneclick.OneClickWizard.<init>(OneClickWizard.java:205)
        at oracle.sysman.emgc.oneclick.OneClick.<init>(OneClick.java:236)
        at oracle.sysman.emgc.oneclick.OneClickInstaller.<init>(OneClickInstaller.java:116)
        at oracle.sysman.emgc.oneclick.OneClickInstaller.process(OneClickInstaller.java:268)
        at oracle.sysman.emgc.oneclick.OneStartup.startup(OneStartup.java:383)
        at oracle.sysman.emgc.oneclick.OneArgs.main(OneArgs.java:700)
        at oracle.sysman.emgc.oneclick.OneStartup.main(OneStartup.java:391)

에러나면


이것은 OUI를 기동하기 위해 필요한 몇몇 package가 install이 되지 않았기 때문에

발생한 것으로, 다음과 같이 해당 RPM을 install하면 문제는 해결된다.

 


패키지설치

rpm -Uvh libXp-1.0.0-8.1.el5.i386.rpm

rpm -Uvh libXau-1.0.1-3.1.i386.rpm

 

반드시 필요한 package는 libXp 하나뿐이지만,
libXau와 의존관계가 있기 때문에 libXau도 함께 install해주었다.

여기서 주의할 점이 있는데, 운영체제의 bit수와 관계없이 32bit의 libXp가 필요하다는 것이다.



출처: http://boeok.tistory.com/entry/Runinstaller-시-자바-에러?category=564566 [Secret]

Posted by Any DB
,

ORA-01455 : 열 변환시 정수 데이터 유형이 오버플로우 되었습니다.

이번 작업에서는 데이터가 한 건도 없는 테이블을 EXPORT할때 발생하였습니다.

 

ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE;

ALTER TABLE <empty table name> ALLOCATE EXTENT;



출처: http://boeok.tistory.com/category/Oracle/Trouble Shooting [Secret]

Posted by Any DB
,

리소스를 많이 차지 하는 sql찾기 
1) 총 메모리 사용량이 많은 SQL (상위 N개)
SELECT BUFFER_GETS,DISK_READS,EXECUTIONS,SQL_TEXT
FROM (SELECT BUFFER_GETS,DISK_READS,EXECUTIONS,SQL_TEXT
      FROM V$SQLAREA
      ORDER BY BUFFER_GETS DESC  )
WHERE ROWNUM <= :p_rank

2) 평균 메모리 사용량이 많은 SQL (상위 N개)
SELECT BUFFER_GETS,DISK_READS,
       EXECUTIONS,trunc(BUFFER_PER_EXEC) BUFFER_PER_EXEC, address, SQL_TEXT
FROM ( SELECT BUFFER_GETS,DISK_READS, EXECUTIONS,address,
   BUFFER_GETS/DECODE(EXECUTIONS,0,1,EXECUTIONS) BUFFER_PER_EXEC,
   SQL_TEXT
       FROM   V$SQLAREA
       ORDER BY BUFFER_GETS/DECODE(EXECUTIONS,0,1,EXECUTIONS) DESC )
WHERE ROWNUM <=  50


3) 메모리, 디스크 사용량이 일정 기준치를 넘은 SQL
SELECT BUFFER_GETS,DISK_READS,
       EXECUTIONS,BUFFER_GETS/EXECUTIONS,SQL_TEXT
FROM   V$SQLAREA
WHERE  BUFFER_GETS >  :p_val1
OR     DISK_READS > :p_val2
OR     EXECUTIONS > :p_val3

from en-core

白面書生
 

4) 디스크 사용량 많은 SQL
SELECT BUFFER_GETS,DISK_READS,
       EXECUTIONS,trunc(BUFFER_PER_EXEC) BUFFER_PER_EXEC, address, SQL_TEXT
FROM ( SELECT BUFFER_GETS,DISK_READS, EXECUTIONS,address,
   BUFFER_GETS/DECODE(EXECUTIONS,0,1,EXECUTIONS) BUFFER_PER_EXEC,
   SQL_TEXT
       FROM   V$SQLAREA
       ORDER BY disk_reads DESC )
WHERE ROWNUM <=  50

-- address 에 해당하는 sql찾기
select *
from v$sqltext
where address = 'B443F724'
order by piece;

from zerobug

 



출처: http://boeok.tistory.com/category/Oracle/Tunning [Secret]

Posted by Any DB
,

-- 성능 개선 대상 sql list 추출 스크립트  (튜닝의시작 튜닝방법론에서..)


-- IO/CPU TOP SQL 관련 성능 개선 대상선정
select rownum cnt,
         t1.*
from (
         select t1.parsing_schema_name,
                  t1.module,
                  t1.sql_id,
                  t1.hash_value,
                  t1.substr_sqltext,
                  t1.executions,
                  t1.buffer_gets,
                  t1.disk_reads,
                  t1.rows_processed,
                  t1.lio,
                  t1.elapsed_sec,
                  t1.cpu_sec,
                  round(t1.cpu_time/t1.cpu_time_total*100,1) ratio_cpu,
                  round(t1.elapsed_time/elapsed_time_total*100,1) ratio_elapsed
        from (
                 select parsing_schema_name,
                          module,
                          sql_id,
                          hash_value,
                          substr(sql_text,1,100) substr_sqltext,
                          executions,
                          buffer_gets,
                          disk_reads,
                          rows_processed,
                          cpu_time,
                          elapsed_time,
                          round(buffer_gets/decode(executions,0,1,executions),1) lio,
                          round(elapsed_time/decode(executions,0,1,executions)/1000000,1) elapsed_sec,
                          round(cpu_time/decode(executions,0,1,executions)/1000000,1) cpu_sec,
                          sum(cpu_time) over() cpu_time_total,
                          sum(elapsed_time) over() elapsed_time_total
                  from v$sqlarea s
                  ) t1
        where t1.executions >0
        and    t1.parsing_schema_name not in ('SYS','SYSTEM','SYSMAN')
        order by ratio_cpu DESC       
        ) t1
where rownum <=100

-- DBA_HIST_SQLSTAT  활용 스크립트
select sql_id,
         schema_name,
         module,
         ela_ratio,
         ela_tot,
         cpu_ratio,
         cpu_tot,
         exec_ratio,
         exec_tot,
         lio_ratio,
         lio_tot,
         pio_ratio,
         pio_tot,
         rows_ratio,
         rows_tot
from (
         select sql_id,
                  parsing_schema_name schema_name,
                  nvl(substr(b.module,1,15),'-') module,
                  round(ratio_to_report(sum(b.elapsed_time_delta)) over()*100,1) as ela_ratio,
                  round(sum(b.elapsed_time_delta)/1000000,0) as ela_tot,
                  round(ratio_to_report(sum(b.cpu_time_delta))over()*100,1) as cpu_ratio,
                  round(sum(b.cpu_time_delta)/1000000,0) as cpu_tot,
                  round(ratio_to_report(sum(b.executions_delta))over()*100,1) as exec_ratio,
                  sum(b.executions_delta) as exec_tot,
                  round(ratio_to_report(sum(b.buffer_gets_delta))over()*100,1) as lio_ratio,
                  sum(b.buffer_gets_delta) as lio_tot,
                  round(ratio_to_report(sum(b.disk_reads_delta))over()*100,1) as pio_ratio,
                  sum(b.disk_reads_delta) as pio_tot,
                  round(ratio_to_report(sum(b.rows_processed_delta))over()*100,1) as rows_ratio,
                  sum(b.rows_processed_delta)as rows_tot
         from dba_hist_snapshot a,
                 dba_hist_sqlstat b
         where a.instance_number=1
         and     a.begin_interval_time >= to_date(:b1,'YYYY-MM-DD')
         and     a.end_interval_time <= to_date(:b2, 'YYYY-MM-DD') +0.99999
         and     a.dbid=b.dbid
         and     b.parsing_schema_name not in ('SYS','SYSTEM','SYSMAN')
         and     a.instance_number = b.instance_number
         and     a.snap_id=b.snap_id
         group by b.sql_id,
                      b.parsing_schema_name,
                      b.module
         order by cpu_ratio desc
         )
where rownum <=10;        
        
-- full table 관련 성능 개선 대상 선정

select rownum cnt,
         t1.*
from (                       
         select t1.parsing_schema_name,
                  t1.module,
                  t1.sql_id,
                  t1.hash_value,
                  t1.substr_sqltext,
                  t1.executions,
                  t1.buffer_gets,
                  t1.disk_reads,
                  t1.rows_processed,
                  t1.lio,
                  t1.elapsed_sec,
                  t1.cpu_sec,
                  round(t1.cpu_time/t1.cpu_time_total*100,1) ratio_cpu,
                  round(t1.elapsed_time/elapsed_time_total*100,1) ratio_elapsed
        from (
                 select s.parsing_schema_name,
                          s.module,
                          s.sql_id,
                          s.hash_value,
                          s.address,
                          substr(s.sql_text,1,100) substr_sqltext,
                          s.executions,
                          s.buffer_gets,
                          s.disk_reads,
                          s.rows_processed,
                          s.cpu_time,
                          s.elapsed_time,
                          round(s.buffer_gets/decode(s.executions,0,1,executions),1) lio,
                          round(s.elapsed_time/decode(s.executions,0,1,executions)/1000000,1) elapsed_sec,
                          round(s.cpu_time/decode(s.executions,0,1,executions)/1000000,1) cpu_sec,
                          sum(s.cpu_time) over() cpu_time_total,
                          sum(s.elapsed_time) over() elapsed_time_total
               from v$sqlarea s
               ) t1,
               (
                select distinct hash_value,
                         address
                from v$sql_plan
                where operation = 'TABLE ACESS'
                and options = 'FULL'
                ) x
        where t1.executions > 0
        and x.hash_value = t1.hash_value
        and x.address = t1.address
        and t1.parsing_schema_name not in ('SYS','SYSTEM','SYSMAN')
        order by ratio_cpu DESC
        ) t1
where ROWNUM <=10       


-- Literal SQL 관련 성능개선 대상선정

select rownum rno,
         t1.*
from (
        select max(substr_sqltext) sql_text,
                 max(parsing_schema_name) parsing_schema_name,
                 max(module) module,
                 max(s.sql_id) sql_id,
                 count(s.exact_matching_signature) literal_sql_cnt,
                 round(sum(buffer_gets)/sum(s.executions),2) buffer_avg,
                 round(sum(elapsed_time)/sum(s.executions),2) elapsed_avg,
                 round(sum(rows_processed)/sum(s.executions),2) rows_processed,
                 sum(s.executions) executions,
                 round(sum(cpu_time)/max(cpu_time_total)*100,2) ratio_cpu,
                 round(sum(elapsed_time)/max(elapsed_time_total)*100,2) elapsed_cpu,
                 count(distinct s.plan_hash_value) plan_cnt
        from (                
                 select s.parsing_schema_name,
                          s.module,
                          s.sql_id,
                          s.hash_value,
                          s.plan_hash_value,
                          s.address,
                          substr(s.sql_text,1,100) substr_sqltext,
                          s.executions,
                          s.buffer_gets,
                          s.disk_reads,
                          s.rows_processed,
                          s.cpu_time,
                          s.elapsed_time,
                          s.force_matching_signature,
                          s.exact_matching_signature,
                          round(s.buffer_gets/decode(s.executions,0,1,executions),1) lio,
                          round(s.elapsed_time/decode(s.executions,0,1,executions)/1000000,1) elapsed_sec,
                          round(s.cpu_time/decode(s.executions,0,1,executions)/1000000,1) cpu_sec,
                          sum(s.cpu_time) over() cpu_time_total,
                          sum(s.elapsed_time) over() elapsed_time_total
                from v$sqlarea s
                ) s
         where s.executions > 0
         and s.force_matching_signature <> exact_matching_signature
         and s.parsing_schema_name not in ('SYS','SYSTEM','SYSMAN')
         group by s.force_matching_signature
         having count(s.exact_matching_signature) >=2
         order by ratio_cpu DESC
         ) t1
where rownum <=10                                                                          

 

-- 배치프로그램 관련 성능 개선 대상선정
-- 인라인뷰 o 부분에 배치 프로그램명을 입력하면 해당 프로그램에서 수행하는 모든 sql에 대한 i/o 발생량,  추출 row수, 응답시간, 수행횟수 등의 정보가 추출된다. 이 정보들을 가지고 수행시간이 오래 소요되는 부분의 sql을 추출하여 개선하면 된다.

-- 특정 program 내에서 수행된 sql 추출 스크립트

select o.object_name,
         s.parsing_schema_name as schema,
         s.module,
         s.sql_id,
         s.hash_value,
         substr(s.sql_text,1,100) as sqltext,
         s.executions,
         s.buffer_gets,
         s.disk_reads,
         round(s.rows_processed/s.executions,1) as "Rows",
         round(s.buffer_gets/s.executions,1) lio,
         round(s.elapsed_time/s.executions/1000000,1) elapsed_sec,
         round(s.cpu_time/s.executions/1000000,1) as cpu_sec,
         round(s.elapsed_time/1000000, 1) as elapsed_time
from ( select object_id, object_name
          from dba_objects
          where object_name = :Procedure_Name) o,
          v$sqlarea s
where o.object_id=s.program_id
order by 14 desc                  
        

-- 1. 배치 프로그램명으로 OBJECT_ID 추출하기
SELECT OBJECT_NAME, OBJECT_ID
FROM DBA_OBJECTS
WHERE OBJECT_NAME IN ('PLSQL_BATH_1','PLSQL_BATCH2'); --배치 프로그램명 입력


-- 2. DBA_OBJECTS에서 추출된 OBJECT_ID 값으로 V$SQLAREA의 PROGRAM_ID와 연결

col substr_text for a30
col module for a15

select substr(sql_text,1,30) substr_text, module, program_id
from v$sqlarea
where program_id in ();

-- 3.sql내역확인

select t1.module, t1.substr_sqltext, t1.executions, t1.buffer_gets
from (
         select parsing_schema_name Schema,
                  module,
                  sql_id,
                  hash_value,
                  substr(sql_text,1,37) substr_sqltext,
                  executions,
                  buffer_gets,
                  disk_reads,
                  rows_processed,
                  round(buffer_gets/executions,1) lio,
                  round(elapsed_time/executions/1000000,1) elapsed_sec,
                  round(cpu_time/executions/1000000,1) cpu_sec
        from v$sqlarea s
        where s.program_id in ( select object_id
                                            from dba_objects
                                            where object_name in (''))
       order by 7 desc
       )t1
where rownum <=10;

 

 

-- 최근가장 많이 수행 된 sql과 수행점유율(수행횟수) ash
select sql_id,
         count(*),
         count(*)*100/sum(count(*)) over() ratio
from v$active_session_history
where sample_time >= to_date(:from_time,'yyyymmdd hh24miss')
and sample_time < to_date(:to_time,'yyyymmdd hh24miss')
group by sql_id
order by count(*) desc;


-- 특정 session이 가장 많이 수행 한 sql과 수행 점유율(수행횟수)

select sql_id,
         count(*),
         count(*)*100/sum(count(*)) over() ratio
from v$active_session_history
where sample_time >= to_date(:from_time,'yyyymmdd hh24miss')
and sample_time < to_date(:to_time,'yyyymmdd hh24miss')
and sessiond_id = :b1
group by sql_id
order by count(*) desc;


-- 특정 구간 이벤트 별 대기 시간
select nvl(a.event,'ON CPU') as event,
         count(*) as total_wait_time
from v$active_session_history a
where sample_time >= to_date(:from_time,'yyyymmdd hh24miss')
and sample_time < to_date(:to_time,'yyyymmdd hh24miss')
group by a.event
order by total_wait_time DESC;

 

-- 특정 구간 cpu점유율 순 - top sql
select ash.sql_id,
         sum(decode(ash.session_state,'ON CPU',1,0)) "CPU",
         sum(decode(ash.session_state,'WAITING',1,0)) -
         sum(decode(ash.session_state,'WAITING', decode(en.wait_class,'USER I/O',1,0),0)) "Wait",
         sum(decode(ash.session_state,'WAITING', decode(en.wait_class,'USER I/O',1,0),0)) "IO",
         sum(decode(ash.session_state,'ON CPU',1,1)) "TOTAL"
from v$active_session_history ash,
        v$event_name en
where sql_id IS NOT NULL
and en.event#=ash.event#
and ash.sample_time >= to_date(:from_time,'yyyymmdd hh24miss')
and ash.sample_time < to_date(:to_time,'yyyymmdd hh24miss')
group by sql_id
order by sum(decode(session_state,'ON CPU',1,1)) desc;


-- 특정 구간 cpu 점유율 순 top session
select ash.session_id,
         ash.session_serial#,
         ash.user_id,
         ash.program,
         sum(decode(ash.session_state, 'ON CPU',1,0)) "CPU",
         sum(decode(ash.session_state, 'WAITING',1,0)) -
         sum(decode(ash.session_state,'WAITING', decode(en.wait_class,'USER I/O',1,0),0)) "WAITING",
         sum(decode(ash.session_state, 'WAITING', decode(en.wait_class,'USER I/O',1,0),0)) "IO",
         sum(decode(session_state, 'ON CPU',1,1)) "TOTAL"
from v$active_session_history ash,
       v$event_name en
where en.event# = ash.event#
and ash.sample_time >= to_date(:from_time,'yyyymmdd hh24miss')
and ash.sample_time < to_date(:to_time,'yyyymmdd hh24miss')
group by session_id,
             user_id,
             session_serial#,
             program
order by sum(decode(session_state,'ON CPU',1,1)) DESC;



출처: http://boeok.tistory.com/category/Oracle/Tunning [Secret]

'CONSULTING SERVICE > Performance Tuning Service ' 카테고리의 다른 글

RAC Lock Monitoring  (0) 2018.04.23
리소스를 많이 차지 하는 sql찾기  (0) 2018.04.23
Posted by Any DB
,

1. listener.ora  (default location = $ORACLE_HOME/network/admin)

 

 LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux-single)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

SID_LIST_LISTENER=

 (SID_LIST =

  (SID_DESC =

     (ORACLE_HOME=/oracle/app/oracle/product/11.2.0)

    (SID_NAME=LINUXORCL)

  )

)

ADR_BASE_LISTENER = /oracle/app/oracle

 

 

 - LISTENER : 리스너 이름이며 다른 이름으로 설정 가능. SID_LIST_리스너명 항목에서 리스너명과 동일

 - ADDRESS_LIST : ADDRESS들의 모임이며 여러 개의 ADDRESS를 동시에 설정 가능

 - ADDRESS : 데이터베이스 서버의 주소이며 프로토콜, 서버명 및 사용포트로 구성된다.

 - SID_LIST_LISTENER : 리스너가 서비스하는 데이터베이스 정보를 설정하며 SID_LIST_리스너명으로 설정

 - SID_LIST : 해당 리스너 프로세스가 하나 이상의 데이터베이스를 서비스 할 경우에 해당 부분에 여러개의  

                   SID_DESC를 등록한다.

 - GLOBAL_DBNAME : 전역 데이터베이스 이름을 지정하며 생략 가능하다.

 - ORACLE_HOME : 오라클 홈 디렉토리의 위치를 지정한다.

 - SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다.

 

리스너 파라메터

 - LOG_DIRECTORY_리스너명 : 로그 파일이 저장될 경로 이름을 설정

 - LOG_FILE_리스너명 : 로그가 기록될 파일명 설정

 - LOGGING_리스너명 : 로그 기능의 활성화 여부 설정 (ON 또는 OFF)

 - PASSWORD_리스너명 : 리스너를 중단시킬 경우 필요한 비밀번호를 설정

 

 

 [LINUXORCL]linux-single:/oracle> lsnrctl status   <---리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:19:39

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused

리스너 시작

[LINUXORCL]linux-single:/oracle> lsnrctl start    <-- 리스너 시작

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:02

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Starting /oracle/app/oracle/product/11.2.0/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

리스너 상태체크

[LINUXORCL]linux-single:/oracle> lsnrctl status   <-- 리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:26

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 24 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "LINUXORCL" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service... 사용준비완료
Service "LINUXORCLXDB" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

 

 

2. tnsnames.ora 설정 (location = $ORACLE_HOME/network/admin)

 

 LINUXORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = LINUXORCL)
    )
  )

 

 

- LINUXORCL : 서비스이름

- DESCRIPTION : 접속하고자 하는 대상 데이터베이스 정보

- ADDRESS : 접속하고자 하는 데이터베이스 서버의 리스너를 호출하기 위한 주소정보

- CONNECT_DATA : SERVICE_NAME 옵션을 이용하여 접속할 리스너 프로세스가 사용하는 서비스 이름을 지정

                          하거나 또는 SID옵션을 이용하여 데이터베이스의 SID명을 지정

 

 

 tnsping test

C:\Users\Boeok>tnsping LINUXORCL

TNS Ping Utility for 32-bit Windows: Version 11.2.0.3.0 - Production on 01-8월 -
2013 16:02:49

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

사용된 매개변수 파일:
F:\app\Boeok\product\11.2.0\client_1\network\admin\sqlnet.ora


별칭 분석을 위해 TNSNAMES 어댑터 사용
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149
)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = LINUXORCL)))에 접속하려고 시도
하는 중
확인(30밀리초)  <-- 해당 서버와의 응답시간

C:\Users\Boeok>

 

sqlplus 접속시도


C:\Users\Boeok>sqlplus test/test@LINUXORCL

SQL*Plus: Release 11.2.0.3.0 Production on 목 8월 1 16:05:03 2013

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


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 클라이어트에서 서버로 접속된 상황

 

 

3. SQLNET.ORA

 

클라이언트와 데이터베이스 서버 양쪽에 존재하는 파일로 오라클 넷을 옵션 설정등을 저장하는 파일.

즉. 오라클 서버로 어떻게 접속할 것인지를 설정하는 파일

 

 SQLNET.AUTHENTICATION_SERVICES= (NTS | none)

클라이언트가 오라클 서버로 접속할 때 오라클이 어떠한 인증 서비스를 사용할 것인가

none : sys 계정으로 로그인할때 비밀번호를 입력해야만 들어 갈수 있게 설정

sqlplus "/as sysdba" 가 안먹힘

 

 NAMES.DIRECTORY_PATH= (TNSNAMES | ONAMES | HOSTNAME)

클라이언트가 디비 접속 시 사용하는 STRING NAME ALIAS를 무엇을 통해 확인할지를 결정하는 것

 

TNSNAME : 로컬네임서버를 확인하겠다는 의미, (TNSNAME.ORA파일 확인)

 

ONAMES : 오라클 네임서버를 확인하겠다는 의미이며 추가적으로 NETWORK ADDRESS를 설정해줘야 함.

 

HOSTNAME : 호스트네임서버를 확인하겠다는 의미이며 TNSNAME.ORA파일은 필요없이 DNS나 WINDOWS의 경우 HOST파일(C:\WINDOWS\SYSTEM32\DRIVERS\ETC)에 등로되어 있으면 된다

주의사항 --> 공백이 절대 존재해선 안된다

NAMES.DIRECTORY_PATH=(TNSNAMES, HOSTNAME) X

NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME) O

 

만약 공백 존재시 다음과 같은 에러가 발생할수 있다.

ORA-12170 : TNS: Connect timeout occured

ORA-12560 : TNS: protocol adapter error

 

tcp.validnode_checking = yes

 

tcp.invited_nodes = (IP1, IP2, IPn)     <- 정의된 IP만 접근 나머지는 모두 접근 거부

tcp.excluded_nodes=(IP1, IP2, IPn)   <- 정의된 IP만 접근거부, 나머지는 모두 접근 가능

sqlnet.expire_time = 10     <-- 세션을 정리하는 시간  10분에 한번씩 신호를 보내서 새션을 정리하는 옵션

 

 

 

Point : 클라이언트와 서버의 접속이 안될때 확인해야할 방법중 가장 우선은 방화벽이 설정되어 있는지 아닌지를 확인해야한다 os에서 방화벽을 실행시켜두면 리스너와 클라이어인트설정이 잘되어도 접속이 되지 않는다.

그 다음으로는 위에서 보여준것과 같이 listener, tnsname, sqlnet.ora에 공백이 존재해서도 안된다.



출처: http://boeok.tistory.com/category/Oracle/Admin?page=2 [Secret]

Posted by Any DB
,

1. 확인

 SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL       UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL       UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL       UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL       UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL       UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL       UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL       UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD       180

PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.
SQL>

 

 

2. 변경 

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.

SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL        UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL        UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL        UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL        UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL        UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL        UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL        UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD    UNLIMITED
PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.

 

 

 



출처: http://boeok.tistory.com/category/Oracle/Admin?page=2 [Secret]

Posted by Any DB
,

기존 패스워드 파일 백업 및 삭제

 

패스워드 파일 재생성

orapwd file=/oracle/app/oracle/product/11.2.0/dbs/orapwLINUXORCL(오라클sid)

 

패스워드 파일을 삭제하기 위해서는 rm과 같은 운영체제 명령어를 사용하여 파일을 삭제하면 된다

패스워드 파일을 수정하기 위해서는 데이터베이스를 종료한후 이전 패스워드 파일을 삭제하고 새로 생성한다. 데이터베이스를 재기동하게 되면 새로운 패스워드 파일의 값이 적용된다.



출처: http://boeok.tistory.com/entry/SYS-SYSTEM-PASSWORD를-잃어버려-DB접속을-못할-경우?category=564563 [Secret]

 

Posted by Any DB
,

9i, 10g까지는 대소문자 구분이 없었지만 11g부터는 대소문자 구분을 하게 된다.

 주로 로그인시 대소문자 구분을 위해서 사용된다.

SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     TRUE  << 대소문자사용중(default)
SQL>
SQL>
SQL> alter system set sec_case_sensitive_logon=FALSE;  << 대소문자사용안함 설정

System altered.

SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     FALSE << 설정완료


SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1344652 bytes
Variable Size             281021300 bytes
Database Buffers           25165824 bytes
Redo Buffers                6328320 bytes
Database mounted.
Database opened.
SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     FALSE
SQL>

 

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /oracle/app/oracle/product/11.
                                                 2.0/dbs/spfileLINUXORCL.ora
SQL> 

 

 

- Dos 공격으로부터의 보호

  SEC_PROTOCOL_ERROR_FURTHER_ACTION = CONTINUE (Default)

  SEC_PROTOCOL_ERROR_TRACE_ACTION=NONE,TRACE(Default),LOG,ALERT (모니터링 지정)

 

- Brute Force 공격으로부터의 보호

  SEC_MAX_FAILED_LOGIN_ATTEMPTS = 1 - (Default)



출처: http://boeok.tistory.com/entry/11g-대소문자-구분?category=564563 [Secret]

Posted by Any DB
,

* tnsnames.ora에 WINORCL로 서버 이름을 등록 후 WINDOWS CLIENT에서 접속방법.

 

system 계정으로 접속

C:\Users\Boeok>sqlplus "system/oracle@WINORCL"

SQL*Plus: Release 11.2.0.3.0 Production on 금 8월 2 15:36:24 2013

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


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit

 

sys 계정으로 접속

C:\Users\Boeok>sqlplus "sys/oracle@WINORCL as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on 금 8월 2 15:36:09 2013

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


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit

 

 

 

* TNSNAMES.ORA에 WINORCL로 서버 이름을 등록후 LINUX CLIENT에서 접속방법

 

sys 계정으로 접속

 [LINUXORCL]linux-single:/> sqlplus sys/oracle@WINORCL as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 3 00:39:43 2013

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

system 계정으로 접속
[LINUXORCL]linux-single:/> sqlplus system/oracle@WINORCL

SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 3 00:39:58 2013

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[LINUXORCL]linux-single:/>

 

 



출처: http://boeok.tistory.com/entry/Client에서-syssystem-계정으로-Oracle-서버-접속시-명령어?category=564563 [Secret]

Posted by Any DB
,

가끔 오라클은 Start 상태인대 리스너는 no service라는 말을 내뱉으며 db를 인식 못할때가 있다.

db를 아무리 재시작하고 리스너를 내렸다 올려봐도 리스너는 묵묵하다..

그럴땐 db주소를 리스너에 바로 보게끔 파라미터에 입력해 주면 db가 올라오면서 리스너한태 강제로 바라보게 하는 명령어를 주면 된다..

 

 SQL> ALTER SYSTEM SET LOCAL_LISTENER="(ADDRESS=(PROTOCOL=TCP)(HOST=HOSTNAME)(PORT=1521))" SCOPE=SPFILE;

 

 

위의 문장을 입력 후 DB를 SHUTDOWN 한 후 다시 STARTUP 한다



출처: http://boeok.tistory.com/entry/리스너가-db를-인식-못한다고-나올때?category=564563 [Secret]

Posted by Any DB
,