Netbackup 연동 RMAN 복원 테스트

현업에서는 서버를 관리하는데 있어서 대부분 백업 솔루션이 들업갑니다.


중소규모의 회사나 서버가 몇대 없는 회사의 경우, RMAN 스크립트를 만들어서 crontab 이나 작업스케줄러에 등록하여 백업을 받기도 하지만, 대규모의 기업이나 많은 수의 서버를 가진 업체의 경우 Netbackup 같은 백업 솔루션이 들어갑니다.


백업 솔루션은 Netbackup만 있는 것은 아니고 많은 회사들이 출시한 다양한 제품이 있지만, 국내에서 가장 많이 사용하는 백업 솔루션은 Netbackup 입니다. 백업 솔루션은 Acronis 같은 제품도 있고, 다양하게 있습니다.


Netbackup 같은 백업 솔루션은 단순 DB 백업 뿐 아니라 서버 자체를 백업 한다거나 다른 어플리케이션 백업도 가능합니다.

그렇기 때문에 Netbackup 엔지니어들은 Netbackup 설치나 OS 복구 정도는 할 수 있습니다. 


하지만, 오라클은 DB를 Netbackup을 이용해서 백업 할 줄 알아도, DB를 복구 하는 방법을 모르는 경우가 대부분 입니다. Netbackup을 다루는 회사마다 복구 메뉴얼이 있고, 메뉴얼 대로 복구 하는 경우가 많지만, 왜 그렇게 복구를 해야 하는지?, 복구하다 막혔을때 어떻게 해야 하는지 모르는 경우가 많아 DB 엔지니어나 DBA의 도움을 필요로 합니다. Netbackup 엔지니어들은 오라클을 집중적으로 공부한 경우가 많지 않기 때문이죠.


백업 계약이라는 것은 백업만 해주는게 아니고 장애시 복구가 포함 되는 것인데 백업 엔지니어가 DBA가 없으면 복구를 못하는 경운가 많다는 것이죠. 개인적으로 봤을때는 말이 안되는 상황이라고 봅니다. 업체측에서 restore 까지만 계약 되어 있다고 하는 경우도 있는데, 일반적으로 백업 복구는 recovery 후 시스템 정상화까지가 복구입니다. 


DBA와 백업 엔지니어가 협력해야 하는게 맞고, 서로서로 좋은게 좋은것이지만, 기본적으로 혼자 복구 할 줄 알아야 한다고 생각합니다. 어떤 회사는 들어가보면 DB는 있는데 DBA도 없고, DB 유지보수 계약도 없는 경우도 많거든요.




시나리오


● RAC 2노드 (ASM) -> Single DB (ASM Standalone)


 - RAC는 라이센스도 비싸고, 장비 세팅이나 준비사항이 많습니다. 

   그렇기 때문에 DR서버를 구축하거나 복구를 위한 테스트 서버를 RAC로 구축하는것은 낭비입니다.

 - 오라클 DB의 버전은 동일하게 맞춥니다. 원본이 11.2.0.4 라면 복구도 11.2.0.4

 - 파일 시스템은 일반 파일시스템이나 Raw Device 이어도 상관 없지만, 복구 과정 중에 Rename 작업이 필요하며, 

   ASM의 경우는 Rename 작업이 필요가 없습니다.

 - Netbackup에서 원본 서버의 RMAN 백업과 Archive 파일을 백업 받습니다.

 - 복구 서버에도 Netbackup 에이전트를 설치하고, RMAN의 저장 경로를 Netbackup으로 인식 시켜줍니다.



1. pfile 설정


 - pfile을 Netbackup에 있는 RMAN 백업에서 내려 받아도 상관 없지만, 그냥 원본에서 spfile을 pfile로 백업해서 드래그로 긁어 오는게 편합니다.


 원본서버

 SQL> create pfile='init<SID>.ora' from spfile;


 $ORACLE_HOME/dbs 밑에 가면 init<SID>.ora 파일이 생성 되어 있는데, 복구서버의 동일한 디렉토리에 복사해 주거나, vi로 만들어서 안의 내용을 복사해서 붙여 넣습니다.


rac2.__db_cache_size=1526726656

rac1.__db_cache_size=1459617792

rac2.__java_pool_size=16777216

rac1.__java_pool_size=16777216

rac2.__large_pool_size=33554432

rac1.__large_pool_size=33554432

rac1.__oracle_base='/app/oracle'#ORACLE_BASE set from environment

rac2.__oracle_base='/app/oracle'#ORACLE_BASE set from environment

rac2.__pga_aggregate_target=1258291200

rac1.__pga_aggregate_target=1342177280

rac2.__sga_target=2097152000

rac1.__sga_target=2013265920

rac2.__shared_io_pool_size=0

rac1.__shared_io_pool_size=0

rac2.__shared_pool_size=486539264

rac1.__shared_pool_size=469762048

rac2.__streams_pool_size=0

rac1.__streams_pool_size=0

*.audit_file_dest='/app/oracle/admin/rac/adump'

*.audit_trail='db'

*.cluster_database=true

*.compatible='11.2.0.4.0'

*.control_files='+DATA/rac/controlfile/current.260.923661671','+RECO/rac/controlfile/current.256.923661671'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='rac'

*.db_recovery_file_dest='+RECO'

*.db_recovery_file_dest_size=7423918080

*.diagnostic_dest='/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'

rac1.instance_number=1

rac2.instance_number=2

*.log_archive_dest_1='LOCATION=/archive'

*.log_archive_format='arch_rac_%t_%s_%r.arc'

*.memory_target=3348103168

*.open_cursors=300

*.processes=350

*.remote_listener='rac-cluster-scan:1521'

*.remote_login_passwordfile='exclusive'

*.sessions=390

rac2.thread=2

rac1.thread=1

rac2.undo_tablespace='UNDOTBS2'

rac1.undo_tablespace='UNDOTBS1'

 


파라미터 파일을 수정해야 합니다.

rac 관련되 부분을 삭제 혹은 주석 처리하고, cluster_database는 ture에서 false로 변경해 줍니다.


수정 후


rac.__db_cache_size=1459617792

rac.__java_pool_size=16777216

rac.__large_pool_size=33554432

rac.__oracle_base='/app/oracle'#ORACLE_BASE set from environment

rac.__pga_aggregate_target=1342177280

rac.__sga_target=2013265920

rac.__shared_io_pool_size=0

rac.__shared_pool_size=469762048

rac.__streams_pool_size=0

*.audit_file_dest='/app/oracle/admin/rac/adump'

*.audit_trail='db'

*.cluster_database=false

*.compatible='11.2.0.4.0'

*.control_files='+DATA/rac/controlfile/current.260.923661671'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='rac'

*.db_recovery_file_dest='+DATA'

*.db_recovery_file_dest_size=7423918080

*.diagnostic_dest='/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'

rac.instance_number=1

#rac2.instance_number=2

*.log_archive_dest_1='LOCATION=/archive'

*.log_archive_format='arch_rac_%t_%s_%r.arc'

*.memory_target=3348103168

*.open_cursors=300

*.processes=350

#*.remote_listener='rac-cluster-scan:1521'

*.remote_login_passwordfile='exclusive'

*.sessions=390

#rac2.thread=2

rac.thread=1

#rac2.undo_tablespace='UNDOTBS2'

rac.undo_tablespace='UNDOTBS1'


수정하고 diag 경로를 생성하고, archive 경로가 맞는지 확인해줍니다.


$ mkdir -p /app/oracle/admin/rac/adump

$ mkdir -p /archive

# chown oracle.oinstall /archive


수정이 완료 되면 DB가 nomount 상태까지 올라갑니다.


$ sqlplus / as sysdba

SQL> startup nomount;


그러면 DB쪽은 Restore 준비가 끝난 상태입니다.



2. Netbackup 에서 Controlfile 내려 받기


 - DB가 nomount 상태가 되면 Netbackup 에이전트 설치 및 Netbackup RMAN 연동이 가능합니다. (Netbackup 엔지니어 작업)

 - Netbackup과 RMAN이 연결되면, RMAN에서 list backup 명령시 백업 파일들이 나옵니다.


RMAN> 


RUN {

ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

SEND 'NB_ORA_SERV=<넷백업 서버명>, NB_ORA_CLIENT=<복구서버 클라이언트 명>';

RESTORE CONTROLFILE FROM 'ctrl_dracDB_udnrljheg_s439_p1_t928630224';

RELEASE CHANNEL ch00;

}


빨간색으로 된 부분은 콘트롤 파일의 백업인데, 백업마다 이름이 다르고, 서버마다 다르니 맞는 걸 찾아서 복원하면 됩니다.


콘트롤 파일이 복원디면 DB mount가 가능해집니다.


RMAN> alter database mount;



3. Restore


 - controlfile이 복원되면 restore가 가능해집니다.

 - ASM의 경우 datafile의 끝에 랜덤 숫자로 고유번호가 붙는데, 원본 DB와 복구DB의 번호가 다릅니다.

 - Restore 시 바뀐 번호로 자동 적용됩니다.


restore 명령을 실행 해봅니다.


RMAN>


RUN {

ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

SEND 'NB_ORA_SERV=<넷백업 서버명>, NB_ORA_CLIENT=<복구서버 클라이언트 명>';

RESTORE DATABASE;                                   

RELEASE CHANNEL ch00;

}


그러면 진행 상황이 나오며, restore가 진행됩니다.


Starting restore at 23-OCT-16

using channel ORA_DISK_1


channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00001 to +DATA/rac/datafile/system.256.923661571

channel ORA_DISK_1: restoring datafile 00002 to +DATA/rac/datafile/sysaux.257.923661571

channel ORA_DISK_1: restoring datafile 00003 to +DATA/rac/datafile/undotbs1.258.923661573

channel ORA_DISK_1: restoring datafile 00004 to +DATA/rac/datafile/users.259.923661573

channel ORA_DISK_1: restoring datafile 00005 to +DATA/rac/datafile/example.264.923661707

channel ORA_DISK_1: restoring datafile 00006 to +DATA/rac/datafile/undotbs2.265.923661973

channel ORA_DISK_1: restoring datafile 00007 to +DATA/rac/datafile/test01.269.924548909

channel ORA_DISK_1: reading from backup piece /work/rman/0qrijlsp_1_1_20161017.bkp

channel ORA_DISK_1: piece handle=/work/rman/0qrijlsp_1_1_20161017.bkp tag=TAG20161017T161729

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:18:05

Finished restore at 23-OCT-16


RMAN>



4. Recovery


 - recover database 명령을 날려보면 필요한 archive log 파일 리스트가 나옵니다.


RMAN> recover database;


Starting recover at 23-OCT-16
using channel ORA_DISK_1

starting media recovery

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=473
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=239
channel ORA_DISK_1: reading from backup piece /work/rman/0srijm73_1_1_20161017.bkp
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /work/rman/0srijm73_1_1_20161017.bkp
ORA-19504: failed to create file "/archive/arch_rac_2_473_923661675.arc"
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 13: Permission denied
Additional information: 1

failover to previous backup
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/23/2016 17:28:31
RMAN-20506: no backup of archived log found
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of archived log for thread 1 with sequence 239 and starting SCN of 4539696 found to restore
RMAN-06025: no backup of archived log for thread 2 with sequence 473 and starting SCN of 4539693 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 238 and starting SCN of 4539695 found to restore
RMAN-06025: no backup of archived log for thread 2 with sequence 472 and starting SCN of 4539692 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 237 and starting SCN of 4539694 found to restore
RMAN-06025: no backup of archived log for thread 2 with sequence 471 and starting SCN of 4539691 found to restore

thread 1은 1번 노드, thread 2는 2번 노드의 아카이브 파일입니다.
빨간색으로 된 부분에서 sequence 넘버를 잘 보면 맨 위에가 최신이고, 아래쪽이 오래된 시퀀스 넘버입니다.
해당 시퀀스 번호를 가진 아카이브 로그가 필요하다는 뜻 입니다.

그러면 Netbackup에서 아카이브 로그를 복구 합니다.

RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
SEND 'NB_ORA_SERV=<넷백업 서버명>, NB_ORA_CLIENT=<복구서버 클라이언트 명>';
RESTORE ARCHIVELOG FROM SEQUENCE 237 UNTIL SEQUENCE 239 THREAD 1;
RESTORE ARCHIVELOG FROM SEQUENCE 471 UNTIL SEQUENCE 473 THREAD 2;
RELEASE CHANNEL ch00;
}


그 후에

RMAN> recover database;

RMAN> alter database open resetlogs; 

하면 완료가 됩니다.


Error in invoking target 'agent nmhs' of makefile

11g 설치시 나오는 에러

Error in invoking target 'agent nmhs' of makefile ....

이라고 에러가 나오는 경우.


Oracle 11g R2를 Install하는 동안 “Error in invoking target 'agent nmhs' of makefile - during 11g Installation”과 같은 오류가 보고되는 경우 그냥 무시를 하고 진행해도 되지만 “$ emctl status dbconsole” 또는 오라클 에이젼트가 오작동을 일으키는 경우가 있습니다.


위와 같이 오류가 보고되는 순간 계속 진행하지 말고,


1. “$ORACLE_HOME/sysman/lib/ins_emagent.mk”을 vi로 Open


2. “$(MK_EMAGENT_NMECTL)”를 찾아서 “$(MK_EMAGENT_NMECTL) -lnnz11” 로 수정


3. 인스톨로 “Retry”를 선택하여 무시하지 말고 계속 진행.

리눅스7 버전에서 11g grid 설치시 root.sh 실패

root.sh 실행시 

아래와 같이 나오며 설치 실패 되는 경우


[root@localhost /]# /u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/roothas.pl

Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params

Creating trace directory

User ignored Prerequisites during installation

LOCAL ADD MODE

Creating OCR keys for user ‘oracle’, privgrp ‘oinstall’..

Operation successful.

LOCAL ONLY MODE

Successfully accumulated necessary OCR keys.

Creating OCR keys for user ‘root’, privgrp ‘root’..

Operation successful.

CRS-4664: Node localhost successfully pinned.

Adding Clusterware entries to inittab

ohasd failed to start

Failed to start the Clusterware. Last 20 lines of the alert log follow:

2016-01-01 02:14:46.806:

[client(11401)]CRS-2101:The OLR was formatted using version 3.

2016-01-01 02:14:49.572:

[client(11424)]CRS-1001:The OCR was formatted using version 3.


ohasd failed to start at /u01/app/11.2.0/grid/crs/install/roothas.pl line 377, line 4.




해결 방안


1. deinstall 해서 설치를 삭제


[root@localhost deinstall]# su – oracle

Last login: Fri Jan 1 02:17:02 EST 2016 on pts/1

[oracle@localhost ~]$ cd /u01/app/11.2.0/grid/deinstall

[oracle@localhost deinstall]$ ./deinstall


Checking for required files and bootstrapping …

Please wait …

Location of logs /tmp/deinstall2016-01-01_02-30-16AM/logs/


############ ORACLE DEINSTALL & DECONFIG TOOL START ############

######################### CHECK OPERATION START ###########################

[START] Install check configuration ##


Checking for existence of the Oracle home location /u01/app/11.2.0/grid

Oracle Home type selected for deinstall is: Oracle Grid Infrastructure for a Standalone Server

Oracle Base selected for deinstall is: /u01/app/oracle

Checking for existence of central inventory location /u01/app/oraInventory

Checking for existence of the Oracle Grid Infrastructure home /u01/app/11.2.0/grid

Checking for sufficient temp space availability on node(s) : ‘localhost.localdomain’


## [END] Install check configuration ##

Traces log file: /tmp/deinstall2016-01-01_02-30-16AM/logs//crsdc.log

Network Configuration check config START

Network de-configuration trace file location: /tmp/deinstall2016-01-01_02-30-16A/logs/netdc_check2016-01-01_02-30-40-AM.log

Network Configuration check config END

Asm Check Configuration START


ASM de-configuration trace file location: /tmp/deinstall2016-01-01_02-30-16AM/logs/asmcadc_check2016-01-01_02-30-41-AM.log

ASM configuration was not detected in this Oracle home. Was ASM configured in this Oracle home (y|n) [n]: n

ASM was not detected in the Oracle Home


######################### CHECK OPERATION END #########################

####################### CHECK OPERATION SUMMARY #######################

Oracle Grid Infrastructure Home is: /u01/app/11.2.0/grid

The cluster node(s) on which the Oracle home deinstallation will be performed are:null

Oracle Home selected for deinstall is: /u01/app/11.2.0/grid

Inventory Location where the Oracle home registered is: /u01/app/oraInventory

ASM was not detected in the Oracle Home

Do you want to continue (y – yes, n – no)? [n]: y

A log of this session will be written to: ‘/tmp/deinstall2016-01-01_02-30-16AM/logs/deinstall_deconfig2016-01-01_02-30-35-AM.out’

Any error messages from this session will be written to: ‘/tmp/deinstall2016-01-01_02-30-16AM/logs/deinstall_deconfig2016-01-01_02-30-35-AM.err’


######################## CLEAN OPERATION START ########################

ASM de-configuration trace file location: /tmp/deinstall2016-01-01_02-30-16AM/logs/asmcadc_clean2016-01-01_02-30-57-AM.log

ASM Clean Configuration END


Network Configuration clean config START

Network de-configuration trace file location: /tmp/deinstall2016-01-01_02-30-16A/logs/netdc_clean2016-01-01_02-30-57-AM.log

De-configuring backup files…

Backup files de-configured successfully.


The network configuration has been cleaned up successfully.

Network Configuration clean config END


—————————————->


Run the following command as the root user or the administrator on node “localhost”.


/tmp/deinstall2016-01-01_02-30-16AM/perl/bin/perl -I/tmp/deinstall2016-01-01_02-30-16AM/perl/lib -I/tmp/deinstall2016-01-01_02-30-16AM/crs/install /tmp/deinstall2016-01-01_02-30-16AM/crs/install/roothas.pl -force -deconfig -paramfile “/tmp/deinstall2016-01-01_02-30-16AM/response/deinstall_Ora11g_gridinfrahome1.rsp”


Press Enter after you finish running the above commands


<————————————-


This is the point where you have to execute the command highlighted and execute it from root user and wait for it to complete in order to deconfigure the Oracle Restart Stack.


[root@localhost ~]# /tmp/deinstall2016-01-01_02-30-16AM/perl/bin/perl -I/tmp/deinstall2016-01-01_02-30-16AM/perl/lib -I/tmp/deinstall2016-01-01_02-30-16AM/crs/install /tmp/deinstall2016-01-01_02-30-16AM/crs/install/roothas.pl -force -deconfig -paramfile “/tmp/deinstall2016-01-01_02-30-16AM/response/deinstall_Ora11g_gridinfrahome1.rsp”

Using configuration parameter file: /tmp/deinstall2016-01-01_02-30-16AM/response/deinstall_Ora11g_gridinfrahome1.rsp

CRS-2613: Could not find resource ‘ora.cssd’.

CRS-4000: Command Stop failed, or completed with errors.

CRS-2613: Could not find resource ‘ora.cssd’.

CRS-4000: Command Delete failed, or completed with errors.

CRS-4133: Oracle High Availability Services has been stopped.

Successfully deconfigured Oracle Restart stack



#########################

Setting the force flag to false

Setting the force flag to cleanup the Oracle Base

Oracle Universal Installer clean START


Detach Oracle home ‘/u01/app/11.2.0/grid’ from the central inventory on the local node : Done

Delete directory ‘/u01/app/11.2.0/grid’ on the local node : Done

Delete directory ‘/u01/app/oraInventory’ on the local node : Done

Delete directory ‘/u01/app/oracle’ on the local node : Done

Oracle Universal Installer cleanup was successful.

Oracle Universal Installer clean END


## [START] Oracle install clean ##

Clean install operation removing temporary directory ‘/tmp/deinstall2016-01-01_02-30-16AM’ on node ‘localhost’

## [END] Oracle install clean ##

######################### CLEAN OPERATION END #########################

####################### CLEAN OPERATION SUMMARY #######################

Oracle Restart was already stopped and de-configured on node “localhost”

Oracle Restart is stopped and de-configured successfully.

Successfully detached Oracle home ‘/u01/app/11.2.0/grid’ from the central inventory on the local node.

Successfully deleted directory ‘/u01/app/11.2.0/grid’ on the local node.

Successfully deleted directory ‘/u01/app/oraInventory’ on the local node.

Successfully deleted directory ‘/u01/app/oracle’ on the local node.

Oracle Universal Installer cleanup was successful.


Run ‘rm -rf /etc/oraInst.loc’ as root on node(s) ‘localhost’ at the end of the session.

Run ‘rm -rf /opt/ORCLfmap’ as root on node(s) ‘localhost’ at the end of the session.

Run ‘rm -rf /etc/oratab’ as root on node(s) ‘localhost’ at the end of the session.

Oracle deinstall tool successfully cleaned up temporary directories.

#######################################################################

############# ORACLE DEINSTALL & DECONFIG TOOL END #############


2. Oracle Support 홈페이지 (metalink)에서 패치 18370031 를 받는다.


3. Grid를 재설치 하고 root.sh 실행 바로전에 OPatch 18370031을 패치 한다.


 $ opatch napply -local ./18370031


4. 패치가 끝나면 root.sh 실행

리눅스에서 2TB 이상 대용량 디스크 파티션 사용

리눅스에서는 일반 파티션의 사이즈는 2TB로 제한 되어 있습니다.

이 것을 GPT 타입으로 변경해야 2TB보다 큰 파티션을 사용할 수 있습니다.


일반적으로 파티셔닝을 하면 아래처럼 됩니다.


[root@backup-test ~]# fdisk -l /dev/sdc


Disk /dev/sdc: 5497.6 GB, 5497558138880 bytes, 10737418240 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0xbb438cb0


   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1            2048    10487807     5242880   83  Linux

/dev/sdc2        10487808    52430847    20971520   83  Linux

/dev/sdc3        52430848  4294967294  2121268223+  83  Linux


sdc3을 보면 2TB로 제한 되어버립니다.



변경하려고 하는 디스크를 선택


# parted /dev/sdc

GNU Parted 3.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) 


(parted) mklabel gpt                                                      

Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?

Yes/No? yes


(parted) unit TB                            <----- 최소 용량을 설정하는 명령 (기본 MB) GB or TB


(parted) mkpart primary 0.00TB 5.50TB


(parted) print                                                            

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 5.50TB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags: 


Number  Start   End     Size    File system  Name     Flags

 1      0.00TB  5.50TB  5.50TB               primary


(parted) quit

DBMS 기본 데이터 타입

● 문자 데이터 타입


데이터 타입 

설명 

 CHAR(크기[BYTE|CHAR])

 고정길이 문자, 최대 2000byte, 디폴트 값 1byte 

 VARCHAR2(크기[BYTE|CHAR])

 고정길이 문자, 최대 4000byte, 디폴트 값 1byte 

 NCHAR (크기)

 고정길이 유니코드 문자 (다국어 입력 가능), 최대 2000BYTE, 디폴트 값 1byte

 NVARCHAR2 (크기)

 고정길이 유니코드 문자 (다국어 입력 가능), 최대 4000BYTE, 디폴트 값 1byte

 LONG

 최대 2GB 크기의 가변길이 문자형, 잘 사용하지 않음



● 숫자 데이터 타입


 데이터 타입 

 설명 

 NUMBER[(p,[s])]

 가변숫자, p(1~38, 디폴트 38) s(-84~127, 디폴트 0) 십진수 기준, 최대 22byte

 FLOAT[(p)]

 NUMBER의 하위 타입, p는 1~128, 디폴트 128, 이진수 기준, 최대 22byte

 BINARY_FLOAT

 32비트 부동소수점 수, 최대 4byte 

 BINARY_DOUBLE

 64비트 부동소수점 수, 최대 8byte 


- 4가지가 있지만 주로 NUMBER를 많이 사용합니다. 다른 DBMS는 INTEGER와 같은 정수형, DECIMAL과 같은 실수형을 제공합니다. 오라클도 INTEGER과 DECIMAL로 생성이 가능 하지만, 내부적으로는 NUMBER 형으로 변환되어 생성됩니다.



● 날짜 데이터 타입


데이터 타입 

 설명 

 DATE

 BC 4712년 1월 1일부터 9999년 12월 31일, 

 연,월,일,시,분,초까지 입력가능

 TIMESTAMP[(fractional_seconds_precision)]

 연도, 월, 일, 시, 분, 초는 물론 밀리초 까지 입력 가능

 fractional_seconds_precision은 0~9까지 입력할 수 있고 디폴트는 6



● LOB 데이터 타입 (Large OBject의 약자)


데이터 타입

 설명 

 CLOB

 문자형 대용량 객체. 고정길이와 가변길이 문자 집합 지원, 

 최대크기 (4GB-1)x(데이터베이스 블록 사이즈)

 NCLOB

 유니코드(다국어 지원)를 포함한 문자형 대용량 객체. 

 최대크기 (4GB-1)x(데이터베이스 블록 사이즈)

 BLOB

 이진형 대용량 객체, 최대 크기 (4GB-1)x(데이터베이스 블록 사이즈)

 BFILE

 대용량 이진 파일에 대한 로케이터(위치, 이름)저장. 최대 저장 크기는 4GB



● NULL


 - NULL은 '값이 없음'을 의미하면 테이블을 생성할 때 컬럼 속성에 기술한다. 디폴트 값이 NULL이므로 별도 지정 없으면 해당 컬럼은 NULL을 허용한다. NOT NULL로 명시한 컬럼에 데이터를 넣지 않으면 해당 로우 INSERT가 불가능하다.



'ORACLE > Oracle DBMS' 카테고리의 다른 글

DBMS 기본 데이터 타입  (0) 2018.11.02
데이터베이스 객체의 종류  (0) 2018.11.02
SCN과 Checkpoint  (0) 2014.06.12
Redo Log  (0) 2014.06.12
Control File  (0) 2014.06.11
Oracle Character set 에 관하여  (0) 2014.06.10

티스토리 툴바