powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите пожалуйста ламеру.
25 сообщений из 39, страница 1 из 2
Помогите пожалуйста ламеру.
    #32062546
Dio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dio
Гость
Сервер WinNT4. Стоит база Oracle на диске E:\. Нужно базу перенести на диск F:\ , где меняется путь к базе?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32062559
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Необходимо удалить сервис старой базы, если меняется место положение файла параметров инициализации init<SID>.ora и создать новый соответсвенно с указанием нового пути
2. В файле init<SID>.ora скорректировать все параметры, в которых указаны пути, которые также поменялись(например control_files)
3. Необходимо что-бы контрольные файлы учли данное перемещение базы. Можно пересоздать контрольный файл.
Для этого, еще перед перемещением, выдать команду alter database backup controlfie to trace. Будет создан файл
в трейс-папке с тескстом команды, типа:
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 27211
LOGFILE
GROUP 1 'i:\ORANT8I\ORADATA\ORCL\LOGORCL1.ORA' SIZE 2M,
GROUP 2 'i:\ORANT8I\ORADATA\ORCL\LOGORCL2.ORA' SIZE 2M
DATAFILE
'i:\ORANT8I\ORADATA\ORCL\SYS1ORCL.ORA',
'i:\ORANT8I\ORADATA\ORCL\USR1ORCL.ORA',
'i:\ORANT8I\ORADATA\ORCL\INDX1ORCL.ORA',
'i:\ORANT8I\ORADATA\ORCL\RBS1ORCL.ORA'
CHARACTER SET CL8MSWIN1251


Тебе необходимо скорректировать все пути в этом файле.
В этом файле будет также команда
ALTER DATABASE OPEN;

4. После перемещения файлов базы
a) стартануть сервис
b) в svrmgrl connect internal
c) startup nomount;
d) @<файл с командой создания контрол файла>


Возможно, придёться открывать базу с опцией RESETLOGS, поэтому когда будешь даунить старую базу, обязательно закрой её как shutdown normal;

Это вобщем вкратце. А вообще обязательно сделай холодную копию вначале.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32062652
Dio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dio
Гость
Есть-ли способ запуска базы?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32062795
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запустить можно конечно. Но контрольный файл всё равно надо пересоздавать, потому-что, он контролирует расположение всех файлов базы данных. Если реальное распложение не будет совпадать с информацией в контрольном файле, то база просто не запуститься.
Если невозможно получить текст команды для создания из старой базы через команду, тогда можно попытаться подобрать параметры.
Обычно параметры:
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 1
MAXLOGHISTORY 27211
оставляют те которые по умолчанию. Если менялись, то нужно вспомнить.
Если нет, то можно попробовать указать с этими значениями.
Остаётся правильно прописать LOGFILE и DATAFILE.

Если база была закрыта shutdow normal, то если после ALTER DATABASE OPEN, она скажет нужно открыть с опицией RESETLOGS или NOTRESETLOGS, тогда придёться сказать ALTER DATABASE OPEN RESETLOGS. После чего редо-файлы очистяться. Если же база была закрыта shutdown abort или копм был выключен внезапно, то перед ALTER DATABASE OPEN надо будет
сделать RECOVER DATABASE. Возможно после этого два пути развития:
1) база скажет что восстановление успешно произведено
в этом случае всё нормально.
2) что с каким либо файлом базы данных есть проблема.
Во втором случае уже сложнее. Поэтому я советую иметь копию базы, что бы её вновь можно было развернуть.

Гарантировано без RECOVER DATABASE получается так:

1. Убрать(временно спрятать, пока не убедишься что всё получилось)
редо-файлы и контрольные файлы, потомучто будут созданы новые.
2. Сервис создать новый.
oradim -new -sid <SID базы> -INTPWD oracle -startmode manual -pfile "<путь к файлу>\init.ora", стартоваь. Если такой сервис уже существует, его надо вначале удалить oradim -DELETE -SID <SID базы>
3. Запустить svrmgrl и подконнектиться как internal
connect internal
3. startup nomount (можно указать pfile=, если не находит автоматом)
4. создать контрольный файл, в команде должна быть опция RESETLOGS -
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS -
именно опция RESETLOGS, в этом случае при создании контрольного файла будут созданы и новые редо-файлы
5. alter database open resetlogs
Если база открылась, то всё нормально. Вообще говоря должно быть всё нормально, возможно только пропрадут последние транзакции из редо-фала, если они были, если база была закрыта не normal.
6. Старые редо-файлы и контрольные файлы уже не нужны.

Если после 4 пункта ругнулся, это плохо. Дальше уже сложнее.

Еще раз хочу повторить - обязательно надо сделать копию. Потомучто, если не получится, то потом еще труднее будет восстановить. Лучше начать с исходной.

Если что, пишите.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063376
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, есть волшебная комманда "ALTER <to li SYSTEM, to li DATABASE> copy controlfile to trace". И не нужно вспоминать, с какими параметрами оно создавалось.

Если controlfile переносить не нужно (можно оставить на диске E:), то тогда можно обойтись малой кровью -- перетащить только tablespaces + redo logs.
Их можно и на ходу: take offline, alter datafile rename ...; move datafile; take online. Как перемещать SYSTEM, тут недавно писали.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063401
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Кстати, есть волшебная комманда "ALTER <to li SYSTEM, to li DATABASE> copy controlfile to trace". И не нужно вспоминать, с какими параметрами оно создавалось"

Ну ё-моё. Ты хоть читай что раньше уже писалось:
я же сказал что "alter database backup controlfie to trace".
Это во-первых. Во-вторых, если считаешь нужным повторить то что уже было сказано, то надо правильно команду писать. Нет такой команды: "ALTER <to li SYSTEM,
to li DATABASE> copy controlfile to trace".
В третьих, тебе же обьяснили, что база старая уже не существует, еёубили в срочном порядке, и файлы уже перенесли в другое место, и выдать команду "alter database backup controlfie to trace" уже нет возможности.

"Если controlfile переносить не нужно (можно оставить на диске E:), то тогда можно обойтись малой кровью -- перетащить только tablespaces + redo logs"

В четвёртых, неважно где лежат контрольные файлы, в файле init<SID>.ora не проблема указать другой путь, проблема именно в том что файлы базы данных перенесли.

Прежде чем глупость писать, лучше подумать.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063502
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dio

shutdown immediate
/*+ здесь скопировать файлы базы на нужный диск */
startup mount
alter database rename file .... to ...
alter database rename file .... to ...
......
alter database open;
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063555
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уверен что startup mount пройдёт?
Ведь на старом месте файлов уже нет, что он будет монтировать?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063559
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходный топик от Dio:

"Сервер WinNT4. Стоит база Oracle на диске E:\. Нужно базу перенести на диск F:\ , где меняется путь к базе?"

Так почему же их нет?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063577
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2softbuilder@inbox.ru

>Ты уверен что startup mount пройдёт?
>Ведь на старом месте файлов уже нет, что он будет
>монтировать?

Читаем документацию:

The instance mounts a database to associate the database with that instance. After mounting the database, the instance finds the database control files and opens them. (Control files are specified in the CONTROL_FILES initialization parameter in the parameter file used to start the instance.) Oracle then reads the control files to get the names of the database's datafiles and redo log files.

Естественно посыпятся ошибки об отсутствии файлов по старому адресу, но база смонтируется, т.к. controlfile будет на месте. А затем сделать как написал killed. Это более простой путь чем пересоздавать controlfile. Тем более не придется делать resetlogs, что сохранит преемственность бекапов.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063591
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, может я и вправду не правильно понял.
Но человек во втором сообщении сказал, что "Так случилось, что каталог уже перенесен". Я это понял так, что диска E: уже нет, файлы БД перенесены на диск F: и вернуть обратно возможности нет. Разве можно переименовать файл которого не существует?
Если можно, тогда пардон. Приношу все свои извенения всем, кого обидел.
Мне казалось он должен выдать что-то типа:
ORA-02236 invalid file name
Cause: A character string literal was not used in the file name list of a
LOGFILE, DATAFILE, or RENAME clause.

Убедите меня что я не прав
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063596
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще по поводу startup mount
Вот описание ALTER DATABASE RENAME FILE Из Oracle8i Ref
RENAME FILE
Use the RENAME FILE clause to rename datafiles, tempfiles, or redo log file
members. This clause renames only files in the control file. It does not actually
rename them on your operating system. You must specify each filename using the
conventions for filenames on your operating system before specifying this clause.
Do not use this clause when the database is mounted.

Прошу обратить внимание на последнюю строку.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063613
mms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mms
Гость
Привожу описание (инструкцию) из "Oracle8i Administrator's Guide / Managing Datafiles"

To rename datafiles of several tablespaces in one operation or to rename datafiles of the SYSTEM tablespace, you must have the ALTER DATABASE system privilege.
-Ensure that the database is mounted but closed.
-Copy the datafiles to be renamed to their new locations and new names, using operating system commands.
-Make sure the new copies of the datafiles have different fully specified filenames from the datafiles currently in use.
-Use the SQL statement ALTER DATABASE to rename the file pointers in the database's control file.

Хочу просто добавить, что на практике все это работает.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063625
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я почему то всегда считал что так нельзя как вы говорите.
Решил проверить на практике.
1. shutdown immediate
2. Копию файла /oracle8i/oradata/ORCL/TEMPORARY.ORA поместил в /oracle8i/oradata/TEMPORARY.ORA
3. Переименовал (иммитация отсутствия файла)файл /oracle8i/oradata/ORCL/TEMPORARY.ORA в /oracle8i/oradata/ORCL/TEMPORARY.ORA.old
2. connect internal
3. startup mount
4.
SVRMGR> alter database rename file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' to '/oracle8i/oradata/TEMPORARY.ORA';
alter database rename file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' to '/oracle8i/oradata/TEMPORARY.ORA'
*
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile or tempfile 'oracle8i/oradata/ORCL/TEMPORARY.ORA'
SVRMGR>

Что я делаю не правильно?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063630
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Do not use this clause when the database is mounted.

>Прошу обратить внимание на последнюю строку.

Ну что ж, действительно баг в документации. Однако это показывает, что даже письменные источники надо воспринимать критически и проверять на практике ;)
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063634
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как насчёт моего примера?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063637
coursing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно самому скопировать datafile или redo в нужный каталог и только после этого давать команду
alter database rename file '' to ''

Oracle за вас копировать (физические) файлы не будет.

Я кстати совсем недавно так и сделал (8.1.6 W2000S)
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063638
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> SVRMGR> alter database rename
> file 'oracle8i/oradata/ORCL/TEMPORARY.ORA'
> to '/oracle8i/oradata/TEMPORARY.ORA';

может там просто слешик потерялся, а? ;)
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063640
mms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mms
Гость
В инструкции ничего не говорится о удалении файлов со старого места. Вы должны файл СКОПИРОВАТЬ на новое место, сделать шаги по переименованию, открыть базу. И только потом можно удалять старый файл.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063644
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"нужно самому скопировать datafile или redo в нужный каталог и только после этого давать команду
alter database rename file '' to ''

Oracle за вас копировать (физические) файлы не будет. "

Еще раз обьясняю ситуацию, тому кто не понял.
Базу убрали с диска E: на диск F:. И вернуть(поместить копию) на диск E: - нет возможности - диск E: убит.
Я привёл пример на своей базе под Linux. Я скопировал файл /oracle8i/oradata/ORCL/TEMPORARY.ORA в новое место, туда где предполагается теперь лежать база - в /oracle8i/oradata/TEMPORARY.ORA. А старый файл /oracle8i/oradata/ORCL/TEMPORARY.ORA переименовал просто для имитации отсутствия старых файлов.

И при выдаче команды я получаю сообщение что исходного файла нет, не смотря на то что переименование идёт только в контрольном файле.

SVRMGR> alter database rename file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' to '/oracle8i/oradata/TEMPORARY.ORA';
alter database rename file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' to '/oracle8i/oradata/TEMPORARY.ORA'
*
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile or tempfile 'oracle8i/oradata/ORCL/TEMPORARY.ORA'
SVRMGR>


Пожалуйста глупые советы больше не давать
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063646
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"SVRMGR> alter database rename
> file 'oracle8i/oradata/ORCL/TEMPORARY.ORA'
> to '/oracle8i/oradata/TEMPORARY.ORA';

может там просто слешик потерялся, а? ;)"

Вполне возможно, щас проверю еще раз
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063687
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"SVRMGR> alter database rename
> file 'oracle8i/oradata/ORCL/TEMPORARY.ORA'
> to '/oracle8i/oradata/TEMPORARY.ORA';

может там просто слешик потерялся, а? ;)"

Значит так:
1. Останавливаем базу
./svrmgr

Oracle Server Manager Release 3.1.7.0.0 - Production

Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.

Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
JServer Release 8.1.7.4.0 - Production

SVRMGR> connect internal
Password:
Connected.
SVRMGR> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR>

2. Копируем а затем удаляем один из файлов БД для проверки. Я взял TEMP файл только потому что он самый маленький и я могу сделать его копию. Для других у меня нет больше места на диске. Файл БД удаляю потому, что мы рассматриваем именно такой пример, что БД уже перенесли на другой диск и вернуть нельзя!!!! Такое условие было в вопросе!!!

[oracle@mylinux oracle]$ cd /oracle8i/oradata/ORCL
[oracle@mylinux ORCL]$ ls *.ORA
SYS1ORCL.ORA TEMP.ORA USR1ORCL.ORA
[oracle@mylinux ORCL]$ ls ../
ORCL
[oracle@mylinux ORCL]$ cp TEMP.ORA ../TEMP.ORA
[oracle@mylinux ORCL]$ ls ../
ORCL TEMP.ORA
[oracle@ru-mow-melon ORCL]$ /bin/rm TEMP.ORA
[oracle@ru-mow-melon ORCL]$ ls *.ORA
SYS1ORCL.ORA USR1ORCL.ORA
[oracle@ru-mow-melon ORCL]$

3. стартуем
SVRMGR> startup mount;
ORACLE instance started.
Total System Global Area 65548448 bytes
Fixed Size 73888 bytes
Variable Size 11988992 bytes
Database Buffers 51380224 bytes
Redo Buffers 2105344 bytes
Database mounted.

4. Переименовыаем файл:
SVRMGR> alter database rename file '/oracle8i/oradata/ORCL/TEMP.ORA' to '/oracle8i/oradata/TEMP.ORA';
alter database rename file '/oracle8i/oradata/ORCL/TEMP.ORA' to '/oracle8i/oradata/TEMP.ORA'
*
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile or tempfile '/oracle8i/oradata/ORCL/TEMP.ORA'

Так что в этот раз точно, со всеми слэшами.

Какие будут замечания?
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063693
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
условия задачи придуманы вами или Dio? :-))
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063703
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы зря иронизируете. На предложение вернуть базу на место, Dio сказал, что база уже перенесена. Из этого я сделал вывод, что база перенесена безвозвратно и я предлагал ему вариант исходя из этого.
И даже если возможно в его случае вернуть её обратно, уверяю что в жизни бывают случаи, когда приходится делать как я описывал. Это пока не столкнёшься с этим не поймешь.
...
Рейтинг: 0 / 0
Помогите пожалуйста ламеру.
    #32063712
mms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mms
Гость
Про условия задачи Killed верно заметил, но это так к слову...

А по поводу того, что не получилось, не знаю, вот мой протокол:
SVRMGR> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR> startup mount pfile=c:\oracle\ora81\database\initorcl.ora
ORACLE instance started.
Total System Global Area 23973836 bytes
Fixed Size 65484 bytes
Variable Size 7450624 bytes
Database Buffers 16384000 bytes
Redo Buffers 73728 bytes
Database mounted.
-----------
Переношу файл TEMP01.DBF средствами OS
-----------
SVRMGR> alter database rename file 'c:\oracle\ora81\database\temp01.dbf' to 'c:\
oracle\ora81\database\archive\temp01.dbf';
Statement processed.
SVRMGR> alter database open;
Statement processed.
SVRMGR> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR> startup pfile=c:\oracle\ora81\database\initorcl.ora
ORACLE instance started.
Total System Global Area 23973836 bytes
Fixed Size 65484 bytes
Variable Size 7450624 bytes
Database Buffers 16384000 bytes
Redo Buffers 73728 bytes
Database mounted.
Database opened.
SVRMGR>exit

У меня OS Win2000, у тебя Linux, может там копировать надо как-то по особому.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите пожалуйста ламеру.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]