하고재비

[ORACLE] 물리적 디렉토리 본문

Server

[ORACLE] 물리적 디렉토리

DeadDE 2019. 2. 14. 18:08


디렉토리 오브젝트 관련 기본 명령어


-- 디렉토리 오브젝트 생성

SQL> CREATE DIRECTORY 디렉토리_오브젝트이름 AS '/OS디렉토리_이름';


-- 디렉토리 오브젝트 조회(사용자)

SQL> SELECT * FROM ALL_DIRECTORIES;


-- 디렉토리 오브젝트 조회(DBA)

SQL> SELECT * FROM DBA_DIRECTORIES;


-- 디렉토리 오브젝트 삭제

SQL> DROP DIRECTORY 디렉토리 이름;




이제 명령어랑 실제 사용 방법에 대해서 좀 더 자세히 알아보자. 



1. 물리 디렉토리 생성


- 사용자 계정 oracle의 홈 디렉토리 아래 ora_utl이라는 디렉토리를 만든다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
[root@OEL73:~]$ su - oracle
마지막 로그인: 일  9월  3 17:59:44 KST 2017 일시 pts/3
 
[oracle@OEL73:~]$ pwd
/home/oracle
 
[oracle@OEL73:~]$ mkdir ora_utl
 
[oracle@OEL73:~]$ chmod 764 ora_utl
 
[oracle@OEL73:~]$ ls -alrt ora_utl
합계 8
drwxrw-r--.  2 oracle oinstall 4096  9월  5 22:28 .
drwx------15 oracle oinstall 4096  9월  5 22:28 ..
cs


-- oracle계정이 아닌 root계정으로 디렉토리 생성시 oracle이 접속할 수 있어야 하고 필요에 따라 write권한도 부여해야 한다. 여기서는 764(rwx rw- r--)로 설정했다.



2. 디렉토리 오브젝트 생성


디렉토리 오브젝트는 sys/system 계정이 만들어서 사용자에게 read/write 권한을 주거나 

사용자 계정이 직접 디렉토리 오브젝트를 만들 수 있도록 권한을 준다. 


-- sys계정으로 생성후 scott계정에게 권한 부여


1
2
3
4
5
6
7
SYS @ SQL > CREATE DIRECTORY TEST_DIR AS '/home/oracle/ora_utl';
 
디렉토리가 생성되었습니다.
 
SYS @ SQL > GRANT READWRITE ON DIRECTORY TEST_DIR TO scott;
 
권한이 부여되었습니다.
cs



-- 또는 scott 계정에게 CREATE ANY DIRECTORY  권한 부여


1
2
3
4
5
6
7
8
SYS @ SQL > GRANT CREATE ANY DIRECTORY TO scott;
 
권한이 부여되었습니다.
 
SYS @ SQL > conn scott/tiger
연결되었습니다.
 
SCOTT @ SQL > CREATE DIRECTORY TEST_DIR AS '/home/oracle/ora_utl';
cs




3. 파일쓰기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SCOTT @ SQL> declare
      fhandle utl_file.file_type;
        begin
          fhandle := utl_file.fopen('TEST_DIR''example.txt''w'); -- 반드시 디렉토리명 대문자
          utl_file.put_line(fhandle , '파일쓰기 테스트');
          utl_file.put_line(fhandle , 'write!! write!!');
          utl_file.fclose(fhandle);
      end;
    /
 
PL/SQL 처리가 정상적으로 완료되었습니다.
 
SCOTT @ SQL > ! ls -alrt /home/oracle/ora_utl
합계 12
drwx------. 15 oracle oinstall 4096  9월  5 22:28 ..
drwxrw-r--.  2 oracle oinstall 4096  9월  6 23:13 .
-rw-r--r--.  1 oracle oinstall   39  9월  6 23:13 example.txt
 
SCOTT @ SQL > ! cat /home/oracle/ora_utl/example.txt
파일쓰기 테스트
write!! write!!
cs



4. 파일읽기


-- 위에서 저장한 파일을 읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SCOTT @ SQL > set serveroutput on  -- 화면으로 출력
 
SCOTT @ SQL > declare
      fhandle utl_file.file_type;
      fp_buffer varchar2(4000);
  
      begin
        fhandle := utl_file.fopen('TEST_DIR''example.txt''R'); -- 반드시 디렉토리명 대문자
        utl_file.get_line (fhandle , fp_buffer );
        dbms_output.put_line(fp_buffer );
        utl_file.get_line (fhandle , fp_buffer );
        dbms_output.put_line(fp_buffer );
        utl_file.fclose(fhandle);
      end;    
  /
파일쓰기 테스트
write!! write!!
 
PL/SQL 처리가 정상적으로 완료되었습니다.
cs



* 오라클에 데이터 입력하기 

- 오라클] ORACLE SQL*LOADER



출처: https://ttend.tistory.com/739 [toward the end · · ·]

Comments