12.2 DBCA fails with ORA-17502:ksfdcre:4 Failed to create file (Doc ID 2291438.1)

Click to add to Favorites To BottomTo Bottom

In this Document

  Symptoms
  Cause
  Solution
  References

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, "fdPecf200g253h336"..., 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.

原文地址:https://www.cnblogs.com/yaoyangding/p/15105464.html