하고재비
[ORACLE] 물리적 디렉토리 본문
디렉토리 오브젝트 관련 기본 명령어
-- 디렉토리 오브젝트 생성
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 READ, WRITE 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 |
* 오라클에 데이터 입력하기
출처: https://ttend.tistory.com/739 [toward the end · · ·]
'Server' 카테고리의 다른 글
[Oracle] ORA-28000: the account is locked (0) | 2019.02.14 |
---|---|
[Oracle] PCTFREE,PCTUSED,INITRANS,MAXTRANS,FREELIST,NOCACHE (0) | 2019.02.08 |
[Server] 톰캣 사진 경로 (0) | 2018.02.15 |
데이터베이스 와 SQL (0) | 2017.09.19 |
Oracle 11g / sqldeveloper 설치 (0) | 2017.09.18 |
Comments