База данных резервного копирования/Восстановления для оракула 10 г, тестирующих использующий sqlplus или rman

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

8
задан OMG Ponies 7 October 2009 в 00:47
поделиться

5 ответов

Вы не должны брать резервное копирование в свой норматив времени. Просто включите базу данных ретроспективного кадра, создайте гарантируемую точку восстановления, запустите свои тесты и ретроспективный кадр к ранее созданной точке восстановления.

Шаги для этого были бы:

  1. Запустите экземпляр в режиме монтирования.

    запуститесь сила монтируются;

  2. Создайте точку восстановления.

    создайте точку восстановления before_test база данных ретроспективного кадра гарантии;

  3. Откройте базу данных.

    измените открытую базу данных;

  4. Запустите свои тесты.

  5. Завершите работу и смонтируйте экземпляр.

    непосредственное завершение работы; запуск монтируется;

  6. Ретроспективный кадр к точке восстановления.

    база данных ретроспективного кадра к точке восстановления before_test;

  7. Откройте базу данных.

    измените открытую базу данных;

6
ответ дан 5 December 2019 в 12:15
поделиться

Вы могли использовать функцию в Oracle под названием Ретроспективный кадр, который позволяет Вам создавать точку восстановления, которая можно легко перейти назад к тому, после выполнения тестирования.

Заключенный в кавычки из сайта,

База данных ретроспективного кадра похожа на 'кнопку перемотки' для Вашей базы данных. Это обеспечивает восстановление момента времени базы данных, не требуя, чтобы резервное копирование базы данных сначала было восстановлено. При устранении времени, оно берет для восстановления резервного копирования базы данных от ленты, восстановление момента времени базы данных быстро.

5
ответ дан 5 December 2019 в 12:15
поделиться

На основе моего опыта импорт/экспорт является, вероятно, способом пойти. Экспорт создает логический снимок Вашего DB, таким образом, Вы не найдете это полезным для большого DBS или обременительных требований к производительности. Однако это работает отлично для того, чтобы сделать снимки и этажерку для использования в ряде машин.

Я использовал его на проекте направляющих получить снимок напоминания, который мы могли подкачать между разработчиками для интеграционного тестирования, и мы сделали задание в рамках сценариев граблей. Мы записали маленький sqlplus сценарий, который уничтожил DB, затем импортировал файл дампа чрезмерно.

Некоторые статьи можно хотеть проверить: OraFAQ Cheatsheet Oracle Wiki

Oracle, по-видимому, не нравится imp/exp больше в пользу объекта преобразования данных, когда мы использовали объект преобразования данных, нам были нужны вещи, которые мы не могли иметь (т.е. полномочия SYSDBA, мы не могли войти в общую среду). Поэтому смотрите, но не приводитесь в уныние, если объект преобразования данных не является Вашей сумкой, старые imp/exp все еще там :)

Я не могу рекомендовать, чтобы RMAN для такого рода вещи becuase RMAN взял большую установку и нуждался в конфигурации в DB (это также имеет свой собственный каталог DB для резервных копий, который является болью в общеизвестном для восстановления с нуля).

2
ответ дан 5 December 2019 в 12:15
поделиться

При использовании файловой системы, которая поддерживает снимки копии на записи, Вы могли настроить базу данных к состоянию, которое Вы хотите. Затем закройте все и возьмите снимок файловой системы. Затем пойдите о своем тестировании и когда Вы готовы запуститься по Вам, мог откатывать снимок. Это могло бы быть более просто, чем другие опции, предположив, что у Вас есть файловая система, которая поддерживает снимки.

1
ответ дан 5 December 2019 в 12:15
поделиться

@Michael решение Ridley совершенно scriptable, и будет работать с любой версией оракула.

Это точно, что я делаю, у меня есть сценарий, который работает еженедельно к

  1. Откатывайте файловую систему
  2. Примените производственные архивные журналы
  3. Возьмите новый снимок FS "Pre-Data-Masking"
  4. Журналы сброса
  5. Примените маскирование данных "подготовки производства".
  6. Возьмите новый снимок "Post-Data-Masking" (позволяет откату отправлять замаскированные данные),
  7. Открытая база данных

Это позволяет нам сохранять наши базы данных разработки близко к нашей производственной базе данных.

Чтобы сделать это, я использую ZFS.

Этот метод может также использоваться для Ваших приложений или даже Вас вся "среда" (например, Вы могли "откатывать" свою всю среду с единственной командой (в виде сценария).

Если Вы выполняете 10 г, хотя, первой вещью, которую Вы, вероятно, хотели бы изучить, является Ретроспективный кадр как ее встроенный в базу данных.

0
ответ дан 5 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: