Когда я готовился к OCA и OCP по Java 8, то нашел много статей на Хабре, благодаря которым выбрал оптимальный путь и сэкономил много времени.  Однако по подготовке именно к OCA Oracle Database SQL (1Z0-071) материалов на Хабре нет и в интернете тоже очень мало. Поэтому я решил написать подробную статью, которая поможет заинтересованным потратить меньше времени и успешно сдать довольно объемный экзамен.  Главной причиной послужило желание упорядочить знания, которые я получил за годы учебы и работы и заполнить все белые пятна. Также я хотел узнать, какого уровня понимания сам вендор БД, в данном случае Oracle, ожидает от разработчиков.  Просто прочесть книгу по SQL я посчитал недостаточным, так как без практики возникает ощущение, что все прочитанное усвоил. А когда готовишься к сертификации приходится решать тесты чуть ли не по каждой прочитанной строчке, там и вскрывается, что понимаешь некоторые моменты не до конца и возвращаешься перечитывать.  Но ведь тогда, можно было бы просто прочитать книгу, и решать тесты. Зачем идти и сдавать официально? Как дополнительная мотивация.  При решении тестов можно невольно пожалеть себя и простить какие-то недочеты, а настоящий экзамен не простит. Можно по разному его сдать, но если мы пришли за пониманием, то сертификация довольно объективный измеритель знаний.  Плюс бонусом, сертификат можно показать текущему и будущему работодателю. Гипотетически это должно характеризовать вас как человека, который умеет ставить цели, планировать, готовиться, перерабатывая, большой объем информации и доводить дело до конца.  Вот в общем и все причины сдачи. Уверенность в своих знаниях и значок, который можно показать.  В школе в 10 классе был курс по базам данных, но из него я мало, что помню.  В университете я прошел и два курса по базам данных, и оба очень понравились.  Первый “Теория баз данных” Э.Э. Гасанова, это фундаментальный теоретический курс.  Второй курс “Базы данных” вел М.И. Кумсков, практический курс по типам баз данных, как анализировать требования, как создавать таблицы, связи и много чего еще.  Оба курса лежат в открытом доступе, но для того чтобы сдать сертификацию их, конечно, изучать не надо.  Кроме этого, я как многие работал на работе и дома в основном с PostgreSQL, MySQL и SQLite, читал статьи, смотрел курсы.  Поэтому я считал себя довольно подготовленным к повседневным задачам разработчиком, но в тоже время думал, что есть много тем, с которыми я так и не успел познакомился.  Я рассматривал три базы данных PostgreSQL, MySQL и Oracle Database SQL.  PostgreSQL официальной сертификации нет. MySQL есть, но она довольно старая и мне лично ее ценность не до конца понятна.  Остановился на Oracle так как сертификация недавно обновлена, сертификат по этой базе, как мне кажется, ценится больше остальных. А так как курс только по SQL, то там описаны вещи, которые должны в той или иной степени работать во всех SQL базах данных, так как все они поддерживают ANSI SQL. Здесь я подробно описываю то, что я делал и какие ошибки совершил.  Прежде чем начинать читать книгу, я хотел установить Oracle SQL. Как раз на Хабре прочел, что вышла 18c XE. Я зашел на сайт и увидел, что MacOS в списке нет. Windows на тот момент у меня не было, зато была VPS на Ubuntu. К сожалению, Oracle на Ubuntu я не смог завести, может попытка была необдуманной, но и не такие вещи я в жизни делал.  В итоге я прикупил на DigitalOcean VPS с CentOS и без особого труда поставил БД туда. Будучи вообще не знакомым с официальным редактором SQL Developer я решил, что буду писать в DataGrip от JetBrains, так как он уже был установлен. Подключил DataGrip к Oracle SQL и начал читать официальную книгу по подготовке к экзамену.  Я читал книгу и решал тесты после каждой главы. Попутно разбирал некоторые примеры из книги на своей базе данных, чтобы детально понять как работает функция.  В первый проход, я читал главу, потом решал тест, проверял правильность, если не правильно, читал объяснение в ответе, но обратно главу не перечитывал.  Занимался три раза в неделю по два-три часа. В какую-то неделю меньше, в какую-то неделю больше. Не могу сказать, что это приятное чтение и порой оно вызывало у меня отчаяние, но цель поставлена, план есть, можно было продолжать. Книга довольно сложная для восприятия. Иногда и со второго раза я не мог разобрать что имел ввиду автор.  К началу июня, больше чем через месяц, я все-таки закончил чтение и выполнил первый тестовый экзамен из двух в эмуляторе, который идет вместе с книгой. Причем я забыл про время и не успел закончить даже половину вопросов. По умолчанию программа не разрешила продолжить тест (в отличии от Enthuware для Java). В результате набрал меньше половины. Несмотря на то, что успел сделать только половину я убедился, что не полностью усвоил книгу.  Поэтому решил дальше искать другие материалы по подготовке и наткнулся на курс на Udemy, первоначально отнесся скептически, так как всегда предпочитал книги при подготовке к более менее серьезному экзамену. Но не найдя альтернатив, я посмотрел рейтинг, почитал отзывы и купил курс (за 4 824 рублей) ничего особо от него не ожидая. Как оказалось примерно раз в неделю цена падает до 799 рублей, поэтому стоит подождать.  К этому моменту мне надоело постоянно подключаться к VPS для того чтобы разбирать примеры практически. Плюс ко всему DataGrip не поддерживает SQL*Plus команды. Поэтому достал ноутбук на Windows и поставил туда все локально, следуя инструкции из видео курса.  Не смотря на мои ожидания, я остался очень доволен курсом. Автор рассказывает как установить БД, установить SQL Developer и как разблокировать подготовленного Oracle тестового пользователя HR с уже загруженными данными. В течении всего видео курса почти все примеры показываются на тестовой базе HR. Также автор показал, что использует SQL Developers и это, я думаю, правильный и бесплатный выбор. Странно, что ни про установку БД, ни про Oracle SQL Developer, ни про HR пользователя, в книгe не рассказывается. При этом в самом экзамене часто встречались вопросы, которые как раз основаны на данных из этой БД. Поэтому, если бы я знал где подстелить заранее, я бы начал с видео курса, и уже потом перешел к книге и сэкономил бы время.  В каждой главе курса сначала краткая теория, а сразу после реальные практические примеры, которые автор выполняет в SQL Developer. Я с самого начала решил, что буду повторять и разбирать каждый пример локально. Поэтому двадцать часов видео превратились в полтора месяца изучения и практики, хотя перерывы тоже были. Так как курс интересный, мотивация его закончить была выше мотивации закончить книгу.  Когда я его закончил, почувствовал наконец, что общая картина прояснилась и что понял все самое важное. Выполнил второй тест в эмуляторе, который идет вместе с книгой и снова набрал меньше половины, но лучше чем в первый раз, я опять напутал что-то с настройками и не успел закончить экзамен за заданное время, хотя уже уверенно отвечал на большинство вопросов. В итоге я отключил отсчет времени и запустил режим в котором можно было решать сразу все вопросы без ограничения.  Читал вопрос, отвечал на него, если считал, что однозначный ответ я дать не могу, я каждый раз записывал тему вопроса в тетрадь, даже если тема уже встречалась в списке. После ответа, проверял правильность и пытался вникнуть в объяснение, которое дается в эмуляторе. Качество эмулятора и объяснение вопросов оцениваю на высоком уровне.  После того как я проработал все вопросы из эмулятора, я посчитал сколько раз встречается каждая тема в списке и отсортировал по убыванию частоты, таким образом вверху оказывались темы, которые вызывали больше всего вопросов. Это позволило мне не перечитывать главы, которые я хорошо усвоил, а сосредоточиться только на тех, которые я больше всего не понимал. Я перечитал четыре главы из списка.  И тут я заметил, что перечитывая, начинаю понимать все с первого раза. После каждой главы я снова решал тест из этой главы состоящий из 15-20 вопросов. Хотя до этого я уже провешивал эти вопросы, но так как прошло полтора месяца после прочтения книги, мне показалось, что большинство из них я забыл.  Было ясно, что тестов из книги и эмулятора маловато, нужно было прорешать еще два-три тестовых экзамена перед тем как сдавать. Сначала я думал купить Kaplan Training их советует Oracle на официальном странице экзамена, но цена в $189 за полный курс меня обескуражила. Поэтому я купил тесты по совету автора курса Udemy. Я купил PDF + эмулятор за $60 долларов.  Меня ждал не очень приятный сюрприз. В отличии от Enthuware где тесты разбиты на 7 независимых экзаменов, эти тесты разбиты на две части в одной 272 вопроса, в другой 27. Я так и не понял логики, но разбираться не стал. Я просто в уме разбил на три отдельных по 78 вопросов и засекал два часа для каждого, как в настоящем. Купленные материалы оцениваю ниже среднего, если сравнивать с Enthuware. Встречались ошибки в вопросах и ответах, часто к вопросу нет объяснения, нет ссылки на форум где можно обсудить вопрос, нет возможности смотреть детальные отчеты, чтобы понять какие именно темы хуже всего усвоены.  Тут схема была как и раньше, я читал вопрос, если не знал как однозначно ответить записывал название темы в тетрадь. После первого условного экзамена, прочел по списку три главы, которые вызывали больше всего вопросов, проверил примеры на локальной БД. Так я повторил еще один раз, прочел еще несколько самых непонятных глав. В итоге получилось, что прочел по второму кругу девять или десять глав из четырнадцати.  К этому моменту я был готов к экзамену и не стал решать остальные вопросы.  Записался на экзамен, в моем случае доступных дат было не очень много, поэтому я сделал это как только закончил видеокурс.  Сдача экзамена стоит $245 долларов.  На экзамен я обычно записываюсь к двенадцати часам, завтракаю и без обеда приезжаю в тестовый центр за полчаса до начала. На месте ем шоколад, делаю несколько глотков воды и захожу сдавать. Мне не очень хочется отлучаться во время экзамена, поэтому такие меры предосторожности.  Кстати, сейчас PearsonVue предлагает возможность сдать любой экзамен онлайн, но там много дополнительный условий, поэтому сдавал в тестовом центре.  По опыту подготовки я понял, что для меня два часа довольно мало, поэтому мысленно разбил экзамен на 4 части и знал что за каждые полчаса должен решать по двадцать вопросов и двигался по плану. На самом экзамене на выданном листе написал этот нехитрый план, чтобы был перед глазами.  Если в вопросе есть диаграмма, то первым делом предлагают посмотреть на нее. Я этого не делал пока не прочту вопрос и не пробегу глазами варианты ответов, очень часто ответ можно дать или не смотря на схему, или вы уже будете знать на что именно нужно обратить внимание при анализе диаграммы.  Вопросы, на которые уходило больше двух или иногда трех минут, я отвечал методом исключения и выбора наиболее подходящего, чтобы не терять время.  Кстати, на самом экзамене мне только несколько раз попались точно такие же вопросы как во время подготовки, остальные были просто похожими.  На самом экзамене я уже особо не волновался, следовал плану, и закончил за 10 минут до конца, за оставшееся время на всякий случай пробежался по всем вопросам и проверил, что ответил на все. Через пятнадцать минут на почту пришло письмо, что можно проверить результаты, я зашел на сайт и узнал что прошел, с результатом в 85%. Чему был очень рад.  Если бы я заранее знал какие материалы и в какой последовательности использовать, сократил бы подготовку до 2-2.5 месяцев.  Самое главное, я бы начал с видео курса вместо книги и не читал бы книгу полностью, а по выше описанной схеме читал бы главы по наименее понятным темам.  Я бы не разворачивал БД на VPS и не использовал DataGrip. Я бы сразу установил БД и SQL Developer локально на компьютер или виртуальную машину, следуя инструкции из видеокурса.  Итак, вот дорожная карта, по который я бы готовился:  Надеюсь, что статья поможет всем кто хочет сдать экзамен. Я постарался описать подробно, хоть и скучновато, все что делал по двум причинам. Во-первых, чтобы был понятен ход мыслей и вывод к которому пришел. Во-вторых, статей по этому экзамену мало. Буду очень рад дополнениям в комментариях! Удачи на экзамене!  Это первый пост, который я перевел на английский язык. И здесь же хотел бы выразить благодарность deniskin и команде, за площадку, на которой мы можем поделиться своим опытом с международным сообществом. Software Engineer