반응형

1. 권한 정보 얻기
DBA_SYS_PRIVS
SESSION_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS
특정 유저가 가진 system 권한 확인
select * from dba_sys_privs where grantee='SCOTT';

2. 롤 정보 얻기
SELECT role, password_required FROM dba_roles;
SELECT * from dba_sys_privs where grantee='CONNECT';

DBA_ROLES: Database에 존재하는 모든 롤
DBA_ROLE_PRIVS: User 및 롤에 부여하는 롤
ROLE_ROLE_PRIVS: 롤에 부여하는 롤
DBA_SYS_PRIVS: User 및 롤에 부여하는 시스템 권한
ROLE_SYS_PRIVS: 롤에 부여하는 시스템 권한
ROLE_TAB_PRIVS: 롤에 부여하는 객체 권한
SESSION_ROLES: User가 현재 활성화한 롤

3. 롤 관련 view들
select * from dba_sys_privs where grantee='SCOTT';
select role,password_required from dba_roles;

반응형
반응형


아래는 Goodus라는 업체에서 교육한 것을 하이라이터가 노트 삼아 막우잡이(?)로 기록한 것이다. 본인이 그냥 참고하기위해 남겨두는 것이다. 뭐 유심히 보실 필요는 없을 듯 하다.


[root@park ~] #id
[root@park ~] #su - oralce
park:/oracle:park>$ls -alrt
park:/oracle:park>$vi .bash_profile
park:/oracle:park>$which gcc
park:/oracle:park>$which gcc
park:/oracle:park>$echo $ORACLE_HOME
park:/oracle:park>$ls -all
park:/oracle:park>$export DISPLAY=61.250.99.196:0.0
park:/oracle:park>$echo $DISPLAY
park:/oracle:park>$xclock

ps -ef | grep lsnr

lsnrctl status

smon 프로세스가 작동중인지 확인 명령어(윈도우에서는 services.msc와 동일함)
ps -ef | grep smon

echo $ORACLE_SID
export ORACLE_SID=goodus2
$su -oralce
export ORACLE_SID=goodus2

! ls -alter
alter system switch logfile;
select * from v$log;

set lines 180
select * from v$log;
alter system switch logfile;
! ls /oracle/oradata/arch

select file_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------------------------------/oracle/oradata3/TEST3/users01.dbf
/oracle/oradata3/TEST3/sysaux01.dbf
/oracle/oradata3/TEST3/undotbs01.dbf
/oracle/oradata3/TEST3/system01.dbf
/oracle/oradata3/TEST3/example01.dbf


/oralce/offbackup/


alter tablespace system begin backup;

! cp /oracle/oradata/system.dbf /oralce/onbakcup;

alter tablespace system end backup;


alter database begin backup;
! cp /oracle/oradata/*.dbf /oralce/onbakcup;
alter database end backup;

dbv file=/oracle/oradata3/TEST3/system01.dbf logfile=dbv.log

dbv를 확인하여 복구(?)하는 것은 BBED를 사용하여...


http://support.oralce.com

park:/oracle:park>$./runInstaller


park:/oracle:park>$source .bash_profile
(source .bash_profile 와 ./.bash_profile 은 같은 명령어)

ls -alrt

park:/oracle:park>$unzip linux_11gR2_database_1of2.zip
park:/oracle:park>$unzip linux_11gR2_database_2of2.zip

./runInstaller


오라클 메타링크에서 필요로 하는 OS 확인 문서
169706.1

#버젼 확인
select * from v$version;

#복구 필요 유무
select * from v$recover_file;

col comp_name fro a40
set lines 250
#컴포넌트 버전 상태 확인
select comp_name, version, status from dba_registry;

show parameter comp
alter system set compatible='11.2.0.1.0' scope=spfile;

http://www.cyworld.com/butterfly1472/4623347

반응형
반응형

아래는 Goodus라는 업체에서 교육한 것을 하이라이터가 노트 삼아 막우잡이(?)로 기록한 것이다. 본인이 그냥 참고하기위해 남겨두는 것이다. 뭐 유심히 보실 필요는 없을 듯 하다.

*오라클 Admin 교육

1. 04/12
[root@park ~] #id
[root@park ~] #su - oralce
park:/oracle:park>$ls -alrt
park:/oracle:park>$vi .bash_profile
park:/oracle:park>$which gcc
park:/oracle:park>$which gcc
park:/oracle:park>$echo $ORACLE_HOME
park:/oracle:park>$ls -all
park:/oracle:park>$export DISPLAY=61.250.99.196:0.0
park:/oracle:park>$echo $DISPLAY
park:/oracle:park>$xclock

ps -ef | grep lsnr

lsnrctl status


2. 04/13
*export 백업
1. export 백업
1) 특정 user export 백업
C:\> exp system/oracle file=exp_xosl2_d_p.dmp log=exp_xosl2_d_p_exp.log owner=exp_xosl2_d_p

2) 전체 db export 백업
C:\> exp system/oracle file=exmp_xosl2_d_p.dmp log=exp_xosl2_d_p_exp.log feedback=10000 buffer=10240000

2. User 생성 후 테이블 스페이스 생성

3. imp system/oracle file=exp_xosl2_d_p.dmp log exp_xosl2_d_p_imp.log fromuser=exp_xosl2_d_p touser=exp_xosl2_d_p

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

smon 프로세스가 작동중인지 확인 명령어(윈도우에서는 services.msc와 동일함)
ps -ef | grep smon

echo $ORACLE_SID
export ORACLE_SID=goodus2
$su -oralce
export ORACLE_SID=goodus2

! ls -alter
alter system switch logfile;
select * from v$log;

set lines 180
select * from v$log;
alter system switch logfile;
! ls /oracle/oradata/arch

select file_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------------------------------/oracle/oradata3/TEST3/users01.dbf
/oracle/oradata3/TEST3/sysaux01.dbf
/oracle/oradata3/TEST3/undotbs01.dbf
/oracle/oradata3/TEST3/system01.dbf
/oracle/oradata3/TEST3/example01.dbf


/oralce/offbackup/


alter tablespace system begin backup;

! cp /oracle/oradata/system.dbf /oralce/onbakcup;

alter tablespace system end backup;


alter database begin backup;
! cp /oracle/oradata/*.dbf /oralce/onbakcup;
alter database end backup;

dbv file=/oracle/oradata3/TEST3/system01.dbf logfile=dbv.log

dbv를 확인하여 복구(?)하는 것은 BBED를 사용하여...

http://support.oralce.com

park:/oracle:park>$./runInstaller

park:/oracle:park>$source .bash_profile
(source .bash_profile 와 ./.bash_profile 은 같은 명령어)

ls -alrt

park:/oracle:park>$unzip linux_11gR2_database_1of2.zip
park:/oracle:park>$unzip linux_11gR2_database_2of2.zip

./runInstaller

오라클 메타링크에서 필요로 하는 OS 확인 문서
169706.1

#버젼 확인
select * from v$version;

#복구 필요 유무
select * from v$recover_file;

col comp_name fro a40
set lines 250
#컴포넌트 버전 상태 확인
select comp_name, version, status from dba_registry;

show parameter comp
alter system set compatible='11.2.0.1.0' scope=spfile;

http://www.cyworld.com/butterfly1472/4623347

sqlplus "/as sysdba"


3. 04/14

HOST=192.681.22.200

ORACLE_HOME=/home2/product/11.2.0/dbhome_1
SID=park

ADD_BASE_LISTENER= /home2

umount /dev/shm
mount -t tmpfs shmfs -o size=1g /dev/shm

-------------------------------------------------------------------------------------------
adrci>
adrci> show parameter
adrci> show home
adrci> set homepath diag/rdbms/park/park
adrci> show alert -tail -f

show incident

CREATE TABLESPACE "RMANCATALOG"
LOGGING
DATAFILE
'/home2/product/11.2.0/dbhome_1/rman/rmancatalog.dbf' SIZE 100M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

alter user rman default tablespace rmancatalog;


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

*bash_profile 설정

[oracle@park ~]$ ls -alrt
total 2208048
drwxr-xr-x 3 oracle dba 4096 Dec 24 16:09 .kde
-rw-r--r-- 1 oracle dba 120 Dec 24 16:09 .gtkrc
-rw-r--r-- 1 oracle dba 383 Dec 24 16:09 .emacs
-rw-r--r-- 1 oracle dba 124 Dec 24 16:09 .bashrc
-rw-r--r-- 1 oracle dba 304 Dec 24 16:09 .bash_logout
drwxr-x--- 2 oracle dba 4096 Dec 24 17:11 flash_recovery_area
drwxr-x--- 4 oracle dba 4096 Jan 3 15:17 admin
-rw-r--r-- 1 oracle dba 1099 Jan 11 09:56 .bash_profile.bak
drwxrwxr-x 3 oracle dba 4096 Jan 11 10:06 product
drwxr-x--- 6 oracle dba 4096 Jan 11 10:07 oraInventory.bak
drwxr-xr-x 3 oracle dba 4096 Jan 13 14:32 new
-rw-r--r-- 1 oracle dba 604584 Jan 19 16:41 patch.log
drwxr-xr-x 2 oracle dba 4096 Jan 20 18:47 dump
-rw-r--r-- 1 oracle dba 36 Jan 21 10:49 abc.log
drwxr-xr-x 3 oracle dba 4096 Jan 21 16:48 goodus
-rw-r--r-- 1 oracle dba 5379 Feb 10 09:44 upgrade_info.log
-rw-r--r-- 1 oracle dba 555 Feb 20 10:21 off!ls.lst
-rw-r--r-- 1 oracle dba 1148 Feb 20 10:27 parfile_index_table.lst
-rw-r--r-- 1 oracle dba 118349824 Feb 20 10:45 test.dmp
-rw-r--r-- 1 oracle dba 18 Feb 20 10:55 table.par
-rw-r--r-- 1 oracle dba 24576 Feb 20 12:44 off!.lst
-rw-r--r-- 1 oracle dba 0 Feb 20 17:54 park1.dmp
-rw-r--r-- 1 oracle dba 0 Feb 20 18:00 PARK.dmp
-rw-r--r-- 1 oracle dba 16384 Feb 20 18:20 ts_tts.dmp
-rw-r--r-- 1 oracle dba 585 Feb 20 18:20 tp_tts.log
drwxr-xr-x 2 oracle dba 4096 Feb 20 20:33 tts
drwxr-xr-x 2 oracle dba 4096 Feb 20 23:50 wonbum
drwxr-xr-x 2 oracle dba 4096 Feb 23 15:12 tts2
drwxr-xr-x 2 oracle dba 4096 Feb 23 15:13 cron
drwxr-xr-x 2 oracle dba 4096 Feb 23 22:20 dict
drwx------ 2 oracle dba 4096 Mar 2 18:14 .ssh
drwxr-xr-x 2 oracle dba 4096 Mar 2 18:20 test
drwxr-xr-x 2 oracle dba 4096 Mar 2 18:21 exp
drwxr-xr-x 3 oracle dba 4096 Mar 3 21:22 oradata
drwxr-xr-x 2 oracle dba 4096 Mar 4 18:02 target
-rw-r--r-- 1 oracle dba 125134 Mar 10 22:23 vsftpd-2.0.1-7.el4.i386.rpm
-rw-r--r-- 1 oracle dba 163571 Mar 10 22:23 vsftpd-2.0.1-5.src.rpm
-rw-r--r-- 1 oracle dba 2138931200 Apr 3 22:43 full.dmp
-rw-r--r-- 1 oracle dba 223754 Apr 3 22:43 full.log
-rw-r--r-- 1 oracle dba 185438 Apr 3 23:07 index.sql
-rw-r--r-- 1 oracle dba 48 Apr 7 09:39 afiedt.buf
drwxr-xr-x 3 oracle dba 4096 Apr 12 14:50 opatch
-rw-r--r-- 1 oracle dba 0 Apr 13 16:05 bash_profile
drwxrwx--- 7 oracle dba 4096 Apr 13 17:17 oraInventory
-rw-r--r-- 1 oracle dba 1197 Apr 13 17:41 .bash_profile
drwxr-xr-x 28 root root 4096 Apr 14 11:41 ..
drwxr-xr-x 2 oracle dba 4096 Apr 14 16:41 awr
-rw------- 1 oracle dba 13577 Apr 14 19:12 .bash_history
drwxr-xr-x 23 oracle dba 4096 Apr 14 19:23 .
[oracle@park ~]$ cat .bash_profile
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.

export PATH

if [ -s "$MAIL" ] # This is at Shell startup. In normal
then echo "$MAILMSG" # operation, the Shell checks
fi # periodically.

umask 022

export ORACLE_BASE=/home2
#export ORACLE_HOME=$ORACLE_BASE/product/10g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=park

export TNS_ADMIN=$ORACLE_HOME/network/admin
export UDUMP=$ORACLE_BASE/admin/oracle/udump
export BDUMP=$ORACLE_BASE/admin/oracle/bdump
export NLS_LANG=American_America.KO16KSC5601
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#export ORA_NLS10=$ORACLE_HOME/nls/data
export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes12.zip:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/usr/lib:/usr/local/lib
#PS1=`hostname`'[$PWD]$'
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/sbin:/usr/ccs/bin:.:/usr/X11R6/bin:$PATH:/oracle/opatch/OPatch
stty erase ^?
stty erase ^H
export EDITOR=vi
export PS1=`hostname`':$PWD:$ORACLE_SID>$'

export DISPLAY=61.250.99.196:0.0

alias oh='cd $ORACLE_HOME'
alias on='cd $ORACLE_HOME/network/admin'
alias ou='cd $UDUMP'
alias ob='cd $BDUMP'
[oracle@park ~]$ pwd
/oracle
[oracle@park ~]$ cd /etc
[oracle@park etc]$ dir
a2ps.cfg fb.modes krb5.conf openldap rpm
a2ps-site.cfg fdprm krb.conf opt samba
acpi filesystems krb.realms oraInst.loc sane.d
adjtime firmware ksysguarddrc oratab scrollkeeper.conf
alchemist fonts ldap.conf pam.d scsi_id.config
aliases foomatic ld.so.cache pam_smb.conf securetty
aliases.db fstab ld.so.conf pango security
alsa gconf ld.so.conf.d paper.config selinux
alternatives gnome ld.so.preload passwd sensors.conf
anacrontab gnome-vfs-2.0 lftp.conf passwd- services
asound.state gnome-vfs-mime-magic libsdp.conf pbm2ppa.conf sestatus.conf
at.deny gnopernicus-1.0 libuser.conf pcmcia setuptool.d
auditd.conf gpm-root.conf lilo.conf.anaconda Pegasus sgml
audit.rules gre.d lisarc pinforc shadow
auto.master group localtime pnm2ppa.conf shadow-
auto.misc group- log.d ppp shells
auto.net grub.conf login.defs prelink.cache skel
bashrc gshadow logrotate.conf prelink.conf smartd.conf
blkid.tab gshadow- logrotate.d printcap smrsh
blkid.tab.old gssapi_mech.conf lsb-release.d profile sound
bluetooth gtk ltrace.conf profile.d ssh
bonobo-activation gtk-2.0 lvm protocols stunnel
cdrecord.conf hal mail pwdb.conf sudoers
cipe host.conf mailcap quotagrpadmins sysconfig
cpuspeed.conf hosts mail.rc quotatab sysctl.conf
cron.d hosts.allow makedev.d racoon sysctl.confe
cron.daily hosts.deny man.config rc syslog.conf
cron.deny hotplug mgetty+sendfax rc0.d termcap
cron.hourly hotplug.d mime-magic rc1.d udev
cron.monthly idmapd.conf mime-magic.dat rc2.d updatedb.conf
crontab iiim mime.types rc3.d vfontcap
cron.weekly im_palette.pal minicom.users rc4.d vimrc
csh.cshrc im_palette-small.pal modprobe.conf rc5.d vsftpd
csh.login im_palette-tiny.pal modprobe.conf~ rc6.d vsftpd.ftpusers
cups imrc modprobe.conf.dist rc.d vsftpd.user_list
dat.conf init.d motd rc.local warnquota.conf
dbus-1 initlog.conf mtab rc.sysinit wgetrc
default inittab mtools.conf readahead.early.files wvdial.conf
dev.d inputrc my.cnf readahead.files X11
DIR_COLORS iproute2 netplug redhat-lsb xdg
DIR_COLORS.xterm isdn netplug.d redhat-release xinetd.conf
diskdump issue nscd.conf request-key.conf xinetd.d
dumpdates issue.net nsswitch.conf resolv.conf xml
enscript.cfg java ntp resolv.conf.predhclient yp.conf
environment jwhois.conf ntp.conf rhgb yum
esd.conf kde odbc.ini rmt yum.conf
exports kderc odbcinst.ini rpc yum.repos.d
[oracle@park etc]$ cd group
bash: cd: group: Not a directory

 

 

 

반응형
반응형

*오라클 환경변수($ORACLE_HOME, $ORACLE_SID)

1) $ORACLE_HOME (or $HOME) : 오라클 관련 S/W가 설치되어 있는 기본 경로
2) SID(System Identifier) : 오라클 데이타베이스명

3) 분석하기

(1) 시작 --> 실행 --> cmd
C:\WINNT 또는 C:\WINDOWS 경로로 이동, REGEDIT.EXE 실행
(2) 화면 왼쪽에서 HKEY_LOCAL_MACHINE 폴더를 클릭
(3) SOFTWARE 폴더를 클릭
(4) ORACLE 폴더를 클릭
(5) ORACLE 폴더 밑에 HOME0 폴더(또는 KEY_EX 폴더)를 클릭
(6) 오른쪽 내용 중에 ORACLE_HOME과 ORACLE_SID의 내용을 참조


*Oracle 9i 버전의 경우
- ORACLE_HOME : C:\ORACLE\ORA92 --> 기본 설치 경로
- ORACLE_SID : ORA92 or 설치한 DB명

*Oracle 10g 버전의 경우
- ORACLE_HOME : C:\oracle\product\10.2.0\db_1 --> 기본 설치 경로
- ORACLE_SID : ORCL or 설치한 DB명

*Oracle 11g 버전의 경우
- ORACLE_HOME : C:\app\orcl\product\11.1.0\db_1 --> 기본 설치 경로
- ORACLE_SID : ORCL or 설치한 DB명

반응형
반응형

*Merge는 Oracle 9i부터 추가됐다.
9i와 10g에서 Merge의 사용법이 약간 상이한 것 같다.

 

CREATE TABLE em01 AS SELECT *
FROM emp

;

 

CREATE TABLE em02
    AS SELECT *
  FROM emp

;

 

UPDATE em02
    SET job='TEST'
FROM emp
WHERE job='MANAGER'

;


1. 9i에서 Merge
MERGE INTO em01 n1 USING (select ename, job, mgr, hiredate, sal, comm, deptno, empno from em02) e1

 ON ( n1.empno = e1.empno )
WHEN MATCHED THEN UPDATE
     SET n1.ename = e1.ename,
            n1.job = e1.job, 
            n1.mgr = e1.mgr,
            n1.hiredate = e1.hiredate,
            n1.sal = e1.sal,
            n1.comm = e1.comm,
            n1.deptno = e1.deptno
WHEN NOT MATCHED THEN
    INSERT ( empno, ename, job, mgr, hiredate, sal, comm, deptno )
        values ( e1.empno,
                    e1.ename,
                    e1.job, 
                    e1.mgr,
                    e1.hiredate,
                    e1.sal,
                    e1.comm,
                     e1.deptno )

;


2. 10g에서 Merge
MERGE INTO em01 n1 USING em02 e1
    ON ( n1.empno = e1.empno )
WHEN MATCHED THEN UPDATE
    SET n1.empno = e1.empno,
        n1.ename = e1.ename,
        n1.job = e1.job, 
        n1.mgr = e1.mgr,
        n1.hiredate = e1.hiredate,
        n1.sal = e1.sal,
        n1.comm = e1.comm,
        n1.deptno = e1.deptno
WHEN NOT MATCHED THEN
    INSERT ( empno, ename, job, mgr, hiredate, sal, comm, deptno )
        values ( e1.empno,
                e1.ename,
                e1.job, 
                e1.mgr,
                e1.hiredate,
                e1.sal,
                e1.comm,
                e1.deptno )

;


Merge when no data found

https://community.oracle.com/tech/developers/discussion/2595696/merge-when-no-data-found


insert
  into emp
       (
           empno
         , ename
         , job
         , mgr
         , hiredate
         , sal
         , comm
         , deptno
       )
select 1, 's', 's', 23, sysdate, 12, '', 34
  from dual
where not exists
       (
          select null
            from emp
           where empno = 1
        )

반응형
반응형

1. Tablespace 설계 시 주의사항
1) DATA 테이블스페이스와 SYSTEM 테이블스페이스는 분리하십시오.

2) DATA 테이블스페이스와 INDEX 테이블스페이스는 분리하십시오.
3) 각 DATA 테이블스페이스는 I/O 경합을 줄이기 위해 분리하십시오.
4) DATA 테이블스페이스와 UNDO 테이블스페이스는 분리하십시오.
5) DATA 테이블스페이스와 TEMP 테이블스페이스는 분리하십시오.
6) 대용량의 Sorting 작업을 위해 TEMP 테이블스페이스를 각 사용자에게 분리하여 할당하십시오.

1) 테이블스페이스의 단편화 현상을 분석하는 방법
SQL> SELECT TABLESPACE_NAME, TOTAL_EXTENTS, PERCENT_EXTENTS_COALESCED
FROM DBA_FREE_SPACE_COALESCED
WHERE PERCENT_EXTENTS_COALESCED <> 100;

2) 다음 명령어는 TEST 테이블스페이스의 연속적인 빈 공간들을 하나의 공간으로 합병시키는 명령어임
SQL> ALTER TABLESPACE TEST COALESCE;
SQL> SELECT TABLESPACE_NAME, TOTAL_EXTENTS, PERCENT_EXTENTS_COALESCED
FROM DBA_FREE_SPACE_COALESCED
WHERE PERCENT_EXTENTS_COALESCED <> 100;

---> 만약 PERCENT_EX가 100%이 아니라면, 100%가 될 때까지 연속적으로 문장을 실행하십시오.

반응형
반응형


*Export와 Import의 활용

1. Exmport/Import 예제

1)유저이전
운영 계의 scott유저를 개발기 DB로 동일하게 생성한다.

하나, Source db에서 export
exp system/oracle file=scott.dmp log=scott.log owner=scott
둘, Target db로 덤프파일 전송
셋, 테이블 스페이스 생성 후 User 생성
넷, Target db에서 import
imp system/oracle file=scott.dmp log=scott.log fromuser=scott touser=scott
---> 사전에 scott user와 해당 tablespace를 생성해 두어야 한다.

2)특정 table 이전
운영기 scott 유저의 emp 테이블을 개발기 tester 유저로 이전한다.

하나, Source db에서 특정 table export
exp scott/tiger file=emp.dmp log=emp.log tables=emp
둘, Target db로 덤프파일 전송
셋, 테이블 스페이스 생성 후 User 생성
넷, Target db에서 import
imp system/oracle file=emp.dmp log=emp.log fromuser=scott touser=scott

3)전체 db export 백업
exp system/oracle file=full.dmp log=full.log feedback=10000 buffer=102400000


2. 9i와 10g import의 차이점

1) 9i import 하기

C:\>imp userid='system/manager' buffer=102400000 file=dp_production.DMP log=dp_production.log fromuser=scott touser=scott

C:\>imp userid='system/manager' buffer=102400000 file=cp_production.DMP log=cp_production.log fromuser=scott touser=scott

C:\>imp userid='system/manager' buffer=102400000 file=tp_production.DMP log=tp_production.log fromuser=scott touser=scott

2) 10g import 하기

C:\>imp system/manager buffer=102400000 file=dp_production.DMP log=dp_production.log fromuser=scott touser=scott

C:\>imp system/manager buffer=102400000 file=cp_production.DMP log=cp_production.log fromuser=scott touser=scott

C:\>imp system/manager buffer=102400000 file=tp_production.DMP log=tp_production.log fromuser=scott touser=scott

3) ignore, commit 옵션 추가 - 데이타의 무결성 검사 혹은 정합성 검사를 하지 않고 import하기 위함. 속도가 약간 빠름.

C:\> imp userid='sys/oracle' buffer=10240000 file=dp_scott.DMP log=dp_scott.log fromuser=scott touser=scott ignore=y commit=n

C:\> imp userid='sys/oracle' buffer=10240000 file=cp_scott.DMP log=cp_scott.log fromuser=scott touser=scott ignore=y commit=n

C:\> imp userid='sys/oracle' buffer=10240000 file=tp_scott.DMP log=tp_scott.log fromuser=scott touser=scott ignore=y commit=n

4) DDL만 export (rows=no 포함 시에 DDL만 export함)
a. 전체 export
C:\> exp system/manager file=full_dp.dmp log=full_dp.log feedback=10000 buffer=102400000 rows=no

b. scott_d_p만 export
C:\> exp scott_d_p/scott_d_p file=dp_ddl.dmp log=dp_ddl.log owner=scott_d_p feedback=10000 buffer=102400000 rows=no

5) 기타
imp scott/tiger@TEST file=ta_zipcode_new.dmp log=ta_zipcode_new.log fromuser=scott touser=scott tables=TA_ZIPCODE_NEW ignore=y commit=n feedback=1000

imp scott/tiger@TEST file=ta_matching_address.dmp log=ta_matching_address.log fromuser=scott touser=scott tables=TA_MATCHING_ADDRESS ignore=y commit=n feedback=1000

exp zip/zip@TEST file=com_zipcode_map.dmp log=com_zipcode_map.log tables=com_zipcode_map

imp zip/zip@TEST file=com_zipcode_map.dmp log=com_zipcode_map.log fromuser=zip touser=zip tables=com_zipcode_map ignore=y commit=n feedback=1000

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

6) 펌프

*예상
expdp scott/tiger schemas=scott directory=TEST_DIR ESTIMATE_ONLY=Y parallel=4

*익스포트
expdp scott/tiger schemas=scott directory=TEST_DIR dumpfile=scott.dmp logfile=expdpscott.log

*임포트
impdp scott/tiger schemas=scott directory=TEST_DIR dumpfile=scott.dmp logfile=impdpscott.log

관련 - https://oracle-base.com/articles/10g/oracle-data-pump-10g
--------------------------------------------------------------------------------------------------

AV 서버 cmd창에서 import 하기 전에 아래와 같이 설정.

SET NLS_LANG=KOREAN_KOREA.KO16MSWIN949

import할 때 한글 import시에 Error 발생

 

오라클 10g 에러 2가지 ORA-12899 와 ORA-06553
 [출처] 오라클 10g 에러 2가지 ORA-12899 와 ORA-06553|작성자 산적

http://blog.naver.com/hucho71?Redirect=Log&logNo=130024545938

반응형
반응형


1. 저장 프로시저
 1) 저장 프로시저와 함수
 user_errors- 오류에 대한 정보를 저장하는 데이터 딕셔너리
 SQL> DESC user_errors;

 SHOW ERROR- 발생한 오류에 대한 정보를 알고 싶을 때
 SQL> SHOW ERROR

 2) 저장 프로시저 조회하기
 user_source- 저장 프로시저를 작성한 후 사용자가 저장 프로시저가 생성되었는지 확인하는 것에 사용하는 뷰
 SQL> DESC user_source
 SQL> SELECT name, text FROM user_source;


 2.패키지와 트리거
 - 오라클에서 PL/SQL의 저장 프로시저와 함수를 그룹화하기 위한 패키지가 제공된다. 또한 오라클에서는 어떤 이벤트가 발생하면 자동적으로 방아쇠가 당겨져 총알이 발사되듯이 특정 테이블이 변경되면 이를 이벤트로 다른 테이블이 변경되도록 하기 위해서 사용하는 트리거가 제공된다. 트리거는 데이터베이스에서 데이터에 대한 유효성 조건과 무결성 조건을 기술하는데 유용하다.

 - BEFORE와 AFTER 트리거
 트랜잭션의 일부로 처리되며 BEFORE 트리거와 AFTER 트리거 두 가지 종류가 있다. BEFORE는 실제 삽입이
일어나기 전에 트리거가 동작하는 것으로서 기본 키 제약 조건에 위반된 데이터를 추가할 경우 이를 방지하기 위한
트리거를 생성할 때 사용한다. 반면 AFTER 트리거는 실제 삽입이 일어난 후에 트리거가 작동하도록 하기 위해 사용한다.


반응형
반응형

1. 제약조건
1) 제약 조건 활성화
 (1) ENABLE NOVALIDATE
  - 테이블에 Lock이 설정되지 않음
  - Primary 및 Unique Key는 Non-unique 인덱스를 사용해야 함
  - ALTER TABLE hr.departments ENABLE NOVALIDATE CONSTRAINT dept_pk;

 (2) ENABLE VALIDATE
  - 테이블에 Lock 설정
  - Unique 또는 Non-unique 인덱스를 사용할 수 있음
  - 적합한 테이블 Data가 필요함
  - ALTER TABLE hr.department ENABLE VALIDATE CONSTRAINT dept_pk;

2)  제약 조건 이름 바꾸기
 - ALTER TABLE employees RENAME CONSTRAINT emp_dept_fk TO employee_dept_fk;

3)  제약 조건 정보 얻기
 - DBA_CONSTRAINTS
 - DBA_CONS_COLUMNS
 - select constraint_name, constraint_type, deferrable, deferred, validated from dba_constraints where   owner='exp_xosl2_d_p'
 AND table_name='p_pi_cpp';

2. 제약 조건 정의 지침
1) Primary 및 Unique 제약 조건
 (1) 별도의 Tablespace에 인덱스 배치
  - Primary Key 및 Unique 제약 조건 시행에 사용하는 인덱스는 테이블과 다른 Tablespae에 두는데, 이렇게 하려면 USING INDEX 절을 지정하거나 테이블 및 인덱스를 생성하고 테이블을 변경하여 제약 조건을 추가 또는 활성화한다.

 (2) 대량 로드가 자주 발생하는 경우 Non-unique 인덱스 사용
  - 대량의 Data를 테이블 하나에 자주 로드하는 경우에는 제약 조건을 비활성화하고 로드를 수행한 다음 제약 조건을 다시 활성화하는 것이 바람직하며 Primary Key 또는 Unique 제약 조건 시행에 Unique 인덱스를 사용하는 경우에는 제약 조건을 비활성화할 때 인덱스를 삭제해야 한다.이러한 상황에서 Non-unique 인덱스를 사용하면 성능을 향상시킬수 있는데, 이렇게 하려면 키를 deferrable로 생성하거나 키를 정의 또는 활성화하기 전에 인덱스를 생성한다.


2) 자체 참조(Self-referencing) Foreign Key
 (1)테이블에 자체 참조 Foreign Key가 포함되어 있는 경우에는 다음 방식 중 하나를 사용하여 Data를 로드한다.
  - 초기 로드 후 Foreign Key를 정의 또는 활성화한다.
  - 제약 조건을 deferrable 제약 조건으로 정의한다.

반응형
반응형


1. 여러 테이블스페이스를 사용한다.
- 여러 개의 테이블스페이스로 나누어 사용하면 데이터베이스 작업을 수행하는데 조금 더 융통성이 생긴다.
1)SYSTEM과 비SYSTEM 테이블스페이스를 분리(데이터 딕셔너리 데이터와 사용자 데이터를 분리시킨다.)
2)응용프로그램 데이터를 분리시킨다.
3)다른 테이블스페이스의 데이터 파일을 각각 별개의 디스크 드라이브에 저장하여 I/O 경합을 감소기킨다.
4)데이터 세그먼트와 언두 세그먼트를 분리하여 데이터를 영구적으로 잃게 되는 단일 디스크 실패를 방지시킨다.
5)테이블스페이스 일부를 온라인 상태로 둔 동안 다른 테이블 스페이스는 오프라인 상태로 둔다.
6)빈번한 변경작업이나 읽기 전용 작업, 또는 임시 세그먼트 저장 같은 특별한 유형의 데이터베이스 사용을 위한 테이블스페이스를 따로 만든다.
7)테이블스페이스를 각각 백업한다.


2. 테이블스페이스에 대한 스토리지 파라미터(storage parameter)를 지정한다.
- 테이블스페이스에 생성될 전형적인 오브젝트의 크기와 특성을 고려하여 디폴트 스토리지 파라미터를 설정한다.


3. 사용자에게 테이블스페이스 할당량을 지정한다.
- 사용자에게 테이블스페이스 할당량을 지정하면 특정 사용자가 전체 테이블스페이스를 독점 사용하는 것을 막을 수 있다.

반응형