|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Сервер WinNT4. Стоит база Oracle на диске E:\. Нужно базу перенести на диск F:\ , где меняется путь к базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2002, 10:09 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
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; Это вобщем вкратце. А вообще обязательно сделай холодную копию вначале. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2002, 10:27 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Есть-ли способ запуска базы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2002, 12:34 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Запустить можно конечно. Но контрольный файл всё равно надо пересоздавать, потому-что, он контролирует расположение всех файлов базы данных. Если реальное распложение не будет совпадать с информацией в контрольном файле, то база просто не запуститься. Если невозможно получить текст команды для создания из старой базы через команду, тогда можно попытаться подобрать параметры. Обычно параметры: 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 пункта ругнулся, это плохо. Дальше уже сложнее. Еще раз хочу повторить - обязательно надо сделать копию. Потомучто, если не получится, то потом еще труднее будет восстановить. Лучше начать с исходной. Если что, пишите. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2002, 15:54 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Кстати, есть волшебная комманда "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, тут недавно писали. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 01:43 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
"Кстати, есть волшебная комманда "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 не проблема указать другой путь, проблема именно в том что файлы базы данных перенесли. Прежде чем глупость писать, лучше подумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 08:58 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
2Dio shutdown immediate /*+ здесь скопировать файлы базы на нужный диск */ startup mount alter database rename file .... to ... alter database rename file .... to ... ...... alter database open; ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 11:40 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Ты уверен что startup mount пройдёт? Ведь на старом месте файлов уже нет, что он будет монтировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 12:57 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Исходный топик от Dio: "Сервер WinNT4. Стоит база Oracle на диске E:\. Нужно базу перенести на диск F:\ , где меняется путь к базе?" Так почему же их нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 13:00 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
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, что сохранит преемственность бекапов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 13:32 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Не знаю, может я и вправду не правильно понял. Но человек во втором сообщении сказал, что "Так случилось, что каталог уже перенесен". Я это понял так, что диска 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. Убедите меня что я не прав ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:03 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
И еще по поводу 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. Прошу обратить внимание на последнюю строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:12 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Привожу описание (инструкцию) из "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. Хочу просто добавить, что на практике все это работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:32 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Я почему то всегда считал что так нельзя как вы говорите. Решил проверить на практике. 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> Что я делаю не правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:41 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
>Do not use this clause when the database is mounted. >Прошу обратить внимание на последнюю строку. Ну что ж, действительно баг в документации. Однако это показывает, что даже письменные источники надо воспринимать критически и проверять на практике ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:45 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Так как насчёт моего примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:49 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
нужно самому скопировать datafile или redo в нужный каталог и только после этого давать команду alter database rename file '' to '' Oracle за вас копировать (физические) файлы не будет. Я кстати совсем недавно так и сделал (8.1.6 W2000S) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:50 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
> SVRMGR> alter database rename > file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' > to '/oracle8i/oradata/TEMPORARY.ORA'; может там просто слешик потерялся, а? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:54 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
В инструкции ничего не говорится о удалении файлов со старого места. Вы должны файл СКОПИРОВАТЬ на новое место, сделать шаги по переименованию, открыть базу. И только потом можно удалять старый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:55 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
"нужно самому скопировать 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> Пожалуйста глупые советы больше не давать ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 14:59 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
"SVRMGR> alter database rename > file 'oracle8i/oradata/ORCL/TEMPORARY.ORA' > to '/oracle8i/oradata/TEMPORARY.ORA'; может там просто слешик потерялся, а? ;)" Вполне возможно, щас проверю еще раз ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 15:00 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
"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' Так что в этот раз точно, со всеми слэшами. Какие будут замечания? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 15:47 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
условия задачи придуманы вами или Dio? :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 16:01 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Вы зря иронизируете. На предложение вернуть базу на место, Dio сказал, что база уже перенесена. Из этого я сделал вывод, что база перенесена безвозвратно и я предлагал ему вариант исходя из этого. И даже если возможно в его случае вернуть её обратно, уверяю что в жизни бывают случаи, когда приходится делать как я описывал. Это пока не столкнёшься с этим не поймешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 16:14 |
|
Помогите пожалуйста ламеру.
|
|||
---|---|---|---|
#18+
Про условия задачи 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, может там копировать надо как-то по особому. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2002, 16:25 |
|
|
start [/forum/topic.php?fid=52&fpage=2835&tid=1992829]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
119ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 477ms |
0 / 0 |