public function create($conn_asm, $conn_db, $id, $password, $disk_type) { $dg = $id; $tablespace = $id; // Fetch Available Disk $drive = new Drive(); $available_disk = $drive->fetch_available_disk($conn_asm, $disk_type); if ($available_disk == FALSE ) { $this->err_msg = array_merge($this->err_msg, $drive->err_msg); array_push($this->err_msg, "新たなディスクの確保に失敗しました。"); return(FALSE); } if ($available_disk == NULL ) { array_push($this->err_msg, "利用可能なディスクがありません。"); return(FALSE); } // Create Diskgroup $available_disk["name"] = $dg . "_" . $disk_type; $result = $drive->create_dg($conn_asm, $dg, $available_disk); if ($result == FALSE) { $this->err_msg = array_merge($this->err_msg, $drive->err_msg); array_push($this->err_msg, "新たなディスクグループを作成出来ませんでした。"); return(FALSE); } // Mount Diskgroup $result = $drive->mount_dg($conn_asm, $dg); if ($result == FALSE) { $this->err_msg = array_merge($this->err_msg, $drive->err_msg); array_push($this->err_msg, "ディスクグループをマウント出来ませんでした。"); return(FALSE); } // Create Tablespace $result = $drive->create_tablespace($conn_db, $tablespace, $dg); if ($result == FALSE) { $this->err_msg = array_merge($this->err_msg, $drive->err_msg); array_push($this->err_msg, "新たな表領域を作成出来ませんでした。"); // Rollback $drive->delete_dg($conn_asm, $dg); return(FALSE); } // Create User $state_id = oci_parse($conn_db, "create user $id identified by $password default tablespace $tablespace quota unlimited on $tablespace"); $result = oci_execute($state_id); if ($result == FALSE) { array_push($this->err_msg, "新たなユーザーを作成出来ませんでした。"); // Rollback $drive->delete_tablespace($conn_db, $tablespace); $drive->delete_dg($conn_asm, $dg); return(FALSE); } // Grant Role to User $state_id = oci_parse($conn_db, "grant " . CLOUD_USER . " to $id"); $result = oci_execute($state_id); if ($result == FALSE) { array_push($this->err_msg, "ユーザーにロールを割り当て出来ませんでした。"); // Rollback self::delete($conn_asm, $conn_db, $id); return(FALSE); } global $array_consumer_group; foreach ($array_consumer_group as $consumer_group) { $state_id = oci_parse($conn_db, "BEGIN dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name => '$id',consumer_group => '$consumer_group',grant_option => FALSE);END;"); $result = oci_execute($state_id); if ($result == FALSE) { array_push($this->err_msg, "ユーザーにコンシューマーグループオブジェクト権限を割り当て出来ませんでした。"); // Rollback self::delete($conn_asm, $conn_db, $id); return(FALSE); } } $result = self::update_consumer_group($conn_db, $id, DEFAULT_CONSUMER_GROUP); if ($result == FALSE) { array_push($this->err_msg, "コンシューマーグループマッピングを作成出来ませんでした。"); // Rollback self::delete($conn_asm, $conn_db, $id); return(FALSE); } return(TRUE); }