Linux – Unable to create a tablespace, unusual error

linuxoracle-11g-r2

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

Best Answer

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?