更改数据库SID [转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3497 | 回复: 0   主题: 更改数据库SID [转帖]        下一篇 
Gavin
注册用户
等级:少校
经验:878
发帖:130
精华:1
注册:2011-7-21
状态:离线
发送短消息息给Gavin 加好友    发送短消息息给Gavin 发消息
发表于: IP:您无权察看 2011-8-8 9:27:41 | [全部帖] [楼主帖] 楼主

转自:http://bbs.chinaunix.net/viewthread.php?tid=547010&extra=page%3D5%26amp%3Bfilter%3Ddigest

在oracle9i中测试通过
案例: 旧数据库(OLDDB)
文件存放(data files,redo files,control files,temp files, undo files)目录是(/u01/OLDDB)
dump文件目录是(/u01/dump)
新数据库(NEWDB)
文件存放(data files,redo files,control files,temp files, undo files)目录是(/u02/NEWDB)
dump文件目录是(/u02/dump)

1. 生成旧数据库初始化参数文件(init{SID}.ora)和文本格式的控制文件(control.txt)

alter database backup controlfile to trace as '/tmp/control.txt'
create pfile from spfile


2. 关闭旧数据库

3. 将旧数据库存放文件和dump的目录移动到新数据库存放文件和dump的目录(如果不更改存放的目录可以不执行该步骤)

mv /u01/OLDDB/u02/NEWDB
mv /u01/dump/u02/dump


4. 进入$ORACLE_HOME/dbs目录,拷贝OLDDB的pfile成NEWDB的pfile,同时修改NEWDB的pfile文件.

cd $ORACLE_HOME/dbs
cp initOLDDB.ora initNEWDB.ora


修改initNEWDB.ora文件
a. db_name和instance_name参数更改成新数据库的名称(NEWDB)
b. background_dump_desc,core_dump_desc和user_dump_desc参数所指定存放新数据库存放dump信息的目录(/u02/dump)
c. control_files参数所指定存放新数据库的控制文件目录及名称('/u02/NEWDB/control01.ctl','/u02/NEWDB/control02.ctl')

5. 编辑control.txt文件,新生成newdb.sql和newdb1.sql文件
拷贝control.txt文件中以下行到/tmp/newdb.sql文件中

---------------
CREATE CONTROLFILE REUSE DATABASE "OLDDB" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/u01/OLDDB/redo01.log' SIZE 10M,
GROUP 2 '/u01/OLDDB/redo02.log' SIZE 10M,
...
GROUP n '/u01/OLDDB/redo0n.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/u01/OLDDB/system01.dbf',
'/u01/OLDDB/undotbs01.dbf',
'/u01/OLDDB/indx01.dbf',
'/u01/OLDDB/tools01.dbf',
'/u01/OLDDB/users01.dbf',
'/u01/OLDDB/xdb01.dbf',
...
'/u01/OLDDB/filename.dbf'
CHARACTER SET ZHS16GBK
;
-------------


并修改/tmp/newdb.sql文件

a. REUSE ->; SET
b. OLDDB ->; NEWDB


c. 存放目录 /u01/OLDDB ->; /u02/NEWDB(如果不更改存放的目录可以不执行该步骤)
更改后/tmp/newdb.sql文件内容如下

---------------
CREATE CONTROLFILE SET DATABASE "NEWDB" RESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/u02/NEWDB/redo01.log' SIZE 10M,
GROUP 2 '/u02/NEWDB/redo02.log' SIZE 10M,
...
GROUP n '/u02/NEWDB/redo0n.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/u02/NEWDB/system01.dbf',
'/u02/NEWDB/undotbs01.dbf',
'/u02/NEWDB/indx01.dbf',
'/u02/NEWDB/tools01.dbf',
'/u02/NEWDB/users01.dbf',
'/u02/NEWDB/xdb01.dbf',
...
'/u02/NEWDB/filename.dbf'
CHARACTER SET ZHS16GBK
;
-------------


拷贝control.txt文件中以下行到/tmp/newdb1.sql文件中

-------------
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/OLDDB/temp01.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
...
ALTER TABLESPACE TEMPn ADD TEMPFILE '/u01/OLDDB/tempn.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-------------


并修改/tmp/newdb.sql文件
a. 存放目录 /u01/OLDDB ->; /u02/NEWDB(如果不更改存放的目录可以不执行该步骤)
更改后/tmp/newdb1.sql文件内容如下

-------------
ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/NEWDB/temp01.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
...
ALTER TABLESPACE TEMPn ADD TEMPFILE '/u02/NEWDB/tempn.dbf'
SIZE 524288000 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
-------------


6. 删除新数据库pfile文件(initNEWDB.ora)中control_files参数所指定的控制文件.

rm /u02/NEWDB/*.ctl


7. 启动新数据库(NEWDB)到nomount状态,使用initNEWDB.ora参数文件

startup nomount pfile=?/dbs/initNEWDB.ora


8. 执行/tmp/newdb.sql文件,重建控制文件

@/tmp/newdb.sql


9. 使用resetlogs选项打开新数据库(NEWDB)

alter database open resetlogs


10. 执行/tmp/newdb1.sql文件,重建临时表空间

@/tmp/newdb2.sql


11. 查看v$database和v$instance视图,是不是数据库名称已更改




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论