April 24, 2005
作者:eygle
如何使用Oracle的BFILE
1.创建相应的directory
使用具有足够权限的用处创建directory,具体参考:
Using Create directory & UTL_FILE in Oracle
create or replace directory BDUMP_DIR as
'/opt/oracle/admin/conner/bdump';
|
2.给相应的用户授权
grant read on directory BDUMP_DIR to eygle;
|
3.检查相应的文件是否存在
host ls -l /opt/oracle/admin/conner/bdump/alert_conner.log
|
4.数据操作
connect eygle/eygle
create table eygle_test (id number, bfiles bfile );
insert into eygle_test values ( 1, bfilename ( 'BDUMP_DIR', 'alert_conner.log' ) );
|
BFILENAME函数用法参考:
The Usage Of BFILENAME Function
操作日志:
SQL> connect / as sysdba
Connected.
SQL> grant read on directory BDUMP_DIR to eygle;
Grant succeeded.
SQL> connect eygle/eygle
Connected.
SQL> host ls -l /opt/oracle/admin/conner/bdump/alert_conner.log
-rw-r--r-- 1 oracle dba 1026 Apr 24 18:41 /opt/oracle/admin/conner/bdump/alert_conner.log
SQL> create table eygle_test (id number, bfiles bfile );
Table created.
SQL> insert into eygle_test values ( 1, bfilename ( 'BDUMP_DIR', 'alert_conner.log' ) );
1 row created.
SQL> commit;
Commit complete.
|
Posted by eygle at 7:51 PM
| Comments (1)
作者:eygle
BFILENAME函数的语法如下:
BFILENAME('directory','filename')
|
该函数用以返回一个BFILE文件位置指针,指针和文件系统上的LOB binary文件相关联。
'directory' 是路径名,通过
create directory方式创建。
'filename' 是文件系统上的文件名称
在你在SQL,PL/SQL或者DBMS_LOG包,或者OCI中使用BFILENAME函数之前,你必须
创建相应的directory并且关联相应的物理文件.
以下是一个示例:
CREATE DIRECTORY media_dir AS '/demo/schema/product_media';
INSERT INTO print_media (product_id, ad_id, ad_graphic)
VALUES (3000, 31001,
bfilename('MEDIA_DIR', 'modem_comp_ad.gif'));
|
参考:Oracle9i SQL Reference Release (9.2) Part Number A96540-02
Posted by eygle at 7:36 PM
| Comments (0)
作者:eygle
Solaris操作系统具有打开文件数量的限制,数据库的db_files参数设置会受操作系统的参数限制。
Solaris使用两个参数来控制,可以通过在/etc/system文件中修改参数更改设置:
* set hard limit on file descriptors
set rlim_fd_max = 4096 (or whatever)
* set soft limit on file descriptors
set rlim_fd_cur = 1024 (or whatever)
|
但是这些设置在32/64位平台下具有先天限制:
A 32-bit program using standard I/O is limited to 256 file descriptors。
A 64-bit program using standard I/O can use up to 2 billion descriptors。
|
具体可以参考:
Tunable Parameter Change History >> Kernel Parameters
也可以使用sysdef命令查看:
sysdef | grep descriptors
|
输出结果是16进制显示,第一个是soft limit, 第二个是hard limit:
# sysdef | grep descriptors
0x0000000000000100:0x0000000000001000 file descriptors
|
Posted by eygle at 10:08 AM
| Comments (0)