Как переименовать или удалить файлы с данными и файлы журналов
Для памяти я сделал перевод из этого материала: How to Rename or Move Datafiles and Logfiles [ID 115424.1]
ПРИМЕЧАНИЕ:
Чтобы переименовать или удалить файлы в табличном пространстве SYSTEM
вы должны базу остановить, потому что вы не можете перевести табличное
пространство SYSTEM в оффлайн.
I. ПЕРЕИМЕНОВАНИЕ ИЛИ УДАЛЕНИЕ ФАЙЛОВ ДАННЫХ ПРИ ОТКРЫТОЙ БАЗЕ ДАННЫХ
1. Определить как много файлов с данными связаны с табличном пространством.> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'Имя';
2. Убедитесь в том, что все файлы с данными возвращают статус AVAILABLE.
3. Сделайте табличное пространство только для чтения.
> ALTER TABLESPACE имя READ ONLY;
4. Убедитесь в том, что табличное пространство определено со статусом только для чтения в словаре данных.
> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES
WHERE TABLESPACE_NAME = 'имя';
TABLESPACE_NAME STATUS
-
ИМЯ READ ONLY
5. Скопируйте файл(ы) на новое место, используя команду операционной системы copy. После копирования сравните файлы по размеру. Убедитесь, что файлы одинакового размера.
6. После копирования файлов измените статус табличного постранства на оффлайн.
> ALTER TABLESPACE имя OFFLINE;
* С этого момента табличное пространство не доступно пользователям.
7. Так как табличное пространство в оффлайне, вы можете переименовать файлы. Это внесет изменения в controlfile.
> ALTER DATABASE RENAME FILE
'/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
TO
'/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
* Вы должны будете сделать это для всех файлов данных, связанных с этим табличным пространством. Вы можете использовать такую же конструкцию ALTER TABLESPACE ... RENAME DATAFILE.
8. Если предложение alter database обработано для файлов, вы можете перевести табличное пространство в онлайн.
> ALTER TABLESPACE имя ONLINE;
9. После этого переведите табличное пространство в статус чтение/запись.
> ALTER TABLESPACE имя READ WRITE;
10. Проверьте статус табличного пространства. Вы можете так же проверить как обновился controlfile:
> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
Эта команда выведет содержание controlfile в текстовый файл в директорию с именем user_dump_dest.
Конечно, можно посмотреть V$DATAFILE.
11. Удалите старые файлы командами O/S.
II. Переименование и/или удаление файлов с данными при остановленной базе
1. Если база работает, остановите ее.2. Скопируйте файлы с данными на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу.
> STARTUP MOUNT
Эта команда прочтет файл control, но не монтирует файлы с данными.
4. Переименуйте файл внутри Oracle.
> ALTER DATABASE RENAME FILE
'/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
TO
'/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
Выполните эту команду для всех тех файлов, которые вы меняли на уровне операционной системы.
5. Откройте базу данных.
> ALTER DATABASE OPEN;
6. Запросите v$dbfile что бы удостовериться в правильности изменений.
> SELECT * FROM V$DBFILE;
7. Удалите старые файлы на уровне операционной системы.
III. Переименование и/или удаление журнальных файлов(LOGFILE)
1. Остановите базу данных.2. Скопируйте logfile на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу данных.
> STARTUP MOUNT
4. Переименовываем файл.
> ALTER DATABASE RENAME FILE
'/FULL_PATH_OF_OLD_LOCATION/AND_REDO_LOG_NAME.LOG'
TO
'/FULL_PATH_OF_NEW_LOCATION/AND_REDO_LOG_NAME.LOG';
5. Открываем базу данных.
> ALTER DATABASE OPEN;
6. Удаляем старые журнальные файлы на системном уровне.