Oracle/SQL2021. 6. 15. 10:08

NULL 이란 

컬럼의 값이 무엇인지 모른다는 뜻이다.

 

DML을 이용하여 자료를 다룰 때는 항상 NULL을 염두에 두고 다루어야 한다.

 

숫자(NUMBER)형 자료를 NULL과 연산(+ - * /)을 하면 결과는 항상 NULL 이 된다.

 

NULL이 포함될 우려가 있는 컬럼을 이용할 때는 항상 NVL 함수를 이용하여 값을 치환시켜 사용하는 습관을 들여야 한다.

 

숫자형 컬럼이나 변수에 NULL이 들어갈 우려가 있다면 0이나 1 등 다른 적절한 숫자로 치환을 한 후 연산에 사용한다.

 

문자형 컬럼이나 변수에 NULL이 들어갈 우려가 있다면 ' '(스페이스)나 다른 특정 문자값으로 치환하여 조건 절에 이용한다.

 

조건 절에서 비교 연산자를 사용할 때에도 NULL의비교는 일반 값과 다르게 비교한다.

A라는 문자형 컬럼의 값이 1과 같으나 또는 다르냐를 조건에서 비교할 때 다음과 같이 쓰게 된다.

 

같은지 비교 :  WHERE A = '1'

다른지 비교 : WHERE A <> '1'

 

하지만 A라는 문자형 컬럼의 값이 NULL 인지를 비교하고 싶을 때는 다음과 같이 사용하면 된다.

 

같은지 비교 : WHERE A IS NULL

다른지 비교 : WHERE A IS NOT NULL

 

절대로 A = NULL 또는 A <> NULL로 사용하면 안 된다.

 

에러가 발생하지는 않지만 의도한 바와 전혀 다른 결과가 나올 수 있기 때문이다.

 

참고 : 전문가로 가는 지름길  오라클 실습 P.24

'Oracle > SQL' 카테고리의 다른 글

CONCATENATION  (0) 2021.06.15
ALIAS (컬럼, 테이블)  (0) 2021.06.15
SELECT의 구조  (0) 2021.06.15
DML의 종류  (0) 2021.06.15
SQL 교육 커리큘럼  (0) 2018.03.27
Posted by 자수성가한 부자
Oracle/SQL2021. 6. 15. 09:53

DML중에 가장 많은 빈도로 사용되는 SELECT 문의 구조는 아래와 같다.

 

SELECT문의 구조

 

SELECT ~

FROM ~ 

WHERE ~ 

GROUP BY ~ 

HAVING ~ 

ORDER BY ~ 

 

===============================

 

각 절의 설명

 

※ 필수 기술해야하는 절

 

SELECT : 어떤 컬럼을 조회할 것인가를 기술(반드시 기술해야하는 절) 

FROM : 어느 테이블로부터 데이터를 조회할 것인가를 기술(반드시 기술해야하는 절)

 

※ 필요에 따라 기술하는 절

 

WHERE : 자료에 조건을 부여하여 제한을 주는 절. 이 조건에 맞는 열만 조회할 수 있게된다.

GROUP BY : GROUP 함수를 사용하여 자료를 GROUP 지을 때 필요한 절

HAVING : GROUP 지은 결과에 조건을 부여하여 제한을 주는 HAVING 절

ORDER BY : 도출된 결과를 정렬할 수 있는 절

 

참고 : 전문가로 가는 지름길 오라클 실습 p.17 ~ P.18

'Oracle > SQL' 카테고리의 다른 글

ALIAS (컬럼, 테이블)  (0) 2021.06.15
NULL 에 대하여  (0) 2021.06.15
DML의 종류  (0) 2021.06.15
SQL 교육 커리큘럼  (0) 2018.03.27
테이블 및 컬럼의 COMMENT 확인  (0) 2016.11.18
Posted by 자수성가한 부자
Oracle/SQL2021. 6. 15. 09:45

DML : Data Manipulation Language

데이터를 다루는 언어로 아래의 4가지 종류로 나눌 수 있다.

1) INSERT 
   : 자료의 입력을 목적으로 한 문장

2) SELECT
   : 자료의 조회를 목적으로 한 문장

3) UPDATE
   : 자료의 수정을 목적으로 한 문장

4) DELETE
   : 자료의 삭제를 목적으로 한 문장

'Oracle > SQL' 카테고리의 다른 글

NULL 에 대하여  (0) 2021.06.15
SELECT의 구조  (0) 2021.06.15
SQL 교육 커리큘럼  (0) 2018.03.27
테이블 및 컬럼의 COMMENT 확인  (0) 2016.11.18
RANK() VS. DENSE_RANK()  (0) 2012.01.16
Posted by 자수성가한 부자
Oracle/Backup & Recovery2019. 4. 5. 11:41

설명

 

RMAN의 12c new feature인 Recover table을 테스트하는 시나리오.

기존에 클론 DB 생성 후 데이터 export 후 데이터 import하는 절차를 RMAN의 명령어 하나로 복구할 수 있게 된 기능

 

 

테스트 시나리오 요약


 1. 테스트용 테이블 생성

 2. 백업

 3. 테스트용 테이블 DROP

 4. 복구

 5. 복구된 테이블 확인

 

 

 

테스트 상세


1. 테스트용 테이블 생성

 

SQL> create table test.test (co1l number);

Table created.

SQL> insert into test.test values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test.test;

      CO1L
----------
         1

SQL> select sysdate from dual;

SYSDATE
-------------------
2019/03/30 11:19:19           ============> 복구될 시간

 

 

2. 백업

 

rman target /

 

RMAN> run {
 allocate channel ch1 type disk format='/tmp/backup/%U_%T';
 backup database;
 }2> 3> 4>

 

released channel: ORA_DISK_1
allocated channel: ch1
channel ch1: SID=108 instance=bitek1 device type=DISK

Starting backup at 30-MAR-19
channel ch1: starting full datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00002 name=+DATA/BITEK/DATAFILE/sysaux.261.1002792885
input datafile file number=00001 name=+DATA/BITEK/DATAFILE/system.260.1002792865
input datafile file number=00003 name=+DATA/BITEK/DATAFILE/undotbs1.262.1002792889
input datafile file number=00004 name=+DATA/BITEK/DATAFILE/undotbs2.264.1002792943
input datafile file number=00006 name=+DATA/BITEK/DATAFILE/splex.296.1003324047
input datafile file number=00005 name=+DATA/BITEK/DATAFILE/users.265.1002792955
channel ch1: starting piece 1 at 30-MAR-19
channel ch1: finished piece 1 at 30-MAR-19
piece handle=/tmp/backup/2cttnpn9_1_1_20190330 tag=TAG20190330T110720 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:25
Finished backup at 30-MAR-19

Starting Control File and SPFILE Autobackup at 30-MAR-19
piece handle=/oracle/oracle/product/12.2.0/dbhome_1/dbs/c-120744536-20190330-03 comment=NONE
Finished Control File and SPFILE Autobackup at 30-MAR-19
released channel: ch1

 

 

3. 테스트용 테이블 drop

 

SQL> drop table test.test purge;

Table dropped.

SQL> desc test.test
ERROR:
ORA-04043: object test.test does not exist

 

 

4. 복구

 

RMAN> recover table "TEST"."TEST" until time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')" auxiliary destination '/oracle/oracle/recover';

 

  => 스키마(TEST)와 테이블명(TEST)은 큰따옴표로 묶고, 대문자를 반드시 써야한다. 그렇지 않으면 오류 발생

Starting recover at 30-MAR-19
current log archived
using channel ORA_DISK_1
RMAN-05026: warning: presuming following set of tablespaces applies to specified point-in-time

List of tablespaces expected to have UNDO segments
Tablespace SYSTEM
Tablespace UNDOTBS1
Tablespace UNDOTBS2

Creating automatic instance, with SID='prev'

initialization parameters used for automatic instance:
db_name=BITEK
db_unique_name=prev_pitr_BITEK
compatible=12.2.0
db_block_size=8192
db_files=200
diagnostic_dest=/oracle/oracle
_system_trig_enabled=FALSE
sga_target=1024M
processes=200
db_create_file_dest=/oracle/oracle/recover
log_archive_dest_1='location=/oracle/oracle/recover'
#No auxiliary parameter file used


starting up automatic instance BITEK

Oracle instance started

Total System Global Area    1073741824 bytes

Fixed Size                     8628936 bytes
Variable Size                281019704 bytes
Database Buffers             780140544 bytes
Redo Buffers                   3952640 bytes
Automatic instance created

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')";
# restore the controlfile
restore clone controlfile;

# mount the controlfile
sql clone 'alter database mount clone database';

# archive current online log
sql 'alter system archive log current';
}
executing Memory Script

executing command: SET until clause

Starting restore at 30-MAR-19
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=45 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /oracle/oracle/product/12.2.0/dbhome_1/dbs/c-120744536-20190330-04
channel ORA_AUX_DISK_1: piece handle=/oracle/oracle/product/12.2.0/dbhome_1/dbs/c-120744536-20190330-04 tag=TAG20190330T111223
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oracle/oracle/recover/BITEK/controlfile/o1_mf_g9xnlzst_.ctl
Finished restore at 30-MAR-19

sql statement: alter database mount clone database

sql statement: alter system archive log current

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')";
# set destinations for recovery set and auxiliary set datafiles
set newname for clone datafile  1 to new;
set newname for clone datafile  3 to new;
set newname for clone datafile  4 to new;
set newname for clone datafile  2 to new;
set newname for clone tempfile  1 to new;
# switch all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile  1, 3, 4, 2;

switch clone datafile all;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to /oracle/oracle/recover/BITEK/datafile/o1_mf_temp_%u_.tmp in control file

Starting restore at 30-MAR-19
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /oracle/oracle/recover/BITEK/datafile/o1_mf_system_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs1_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs2_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /oracle/oracle/recover/BITEK/datafile/o1_mf_sysaux_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /tmp/backup/2ettnpvt_1_1_20190330
channel ORA_AUX_DISK_1: piece handle=/tmp/backup/2ettnpvt_1_1_20190330 tag=TAG20190330T111156
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 30-MAR-19

datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=1004268073 file name=/oracle/oracle/recover/BITEK/datafile/o1_mf_system_g9xnmcsd_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=6 STAMP=1004268073 file name=/oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs1_g9xnmcsw_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=7 STAMP=1004268073 file name=/oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs2_g9xnmctb_.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=8 STAMP=1004268073 file name=/oracle/oracle/recover/BITEK/datafile/o1_mf_sysaux_g9xnmcrw_.dbf

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')";
# online the datafiles restored or switched
sql clone "alter database datafile  1 online";
sql clone "alter database datafile  3 online";
sql clone "alter database datafile  4 online";
sql clone "alter database datafile  2 online";
# recover and open database read only
recover clone database tablespace  "SYSTEM", "UNDOTBS1", "UNDOTBS2", "SYSAUX";
sql clone 'alter database open read only';
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile  1 online

sql statement: alter database datafile  3 online

sql statement: alter database datafile  4 online

sql statement: alter database datafile  2 online

Starting recover at 30-MAR-19
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 84 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_84.336.1004267561
archived log for thread 1 with sequence 85 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_85.337.1004267563
archived log for thread 1 with sequence 86 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_86.338.1004267991
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_84.336.1004267561 thread=1 sequence=84
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_85.337.1004267563 thread=1 sequence=85
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_86.338.1004267991 thread=1 sequence=86
media recovery complete, elapsed time: 00:00:01
Finished recover at 30-MAR-19

sql statement: alter database open read only

contents of Memory Script:
{
   sql clone "create spfile from memory";
   shutdown clone immediate;
   startup clone nomount;
   sql clone "alter system set  control_files =
  ''/oracle/oracle/recover/BITEK/controlfile/o1_mf_g9xnlzst_.ctl'' comment=
 ''RMAN set'' scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
# mount database
sql clone 'alter database mount clone database';
}
executing Memory Script

sql statement: create spfile from memory

database closed
database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area    1073741824 bytes

Fixed Size                     8628936 bytes
Variable Size                281019704 bytes
Database Buffers             780140544 bytes
Redo Buffers                   3952640 bytes

sql statement: alter system set  control_files =   ''/oracle/oracle/recover/BITEK/controlfile/o1_mf_g9xnlzst_.ctl'' comment= ''RMAN set'' scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area    1073741824 bytes

Fixed Size                     8628936 bytes
Variable Size                281019704 bytes
Database Buffers             780140544 bytes
Redo Buffers                   3952640 bytes

sql statement: alter database mount clone database

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')";
# set destinations for recovery set and auxiliary set datafiles
set newname for datafile  5 to new;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile  5;

switch clone datafile all;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

Starting restore at 30-MAR-19
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=51 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /oracle/oracle/recover/PREV_PITR_BITEK/datafile/o1_mf_users_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /tmp/backup/2ettnpvt_1_1_20190330
channel ORA_AUX_DISK_1: piece handle=/tmp/backup/2ettnpvt_1_1_20190330 tag=TAG20190330T111156
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 30-MAR-19

datafile 5 switched to datafile copy
input datafile copy RECID=10 STAMP=1004268201 file name=/oracle/oracle/recover/PREV_PITR_BITEK/datafile/o1_mf_users_g9xnrr06_.dbf

contents of Memory Script:
{
# set requested point in time
set until  time "to_date('2019/03/30 11:19:19','yyyy/mm/dd hh24:mi:ss')";
# online the datafiles restored or switched
sql clone "alter database datafile  5 online";
# recover and open resetlogs
recover clone database tablespace  "USERS", "SYSTEM", "UNDOTBS1", "UNDOTBS2", "SYSAUX" delete archivelog;
alter clone database open resetlogs;
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile  5 online

Starting recover at 30-MAR-19
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 84 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_84.336.1004267561
archived log for thread 1 with sequence 85 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_85.337.1004267563
archived log for thread 1 with sequence 86 is already on disk as file +DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_86.338.1004267991
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_84.336.1004267561 thread=1 sequence=84
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_85.337.1004267563 thread=1 sequence=85
archived log file name=+DATA/BITEK/ARCHIVELOG/2019_03_30/thread_1_seq_86.338.1004267991 thread=1 sequence=86
media recovery complete, elapsed time: 00:00:00
Finished recover at 30-MAR-19

database opened

contents of Memory Script:
{
# create directory for datapump import
sql "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/oracle/oracle/recover''";
# create directory for datapump export
sql clone "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/oracle/oracle/recover''";
}
executing Memory Script

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''/oracle/oracle/recover''

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''/oracle/oracle/recover''

Performing export of tables...
   EXPDP> Starting "SYS"."TSPITR_EXP_prev_Fqyg":
   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
   EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
   EXPDP> . . exported "TEST"."TEST"                               5.054 KB       1 rows
   EXPDP> Master table "SYS"."TSPITR_EXP_prev_Fqyg" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYS.TSPITR_EXP_prev_Fqyg is:
   EXPDP>   /oracle/oracle/recover/tspitr_prev_99272.dmp
   EXPDP> Job "SYS"."TSPITR_EXP_prev_Fqyg" successfully completed at Sat Mar 30 11:25:42 2019 elapsed 0 00:01:23
Export completed


contents of Memory Script:
{
# shutdown clone before import
shutdown clone abort
}
executing Memory Script

Oracle instance shut down

Performing import of tables...
   IMPDP> Master table "SYS"."TSPITR_IMP_prev_Fyhj" successfully loaded/unloaded
   IMPDP> Starting "SYS"."TSPITR_IMP_prev_Fyhj":
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
   IMPDP> . . imported "TEST"."TEST"                               5.054 KB       1 rows
   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
   IMPDP> Job "SYS"."TSPITR_IMP_prev_Fyhj" successfully completed at Sat Mar 30 11:26:23 2019 elapsed 0 00:00:14
Import completed


Removing automatic instance
Automatic instance removed
auxiliary instance file /oracle/oracle/recover/BITEK/datafile/o1_mf_temp_g9xnockf_.tmp deleted
auxiliary instance file /oracle/oracle/recover/PREV_PITR_BITEK/onlinelog/o1_mf_4_g9xns44l_.log deleted
auxiliary instance file /oracle/oracle/recover/PREV_PITR_BITEK/onlinelog/o1_mf_3_g9xns32o_.log deleted
auxiliary instance file /oracle/oracle/recover/PREV_PITR_BITEK/onlinelog/o1_mf_2_g9xnrzx9_.log deleted
auxiliary instance file /oracle/oracle/recover/PREV_PITR_BITEK/onlinelog/o1_mf_1_g9xnrzfl_.log deleted
auxiliary instance file /oracle/oracle/recover/PREV_PITR_BITEK/datafile/o1_mf_users_g9xnrr06_.dbf deleted
auxiliary instance file /oracle/oracle/recover/BITEK/datafile/o1_mf_sysaux_g9xnmcrw_.dbf deleted
auxiliary instance file /oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs2_g9xnmctb_.dbf deleted
auxiliary instance file /oracle/oracle/recover/BITEK/datafile/o1_mf_undotbs1_g9xnmcsw_.dbf deleted
auxiliary instance file /oracle/oracle/recover/BITEK/datafile/o1_mf_system_g9xnmcsd_.dbf deleted
auxiliary instance file /oracle/oracle/recover/BITEK/controlfile/o1_mf_g9xnlzst_.ctl deleted
auxiliary instance file tspitr_prev_99272.dmp deleted
Finished recover at 30-MAR-19

 

5. 복구된 테이블 확인

 

SQL> select * from test.test;

      CO1L
----------
         1

 

※ 추가내용

recover table "TEST"."TEST" until time "to_date('2019/03/30 16:01:17','yyyy/mm/dd hh24:mi:ss')" auxiliary destination '/oracle/oracle/recover'
remap table "TEST"."TEST":"TEST_OLD";

 

 => 기존에 테이블이 존재한다면 remap table 기능을 이용하여 복구도 가능하다.

Posted by 자수성가한 부자
Oracle/RAC2019. 1. 22. 10:01

GCS

 : Global Cache Service. 글로벌 캐시 동기화를 담당하는 역할을 하는 서비스이다.

  이 서비스를 수행하는 백그라운드 프로세스는 LMS 프로세스에 의해 제공된다.

  10g 부터 gcs_server_processes 파라미터로 LMS 프로세스의 개수를 지정할 수 있다.

  CPU가 많을수록, 인터커넥트 통신이 많을 수록 많이 사용하는 것이 일반적인 가이드이다.

 기본값은 4개의 CPU당 하나의 LMS 프로세스를 사용한다.


GES 

 : Global Enqueue Service. LMD 프로세스와 LCK 프로세스에 의해 제공된다.

   RAC에서는 LMS 프로세스가 BL락을 전담해서 관리하기 때문에 , LCK 프로세스는 단 하나만 구동된다.

   RAC에서는 LMD 프로세스는 노드간의 락 정보 전송 요청 및 응답 매커니즘을 관리한다.


CGS

 : Cluster Group Service. LMON 프로세스에 의해 제공된다.

  CGS wait for IPC msg 라는 Idle 이벤트가 관찰되는데 이 이벤트 대기 현상은 LMON 프로세스가 CGS를 위해 IPC 메시지를 받을 때까지 대기한다는 의미이다.

  CGS, 즉 LMON 프로세스는 클러스터의 멤버쉽을 관리하는 일을 한다. 클러스터를 모니터링 하면서 노드의 가입이나 탈퇴에 따른 클러스터의 상태를 관리하는 역할을 수행한다.




'Oracle > RAC' 카테고리의 다른 글

oracle RAC ip 변경  (0) 2021.11.23
RAC 노드간 parallel process 제어  (0) 2015.08.18
CSS 파라미터  (1) 2013.08.12
[펌] crs 로그 위치  (0) 2013.02.07
CRS 소프트웨어 버전 확인  (0) 2011.09.08
Posted by 자수성가한 부자
Oracle/SQL2018. 3. 27. 06:19



SQL 교육 - 1


 0. 사전 준비사항

     - 실습환경 :  Oracle 11g XE

     - 샘플스키마 : XXXX.sql

     - Oracle  설치 및 데이터베이스 생성


 1. 관계형 데이터베이스(RDBMS란?)

     - RDBMS의 아키텍쳐 그림(단순)

     - 상용 RDBMS의 종류


 2. SQL이란?

     - SQL의 정의 

     - SQL의 종류


 3. 단일행 함수(Single Row Function)

     - 문자열 함수

     - 숫자형 함수


 4. 여러행 함수(Multi Row Function)

     - SUM

     - AVG

 

 5. 집합 연산자(Set Operator)

     - UNION 

     - UNION ALL

     - MINUS

     - INTERSECT


 6. 서브 쿼리(Sub Query)


 7. 조인(Join)



'Oracle > SQL' 카테고리의 다른 글

SELECT의 구조  (0) 2021.06.15
DML의 종류  (0) 2021.06.15
테이블 및 컬럼의 COMMENT 확인  (0) 2016.11.18
RANK() VS. DENSE_RANK()  (0) 2012.01.16
view에 dml이 될까?  (0) 2011.07.11
Posted by 자수성가한 부자
Oracle/SQL2016. 11. 18. 10:12

 

 

#######################
# 테이블 COMMENTS 확인
######################

SELECT
FROM DBA_TAB_COMMENTS
WHERE OWNER = 'TEST_USER';

#####################
# 컬럼 COMMENTS 확인
#####################

SELECT *
FROM DBA_COL_COMMENTS
WHERE OWNER='TEST_USER';
AND COMMENTS IS NULL;

'Oracle > SQL' 카테고리의 다른 글

DML의 종류  (0) 2021.06.15
SQL 교육 커리큘럼  (0) 2018.03.27
RANK() VS. DENSE_RANK()  (0) 2012.01.16
view에 dml이 될까?  (0) 2011.07.11
현재 SCN 구하기  (0) 2010.10.01
Posted by 자수성가한 부자
Oracle/Admin2016. 11. 18. 10:09

 

오라클 DB에서 DDL문을 추출하는 방법

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

1. SQLPLUS 접속

$ sqlplus / as sysdba

 

2. DBMS_METADATA.GET_DDL 함수를 이용한 DDL문 추출

SQL>
set long 100000 pages 1000
SELECT
dbms_metadata.get_ddl('TABLE','TEST_TABLE','TEST_USER'),
dbms_metadata.get_dependent_ddl('INDEX','TEST_TABLE_IDX01','TEST_USER'),
dbms_metadata.get_dependent_ddl('COMMENT','TEST_TABLE','TEST_USER')
from dual;

 

 

Posted by 자수성가한 부자
Oracle/Admin2016. 11. 18. 10:06

 

 

--------------
- PK 변경 절차
--------------

1. 기존 PK disable
-------------------
alter table test.TEST_TABLE disable constraint TEST_TABLE_PK;

 

2. 기존 PK drop
------------------

alter table test.TEST_TABLE drop constraint TEST_TABLE_PK ;


3. 기존 인덱스 drop
-------------------
drop index test.TEST_TABLE_PK ;

 

4. 신규 인덱스 create
----------------------
create index  test.TEST_TABLE_PK ON test.TEST_TABLE (COL1, COL2, COL3, COL4, COL5);

 

5. PK 추가
----------
ALTER TABLE test.TEST_TABLE ADD CONSTRAINT TEST_TABLE_PK PRIMARY KEY (COL1, COL2, COL3, COL4, COL5);

 

Posted by 자수성가한 부자
Oracle/Admin2015. 8. 18. 15:15

 

 

 

Q :

 파티션 테이블에 글로벌 인덱스가 걸려있을 때 파티션 DDL 작업에 의해 영향을 받는다. 이때 글로벌 인덱스가 unusable로 빠지는 상황이 있는데 이것을 미연에 방지하려면 어떻게 해야하는가?

 

A :

 자동 인덱스 rebuild가 가능하도록 명령을 설정해준다.

 하지만, DDL로 인해서 영향 받는 레코드가 5% 미만일 때만 유용하다. 5% 이상일 때는 인덱스를 재생성하는 것보다 오히려 늦다.

 

 alter table ...

 split partition ...

 update global indexes;

 

'Oracle > Admin' 카테고리의 다른 글

DDL문 추출 방법  (0) 2016.11.18
PK 변경절차  (0) 2016.11.18
테이블의 move시에 인덱스는 어떻게 될까?  (0) 2015.04.30
[펌] AMM에 관한 Test Case  (0) 2013.04.16
SQL*Loader 성능을 향상시키는 방법  (0) 2013.01.16
Posted by 자수성가한 부자