In this Document
APPLIES TO:
Oracle Database - Enterprise Edition - Version 12.2.0.1 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Database Cloud Exadata Service - Version N/A and later
Information in this document applies to any platform.
SYMPTOMS
12.2 DBCA fails with following error while creating the database.
CREATE DATABASE "<database>"
*
ERROR at line 1:
ORA-01501: CREATE DATABASE failed
ORA-00200: control file could not be created
ORA-00202: control file: '+DATA'
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15040: diskgroup is incomplete
DBCA trace:
[Thread-258] [ 2017-07-17 17:03:16.133 BRT ] [DBEntryStep.executeImpl:494] CREATEDB without passwords = CREATE DATABASE "<database>"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE SIZE 700M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE SIZE 550M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET WE8ISO8859P1
NATIONAL CHARACTER SET UTF8
LOGFILE GROUP 1 SIZE 500M,
GROUP 2 SIZE 500M,
GROUP 3 SIZE 500M
[Thread-258] [ 2017-07-17 17:03:29.477 BRT ] [SQLEngine.done:2314] Done called
[Thread-258] [ 2017-07-17 17:03:29.478 BRT ] [SQLEngine.spoolOff:2160] Setting spool off = /u01/app/oracle/cfgtoollogs/dbca/<database>/CreateDB.log
[Thread-258] [ 2017-07-17 17:03:29.479 BRT ] [BasicStep.configureSettings:383] messageHandler being set=oracle.sysman.assistants.util.InteractiveMessageHandler@37ffc17e
[Thread-258] [ 2017-07-17 17:03:29.479 BRT ] [StepContext$ModeRunner.run:2961] ORA-01501: CREATE DATABASE failed
ORA-00200: control file could not be created
ORA-00202: control file: '+DATA'
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15040: diskgroup is incomplete
oracle.sysman.assistants.dbca.backend.DBEntryStep.executeImpl(DBEntryStep.java:652)
oracle.sysman.assistants.util.step.BasicStep.execute(BasicStep.java:278)
oracle.sysman.assistants.util.step.Step.execute(Step.java:135)
oracle.sysman.assistants.util.step.StepContext$ModeRunner.run(StepContext.java:2941)
java.lang.Thread.run(Thread.java:745)
[Thread-258] [ 2017-07-17 17:03:31.397 BRT ] [SQLEngine.done:2314] Done called
We can see the disk group is mounted already in ASM.
SQL> select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
ARCHIVE MOUNTED
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 1048576 20480 20426 0 20426 0 N ARCHIVE/
MOUNTED EXTERN N 512 512 4096 4194304 102400 102300 0 102300 0 N DATA/
SQL> select name,path,os_mb,total_mb,free_mb,mode_status,header_status from v$asm_disk;
NAME
------------------------------
PATH
--------------------------------------------------------------------------------
OS_MB TOTAL_MB FREE_MB MODE_ST HEADER_STATU
---------- ---------- ---------- ------- ------------
ARCHIVE_0000
/dev/oracleasm/ARCH_DISK01
10240 10240 10213 ONLINE MEMBER
DATA_0000
/dev/oracleasm/DATA_DISK01
102400 102400 102300 ONLINE MEMBER
NAME
------------------------------
PATH
--------------------------------------------------------------------------------
OS_MB TOTAL_MB FREE_MB MODE_ST HEADER_STATU
---------- ---------- ---------- ------- ------------
ARCHIVE_0001
/dev/oracleasm/ARCH_DISK02
10240 10240 10213 ONLINE MEMBER
Strace output /tmp/kfod.strace kfod :
strace -f -o /tmp/kfod.strace kfod disks=all asm_diskstring='/dev/oracleasm/*'
30122 read(7, "f d P e c f 200 g 253 h 336 "..., 512) = 512
30122 close(7) = 0
30122 mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0129535000
30122 munmap(0x7f0129535000, 266240) = 0
30122 stat("/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned", 0x7ffed274a060) = -1 ENOENT (No such file or directory)
30122 openat(AT_FDCWD, "/dev/oracleasm", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7
30122 getdents(7, /* 5 entries */, 32768) = 144
30122 newfstatat(7, "DATA_DISK01", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 80), ...}, 0) = 0
30122 newfstatat(7, "ARCH_DISK02", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 64), ...}, 0) = 0
30122 newfstatat(7, "ARCH_DISK01", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 48), ...}, 0) = 0
30122 getdents(7, /* 0 entries */, 32768) = 0
30122 close(7) = 0
30122 stat("/dev/oracleasm/DATA_DISK01", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 80), ...}) = 0
30122 open("/dev/oracleasm/DATA_DISK01", O_RDONLY) = -1 EACCES (Permission denied) <<-----
30122 stat("/dev/oracleasm/ARCH_DISK02", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 64), ...}) = 0
30122 open("/dev/oracleasm/ARCH_DISK02", O_RDONLY) = -1 EACCES (Permission denied) <<-----
30122 stat("/dev/oracleasm/ARCH_DISK01", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 48), ...}) = 0
30122 open("/dev/oracleasm/ARCH_DISK01", O_RDONLY) = -1 EACCES (Permission denied)
30122 open("/u01/app/oracle/product/12.2.0/db/oracore/mesg/lrmus.msb", O_RDONLY) = 7
The OS disk does not have exact permission. It has to be grid:dba instead of grid:root.
The softlink is created for the disks
[root@bdgrd ~]# ls -trlh /dev/oracleasm/
total 0
lrwxrwxrwx 1 root root 6 Jul 20 10:33 DATA_DISK02 -> ../sdh
lrwxrwxrwx 1 root root 6 Jul 20 10:33 ARCH_DISK02 -> ../sde
lrwxrwxrwx 1 root root 6 Jul 20 10:33 DATA_DISK01 -> ../sdg
lrwxrwxrwx 1 root root 6 Jul 20 10:33 ARCH_DISK03 -> ../sdf
lrwxrwxrwx 1 root root 6 Jul 20 10:33 ARCH_DISK01 -> ../sdd
oracle@<host> database]$ ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Jul 14 17:19 /dev/sda
brw-rw---- 1 root disk 8, 1 Jul 14 17:19 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jul 14 17:19 /dev/sda2
brw-rw---- 1 root disk 8, 3 Jul 14 17:19 /dev/sda3
brw-rw---- 1 root disk 8, 4 Jul 14 17:19 /dev/sda4
brw-rw---- 1 root disk 8, 5 Jul 14 17:19 /dev/sda5
brw-rw---- 1 root disk 8, 16 Jul 14 17:19 /dev/sdb
brw-rw---- 1 root disk 8, 32 Jul 14 17:19 /dev/sdc
brw-rw---- 1 grid root 8, 48 Jul 20 17:53 /dev/sdd
brw-rw---- 1 grid root 8, 64 Jul 20 17:32 /dev/sde
brw-rw---- 1 grid root 8, 80 Jul 20 17:53 /dev/sdf
[oracle@<host> <database>]$ ls -trlh $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle dba 390M Jul 17 14:40 /u01/app/oracle/product/12.2.0/db/bin/oracle
[oracle@<host> ~]$ ls -ltr /u01/app/oracle/product/12.2.0/grid/bin/oracle
-rwsr-s--x 1 grid oinstall 372714122 Jul 17 13:57 /u01/app/oracle/product/12.2.0/grid/bin/oracle
CAUSE
Due to OS disk permission issue.
SOLUTION
The "oracle" executable file in the RDBMS home should be the same group that owns the ASM disks i,e.dba or vice versa.
chown <grid home owner>:<group> <OS disk>
example :chown grid:dba /dev/sdd
If udev rule (/etc/udev/rules.d/99-asm.rules) configured for disks,then ensure that owner:group file properly defined in udev rule.