Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

I'm having difficulty creating tablespaces with Oracle 11gR2 on a fiber attached disk array. Permissions are correct and there is ample space available. I can create tablespaces on other mounts that were formatted nearly the same (difference in stride size that reflect different stripe sizes), the only major difference I can determine is that one filesystem is local disk and the other is external. I can create files by hand as the oracle user without any difficulty whatsoever. There is nothing of interest getting dumped to /var/log/messages. Googling the error hasn't produced much useful information either. I am somewhat new to Oracle. Any help would be greatly appreciated. Thanks

Here is output creating a tablespace on the local disk:

SQL> CREATE TABLESPACE ts_internal_test DATAFILE '/dbidx/idx0/ts_internal_test.dbf' SIZE 10M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL;

Tablespace created.

Here is output creating a tablespace on the external disk:

SQL> CREATE TABLESPACE ts_external_test DATAFILE '/dbdata/vg00/lv0000/ts_external_test.dbf' SIZE 10M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL;
CREATE TABLESPACE ts_external_test DATAFILE '/dbdata/vg00/lv0000/ts_external_test.dbf' SIZE 10M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL
*
ERROR at line 1:
ORA-01119: error in creating database file
'/dbdata/vg00/lv0000/ts_external_test.dbf'
ORA-27044: unable to write the header block of file
Linux-x86_64 Error: 22: Invalid argument
Additional information: 3

Here are permissions, creating a file as the 'oracle' user, free space and mount options:

$ su - oracle
$ whoami
oracle
$ cd /dbdata/vg00
$ ls -l
total 20
drwxr-xr-x 3 oracle oinstall 4096 Apr 26 12:05 lv0000
drwxr-xr-x 3 oracle oinstall 4096 Apr 26 10:38 lv0001
drwxr-xr-x 3 oracle oinstall 4096 Apr 22 18:14 lv0002
drwxr-xr-x 3 oracle oinstall 4096 Apr 22 18:14 lv0003
drwxr-xr-x 3 oracle oinstall 4096 Apr 26 10:18 lv0004
$ cd lv0000
$ ls
lost+found
$ echo "test file" > some_file
$ ls -l
total 20
drwx------ 2 root   root     16384 Apr 26 11:42 lost+found
-rw-r--r-- 1 oracle oinstall    10 Apr 26 12:08 some_file
$ cat some_file 
test file
$ df -h | grep lv0000
/dev/sdc1             2.0T   71M  2.0T   1% /dbdata/vg00/lv0000
$ mount | grep lv0000
/dev/sdc1 on /dbdata/vg00/lv0000 type ext2 (rw,noatime)

NOTE: we are using ext2 due to limitations that we have to work around within our environment. The volume is currently mounted as (noatime,async) based off a recommendation I found in regards to Oracle and ext2/3. I've tried mounting with defaults but it didn't change anything.

-Daniel

share|improve this question
add comment

1 Answer 1

Tracked it down. I set FILESYSTEMIO_OPTIONS=SETALL the other day. It appears that direct I/O works for the local RAID array but not for the external. When I set it back to NONE, I was able to create tablespaces on the external device.

A follow up, does anyone know if you can enable direct I/O on a per device basis without using ASM or RAW?

share|improve this answer
    
If you are using VxVM on your SAN device then your options are ODM (a shared library you like with Oracle that moves all its I/O direct) and QuickIO (that operates at the filesystem level and can do individual files). I'm afraid I don't know of equivalents for ext2 which IMHO makes as much sense to use these days as UFS, i.e. not if you can possibly avoid it. –  Gaius Apr 27 '11 at 20:11
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.