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
fhandle utl_file file_type;
begin
fhandle := utl_file fopen( UTL_FILE_DIR example txt w );
utl_file put_line(fhandle eygle test write one );
utl_file put_line(fhandle eygle test write o );
utl_file fclose(fhandle);
end;
/
PL/SQL procedure successfully pleted
SQL> !
[oracle@jumper ]$ more /opt/oracle/utl_file/example txt eygle test write oneeygle test write o[oracle@jumper ]$
类似的我们可以通过utl_file来读取文件:
SQL> declare
fhandle utl_file file_type;
fp_buffer varchar ( );
begin
fhandle := utl_file fopen ( UTL_FILE_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;
/
eygle test write one
eygle test write o
PL/SQL procedure successfully pleted
可以查询dba_directories查看所有directory
SQL> select from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
SYS UTL_FILE_DIR /opt/oracle/utl_fileSYS
BDUMP_DIR /opt/oracle/admin/conner/bdumpSYS 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_fileSYS
BDUMP_DIR /opt/oracle/admin/conner/bdump
create or replace directory USER_DIR as E:\PLSQL\ \ ;
DECLARE
v_content VARCHAR ( );
v_bfile BFILE;
amount INT;
offset INT := ;
BEGIN
v_bfile := bfilename( USER_DIR test TXT ); 注意这里的 User_dir 对应上面已经创建好啦的目录
amount :=DBMS_LOB getlength(v_bfile);
DBMS_LOB OPEN(v_bfile);
DBMS_LOB READ(v_bfile amount offset v_content);
DBMS_LOB close(v_bfile);
DBMS_OUTPUT PUT_LINE(v_content);
lishixinzhi/Article/program/Oracle/201311/17151
权限允许用户访问属于其它用户的对象或执行程序,
ORACLE系统提供权限:Object 对象级、System 系统级
1系统权限(系统权限是对用户而言):
DBA拥有最高的系统权限:
1,可以创建用户
语法:create user username identified by password;
例如:create user briup identified by briup;
当用户创建成功之后,此用户什么权限都没有,甚至不能登录数据库。
2 赋予权限:
一个用户应该具有的基本权限包含:
CREATE SESSION
CREATE TABLE
CREATE SEQUENCE
CREATE VIEW
CREATE PROCEDURE
如果有多个用户他们都具有相同的权限(create session,create table,create sequence),赋予权限的动作过于麻烦,要给每个用户分别制定这些权限,因此oracle提出角色的概念,可以将权限赋值给角色,然后再将角色赋值给用户。
例如,我们当初在进行 *** 作时写的:
grant resource,connect to briup;
此时resource,connect就是角色。
查询resource,connect 具有哪些权限可以使用:
select privilege,role
from role_sys_privs
where role = 'CONNECT' or role ='RESOURCE';
语法:
grant xxxx to user_name ;
例如:
grant create view to briup;
3回收权限
语法:revoke xxx from user_name;
例如:
revoke create view from briup;
4修改密码:
语法:alter user xxx identified by xxxx;
例如:
alert user briup identified by briup;
5删除用户:
语法:drop user username [cascade];
note: cascade:当用户下有表的时候,必须使用cascade级联删除。
例如: drop user test cascade;
2对象权限(针对对象,类似表对象等):
对象权限:select, update, insert, alter, index, delete, all //all包括所有权限
对象的 拥有者拥有所有的权限。
1给用户赋予 *** 作对象的权限:
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION]; //允许分配到权限的用户继续将权限分配给其它用户
例如:
grant select on s_emp to jd1613;
给jd1613用户赋予在s_emp表上进行查询的权利。
grant update(id) on s_emp to jd1613;
给jd1613赋予能够更新s_emp表上id列的权限。
2回收权限:同系统权限。
语法:revoke xxx on obj from user;
note: 通过with grant option赋予额权限也会被回收。
例如:
revoke select , update on s_emp from jd1613;
3创建同义词: 相当于给对象起别名
语法:create[public] synonym sy_name for obje_name;
note:只有dba才有权利创建public的同义词
例如:
create synonym emp for s_emp;
4删除同义词:
语法: drop synonym syn_name;
例如:
drop synonym emp;
5导出数据库
exp,imp不属于sqlplus的命令,所以不是在sqlplus终端执行的。
系统终端:exp userid=briup/briup full=y file=briupdmp
导入:imp userid=briup/briup full=y file=briupdmp;
以上就是关于Oracle读写文件bfilename全部的内容,包括:Oracle读写文件bfilename、如何控制oracle用户的权限、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)