[ОТВЕТИТЬ]
06.07.2007 18:05
ron
 
Приобрели дисковый массив и необходимо перенести на него существующую базу.
Oracle живёт в
D:\oracle
база в
D:\oracle\oradata\DATABASENAME
Хочу Oracle оставить там где и сейчас, а базу перенести на
F:\DATABASENAME
Задача вроде простая. Если бы это был mySQL - то это одну строчку подправить.
Попробовал на тестовой базе в Enterprise Manager Console в Storage>Tablespaces сперва опустил табличное пространство USERS, затем в системе один из файлов переместил, новый путь в менеджере указал, обратно всё поднял -- работает.
Значит таким способом можно все файлы последовательно в пространствах DRSYS INDX SYSTEM TEMP TOOLS UNDO USERS XDB перенести в другой каталог.
В таком случае непонятно как быть с CONTROLFILE, в менеджере явным образом пути к этим файлам поменять нельзя. Наверное, что-то делаю не так. Как правильно?
06.07.2007 21:51
OlegON
 
На самом деле делается все значительно проще.
1) Переносим требуемые файлы базы при остановленном сервисе базы, запускаем сервис и делаем
Цитата:
alter database rename datafile ... to ...;
можно сразу скриптик подготовить, но я обычно имею дело с незнакомым бекапом или ленюсь :) Поэтому делаю
Цитата:
startup force
база пытается запуститься, ругается на какой-то файл по старому пути, я нахожу этот файл в том месте, куда свалил бекап и делаю rename datafile, перетащив имя файла через буфер. Быстро и удобно. Забыл упомянуть, что делается это после подключения через
Цитата:
sqlplus 'sys/passwd as sysdba'
2) Для переноса контрольников необходимо поменять их местоположение в файле инициализации (в 9ке придется его создать и запустить с ним, сохранив изменения в spfile)
но, как говорил неоднократно ранее, предпочитаю разрозненные диски массиву. Удобнее рассредотачивать данные.
И второе, очень не рекомендую привыкать к интерфейсу EMC, это баловство иногда помогает, когда не можешь вспомнить команду, но рассматривать его нужно лишь как вспомогательное средство, которое иногда отсутствует или глючит.
P.S. Блин, ты ж вроде по нашей тематике? :) Я уж решил, что со стороны человек пришел. Посмотри в доке администратора "Восстановление из бекапа", оно хоть и для 8i писано, но кое что полезное там есть.
09.07.2007 07:38
reddevil
 
А я бы если конечно баз много и на OFA не наплевать просто массив подмонтировал как NTFS том.
А через EMConsole файлы переименовывать это конечно зачот :)
28.04.2008 03:36
Stels
 
Цитата:
OlegON На самом деле делается все значительно проще.
...
Посмотри в доке администратора "Восстановление из бекапа", оно хоть и для 8i писано, но кое что полезное там есть.
А можно ли для 9.2.0.8.0 оракла чуть поподробнее (СМ 1.024.6 sp2).

Задача стоит такая же ... но в доке только для 8 версии оракла написано ...
Поиском находится еще только одна ветка на эту тему:
http://www.olegon.ru/showthread.php?...E7%E0%F6%E8%E8
Прочитал, но не понял как это все срастить.

Если делать по доке, то SVRMGRL не находится (я так понял это для 8)

Может дока у кого пошаговая есть?
Буду премного благодарен.
28.04.2008 07:12
Mike
 
Вообщем делаешь так:
1) останавливаешь сервис базы, копируешь файлы базы в нужное место
2) меняешь в файле init.ora путь к файлам, допустим если только поменялась буква диска то меняешь e:\ на d:\ (файл init.ora лежит в \oracle\имя_базы\admin\pfile\), запускаешь сервис базы.
3) затем запускаешь cmd.exe и пишешь:
set oracle_sid=имя_базы
set nls_lang=american_america.cl8mswin1251
sqlplus /nolog
connect sys/пароль_sys as sysdba
4) затем переименовываешь файлики как писал Олег:
alter database rename datafile 'старый путь' to 'новый путь';

p.s. если раньше на компе не было создано ни одной базы, то рекомендуется создать её через Database Configuration Assistant, а затем уже заменить файлы и переименовать их.
28.04.2008 10:41
Stels
 
Цитата:
Mike Вообщем делаешь так:
Спасибо. Ночером буду пробовать снова.
28.04.2008 12:49
vdm
 
Цитата:
Stels Спасибо. Ночером буду пробовать снова.
Только насколько помню, файлы табличного пространства temp переименовать не даст.
Их можно drop и создать новые в нужном месте.
28.04.2008 13:02
Stels
 
Цитата:
vdm Только насколько помню, файлы табличного пространства temp переименовать не даст.
Их можно drop и создать новые в нужном месте.
я правильно понимаю?
ALTER DATABASE TEMPFILE 'tempfilename' DROP;
а потом
ALTER TABLESPACE TEMP ADD TEMPFILE 'tempfilename'
?
28.04.2008 13:27
Mike
 
Да, все верно, temp переименовывать не даст, делай как написал, сначало drop потом add.
28.04.2008 13:49
reddevil
 
Цитата:
Mike Да, все верно, temp переименовывать не даст, делай как написал, сначало drop потом add.
Не верно. Если файл существует то можно и переименовать.
28.04.2008 17:46
Stels
 
ковырятся сегодня не дают, буду завтра/послезавтра
28.04.2008 22:19
vdm
 
Цитата:
reddevil Не верно. Если файл существует то можно и переименовать.
Неа, не дает. По крайней мере для 9i и 'Locally managed temporary tablespaces' (которые делаются по умолчанию)
29.04.2008 06:16
reddevil
 
Цитата:
vdm Неа, не дает. По крайней мере для 9i и 'Locally managed temporary tablespaces' (которые делаются по умолчанию)
Да, извиняюсь, девятку не учел. Спасибо за тычек носом в доку. :)
03.05.2008 23:53
Stels
 
Всем спасибо! Все получилось.
Но были допущены неточности...
Я опишу что в итоге делал

Цитата:
Mike Вообщем делаешь так:
1) останавливаешь сервис базы, копируешь файлы базы в нужное место
2) меняешь в файле init.ora путь к файлам, допустим если только поменялась буква диска то меняешь e:\ на d:\ (файл init.ora лежит в \oracle\имя_базы\admin\pfile\), запускаешь сервис базы.
3) затем запускаешь cmd.exe и пишешь:
set oracle_sid=имя_базы
set nls_lang=american_america.cl8mswin1251
sqlplus /nolog
connect sys/пароль_sys as sysdba
4)startup pfile='d:\oracle\admin\имя_базы\pfile\init.ora';
тут он мне ругнулся что-то ...
5) вместо datafile нужно было file .Т.е. :
переименовываешь файлики как писал Олег:
alter database rename FILE 'старый путь' to 'новый путь';
6) дропаем темпы
ALTER DATABASE TEMPFILE 'tempfilename' DROP;
7) добавляем темп
ALTER TABLESPACE TEMP ADD TEMPFILE 'tempfilename';
8)открываем базу
ALTER DATABASE OPEN;
9)пересоздаем файл инициализации
create spfile from pfile='D:\oracle\admin\имя_базы\pfile\init.ora';
Иначе при следующем старте база не стартует. Как я понял, будет искать все по старым путям.

Ну вот примерно так.
Ещё раз Всем Огромный Спасиб!
24.02.2009 12:45
Atari
 
Цитата:
Stels Всем спасибо! Все получилось.
Но были допущены неточности...
Я опишу что в итоге делал


4)startup pfile='d:\oracle\admin\имя_базы\pfile\init.ora';
тут он мне ругнулся что-то ...
5) вместо datafile нужно было file .Т.е. :
переименовываешь файлики как писал Олег:
alter database rename FILE 'старый путь' to 'новый путь';
6) дропаем темпы
ALTER DATABASE TEMPFILE 'tempfilename' DROP;
7) добавляем темп
ALTER TABLESPACE TEMP ADD TEMPFILE 'tempfilename';
8)открываем базу
ALTER DATABASE OPEN;
9)пересоздаем файл инициализации
create spfile from pfile='D:\oracle\admin\имя_базы\pfile\init.ora';
Иначе при следующем старте база не стартует. Как я понял, будет искать все по старым путям.

Ну вот примерно так.
Ещё раз Всем Огромный Спасиб!
Здравствуйте. Делаю все по инструкции. Оракл 9. Переношу базу с диска С:\ на D:\ . Вылазиет следующее:

C:\Documents and Settings\Администратор>set oracle_sid=ApeksCO

C:\Documents and Settings\Администратор>set nls_lang=american_america.cl8mswin12
51

C:\Documents and Settings\Администратор>sqlplus /nolog

SQL*Plus: Release 9.2.0.7.0 - Production on Tue Feb 24 12:41:32 2009

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect sys/qqq as sysdba
Connected to an idle instance.
SQL> startup pfile='D:\oracle\admin\ApeksCO\pfile\init.ora';
ORACLE instance started.

Total System Global Area 822682768 bytes
Fixed Size 455824 bytes
Variable Size 192937984 bytes
Database Buffers 629145600 bytes
Redo Buffers 143360 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\APEKSCO\SYSTEM01.DBF'
ORA-01207: file is more recent than controlfile - old controlfile


Что я делал не так?
24.02.2009 13:08
OlegON
 
Какой-то из файлов *.ctl взял не оттуда.
24.02.2009 14:47
Atari
 
Цитата:
OlegON Какой-то из файлов *.ctl взял не оттуда.
Спасибо, но в чем было дело так и не понял. Просто скопировал второй раз те же файлы и все запустилось.

А что это значит? И нужно ли это делать, если база запустилась?

SQL> startup mount pfile='D:\oracle\admin\ApeksCO\pfile\init.ora';
ORACLE instance started.

Total System Global Area 822682768 bytes
Fixed Size 455824 bytes
Variable Size 192937984 bytes
Database Buffers 629145600 bytes
Redo Buffers 143360 bytes
Database mounted.
SQL> alter database rename file 'C:\oracle\oradata\ApeksCO' to 'D:\oracle\oradata\ApeksCO';
alter database rename file 'C:\oracle\oradata\ApeksCO' to 'D:\oracle\oradata\ApeksCO'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile, or tempfile
"C:\oracle\oradata\ApeksCO"
24.02.2009 14:50
Mtirt
 
Расширение у файла куда делось?
Да и имя вызывает подозрение...
Цель этого действа (alter database file) показать что старый файл с данными теперь лежит на другом месте. Вот и надо указывать имена перенесенных файлов, а не имя базы.
24.02.2009 14:53
Atari
 
А можно как-нибудь указать список файлов, а не по одному?
24.02.2009 14:57
Mtirt
 
Нельзя.
Можно только создать заранее скрипт, в котором последовательно прописать команды для каждого файла.
26.02.2009 12:57
Atari
 
Здравтсвуйте. А что сие значит?
SQL> startup pfile='D:\oracle\admin\ApeksCO\pfile\init.ora'
ORACLE instance started.

Total System Global Area 823207056 bytes
Fixed Size 455824 bytes
Variable Size 192937984 bytes
Database Buffers 629145600 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'D:\ORACLE\APEKSCO\SYSTEM01.DBF'

Я уже 3-й день пытаюсь просто перенести базу с C:\ на D:\. Что-то как-то не получается.
26.02.2009 13:05
OlegON
 
Небыстро ты пытаешься.
вводи
Цитата:
recover database;
и вывод сюда
26.02.2009 13:08
Mtirt
 
Цитата:
Atari Здравтсвуйте. А что сие значит?
SQL> startup pfile='D:\oracle\admin\ApeksCO\pfile\init.ora'
ORACLE instance started.

Total System Global Area 823207056 bytes
Fixed Size 455824 bytes
Variable Size 192937984 bytes
Database Buffers 629145600 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'D:\ORACLE\APEKSCO\SYSTEM01.DBF'

Я уже 3-й день пытаюсь просто перенести базу с C:\ на D:\. Что-то как-то не получается.
В 99% случаев это значит, что база не была остановлена перед копированием файлов. Или ты не дождался её остановки.
26.02.2009 13:13
Atari
 
Цитата:
OlegON Небыстро ты пытаешься.
вводи

и вывод сюда
Да я пока тренируюсь, мне это предстоит, вывод:

SQL> recover database
ORA-00283: recovery session canceled due to errors
ORA-00322: log 1 of thread 1 is not current copy
ORA-00312: online log 1 thread 1: 'D:\ORACLE\APEKSCO\REDO01.LOG'


Цитата:
Mtirt В 99% случаев это значит, что база не была остановлена перед копированием файлов. Или ты не дождался её остановки.
Поробую потом сделать все сначала.
26.02.2009 13:15
akonev
 
ну значит, все-таки не остановил.
стопани базу и останови сервис базы.
потом уже копируй
26.02.2009 14:19
Atari
 
Я наверное застрелюсь. У меня ничего не получается. :( Есть у кого-нибудь интсрукция как переносить базу с одного диска на другой? По приведенной тут у меня ничего не выходит.
26.02.2009 14:27
Dim
 
в руководстве сисадмина все написано. использовалось много раз.
Вся документация лежит на фтп С+
26.02.2009 15:42
OlegON
 
Цитата:
Atari Я наверное застрелюсь. У меня ничего не получается. :( Есть у кого-нибудь интсрукция как переносить базу с одного диска на другой? По приведенной тут у меня ничего не выходит.
"Ничего не выходит", это когда запор.
А у тебя что-то конкретное не получается, просто ты не говоришь что, а мы поэтому и подсказать не можем.
Опции темы


Часовой пояс GMT +3, время: 13:23.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.