Using Create directory & UTL_FILE in Oracle

作者:eygle  【版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
链接:http://www.eygle.com/archives/2005/04/using_create_di.html

Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';

本案例具体创建如下:

            create or replace directory exp_dir as '/tmp';
            

目录创建以后,就可以把读写权限授予特定用户,具体语法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;

例如:

            grant read, write on directory exp_dir to eygle;
            

此时用户eygle就拥有了对该目录的读写权限。

让我们看一个简单的测试:

            SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file';
            Directory created.
            SQL> declare
            2    fhandle utl_file.file_type;
            3  begin
            4    fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w');
            5    utl_file.put_line(fhandle , 'eygle test write one');
            6    utl_file.put_line(fhandle , 'eygle test write two');
            7    utl_file.fclose(fhandle);
            8  end;
            9  /
            PL/SQL procedure successfully completed.
            SQL> !
            [oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt
            eygle test write one
            eygle test write two
            [oracle@jumper 9.2.0]$
            

类似的我们可以通过utl_file来读取文件:

            SQL> declare
            2    fhandle   utl_file.file_type;
            3    fp_buffer varchar2(4000);
            4  begin
            5    fhandle := utl_file.fopen ('UTL_FILE_DIR','example.txt', 'R');
            6
            7    utl_file.get_line (fhandle , fp_buffer );
            8    dbms_output.put_line(fp_buffer );
            9    utl_file.get_line (fhandle , fp_buffer );
            10    dbms_output.put_line(fp_buffer );
            11    utl_file.fclose(fhandle);
            12  end;
            13  /
            eygle test write one
            eygle test write two
            PL/SQL procedure successfully completed.
            

可以查询dba_directories查看所有directory.

            SQL> select * from dba_directories;
            OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
            ------------------------------ ------------------------------ ------------------------------
            SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
            SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump
            SYS                            EXP_DIR                        /opt/oracle/utl_file
            

可以使用drop directory删除这些路径.

            SQL> drop directory exp_dir;
            Directory dropped
            SQL> select * from dba_directories;
            OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
            ------------------------------ ------------------------------ ------------------------------
            SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
            SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump
            
时间: 2024-09-18 04:17:28

Using Create directory & UTL_FILE in Oracle的相关文章

linux提示mkdir: cannot create directory `test': Read-only file system

问题现象:接监控组人员反馈,在某主机opt上当创建目录时,提示为只读Read-only file system,不允许写入或删除,根据以往经验这种问题有三种可能: 1.挂载时未给予w权限: 2.分区出现问题,需要fsck进行修复处理: 3.硬盘故障,需通过服务器原厂工具核实是否硬盘是否出现问题,更换硬盘以免丢失数据 . 注:有些人可能还会想到使用chattr 设置权限造成不能写和通过磁盘配额进行配置,不过这两种设置报错内容和这个报错不同. 解决思路: 1.通过mount查看当前参数: # mou

使用UTL_FILE转储数据为逗号分隔符文件

作者:eygle[版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明] 链接:http://www.eygle.com/archives/2005/05/eoautl_fileeioe.html Tom写过这样一个函数用于把数据转储为逗号分隔符文件,看到很多人问类似的问题,转载这里供参考. 注意,UTL_FILE使用的Directory,需要你预先创建,具体可以参考Using Create directory & UTL_FILE in Oracle create or rep

Oracle Directory目录的知识

在上一章介绍expdp/impdp时曾使用过DIRECTORY这个概念,下面再简单说明下DIRECTORY的点点滴滴. MOS上对DIRECTORY的解释(266875.1): (1).基于服务端 vs 基于客户端 DIRECTORY变量指出了expdp导出数据泵或impdp导入数据泵将dump文件.log文件以及SQL文件(仅适用于impdp)写到什么路径. 因为导出数据泵和导入数据泵都是基于服务端的,不是基于客户端的,因此输出文件的路径都是相对于服务端目录的路径.数据泵要求将目录路径作为一个

Oracle外部表的实现方式及实现方法

基于oracle_datapump的外部表实现过程: 一.创建外部表以及产生dmp文件 1.创建directory,需要有 create any directory权限: CREATE DIRECTORY admin AS '/oracle/admin'; 2.创建外部表: SQL> CREATE TABLE emp_xt  ORGANIZATION EXTERNAL  (   TYPE ORACLE_DATAPUMP   DEFAULT DIRECTORY admin   LOCATION (

Oracle 外部表实现方式整理

基于oracle_datapump的外部表实现过程: 一.创建外部表以及产生dmp文件 1.创建directory,需要有 create any directory权限: CREATE DIRECTORY admin AS '/oracle/admin'; 2.创建外部表: SQL> CREATE  TABLE emp_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY admin LOCATION ('emp_xt

Oracle数据库逻辑备份的SH文件的教程

正在看的ORACLE教程是:Oracle数据库逻辑备份的SH文件. 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle

oracle备份恢复的具体方法_oracle

1.1      数据库数据全库备份注:此操作需要启动数据库. 切换至oracle用户,在OS侧创建备份使用目录: mkdir /oracle/backup 登录oracle数据库,在数据库中创建备份使用目录 sqlplus / as sysdba create directory backupdir as '/oracle/backup'; 退出sqlplus后,用oracle用户执行全库备份,备份文件生成在/oracle/backup下: expdp system/System123 DIR

ORACLE 报警日志如何查看?第1/2页_oracle

1.了解oracle外部表 外部表定义:结构被存放在数据字典,而表数据被放在OS文件中的表 作用:在数据库中查询OS文件的数据,还可以将OS文件数据装载到数据库中 与其它表的区别:在外部表上不能执行DML操作,也不能在外部表上建索引,只能执行select操用 2.建一个简单的外部表1.建一个OS上的文件 因为外部表主要是查看OS上的文件,首先在OS上建一个文件mkdir -p /oracle/ext vi /oracle/ext/ext.dat 10,20,30 40,50,60 70,80,9

教你怎样用Oracle方便地查看报警日志错误_oracle

在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID/bdump/   目录下, 按日期备份alert_ORACLE_你的实例名.LOG这个文件,如:alert_ORACLE_orcl_201408111639_bak.LOG. 2:清除日志内容 打开报警日志文件,用true > 文件名 可清除掉里面的内容 具体示例: 假如,我现在第一次进行该设置,