ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 亲测oracle10g更改数据库db_name和sid

亲测oracle10g更改数据库db_name和sid

原创 Linux操作系统 作者:SingleLove 时间:2008-07-03 13:28:34 0 删除 编辑
前面利用rman移植正式数据库到测试服务器打算做测试数据库,但是数据库名和sid都同正式库一样所以今天把测试库的dbname和sid进行了更改。这个更改比较麻烦(所以用rman做数据库移植确实不值得推荐),过程如下:

1、改数据db_name
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 1073741824 bytes
Fixed Size                  1253124 bytes
Variable Size             436207868 bytes
Database Buffers          629145600 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。

SQL> host nid target=sys/admin@zs dbname=zstest;

DBNEWID: Release 10.2.0.1.0 - Production on 星期四 7月 3 15:25:38 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接数据库 ZS (DBID=3080925109)

已连接服务器版本 10.2.0

数据库中的控制文件数:
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL01.CTL
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL02.CTL
    D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL03.CTL
    E:\ORADATA\ZS\CONTROL04.CTL

是否将数据库 ID 和数据库名 ZS 更改为 ZSTEST? (Y/[N]) => y

操作继续进行
将数据库 ID 从 3080925109 更改为 1991215988
将数据库名从 ZS 更改为 ZSTEST
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL01.CTL - 已修改
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL02.CTL - 已修改
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL03.CTL - 已修改
    控制文件 E:\ORADATA\ZS\CONTROL04.CTL - 已修改
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\SYSTEM01.DBF - dbid 已更改, 已
写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\UNDOTBS01.DBF - dbid 已更改, 已
写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\SYSAUX01.DBF - dbid 已更改, 已
写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\USERS01.DBF - dbid 已更改, 已写
入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\EXAMPLE01.DBF - dbid 已更改, 已
写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\ZSKJ_DATA01.DBF - dbid 已更改,
已写入新名称
    数据文件 E:\ORADATA\ZS\ZSKJ_DATA02.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\ZS_DATA01.DBF - dbid 已更改, 已
写入新名称
    数据文件 E:\ORADATA\ZS\ZS_DATA02.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\ZS_IDXDATA01.DBF - dbid 已更改,
 已写入新名称
    数据文件 E:\ORADATA\ZS\ZS_IDXDATA02.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\ZSKJ_IDXDATA01.DBF - dbid 已更
改, 已写入新名称
    数据文件 E:\ORADATA\ZS\ZSKJ_IDXDATA02.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\TEMP01.DBF - dbid 已更改, 已写
入新名称
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL01.CTL - dbid 已更改, 已
写入新名称
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL02.CTL - dbid 已更改, 已
写入新名称
    控制文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZS\CONTROL03.CTL - dbid 已更改, 已
写入新名称
    控制文件 E:\ORADATA\ZS\CONTROL04.CTL - dbid 已更改, 已写入新名称
    实例关闭

数据库名已更改为 ZSTEST。
修改参数文件并在重新启动前生成新的口令文件。
数据库 ZSTEST 的数据库 ID 已更改为 1991215988。
此数据库的所有以前的备份和归档重做日志均不可用。
数据库无法识别恢复区中以前的备份和归档日志。
数据库已关闭, 用 RESETLOGS 选项打开数据库。
已成功更改数据库名和 ID。
DBNEWID - 已成功完成。

\\停库再重启
SQL> shutdown immediate
ORA-03113: 通信通道的文件结束
SQL> conn sys/admin@zs as sysdba
已连接到空闲例程。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 1073741824 bytes
Fixed Size                  1253124 bytes
Variable Size             436207868 bytes
Database Buffers          629145600 bytes
Redo Buffers                7135232 bytes
ORA-01103: ?????????? ''ZSTEST'' ?? ''ZS''


SQL> alter system set db_name=zstest scope=spfile;

系统已更改。

SQL> shutdown immediate;
ORA-01507: ??????


ORACLE 例程已经关闭。

\\以resetlogs的方式重新开启数据库
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 1073741824 bytes
Fixed Size                  1253124 bytes
Variable Size             436207868 bytes
Database Buffers          629145600 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> alter database open resetlogs;

数据库已更改。

\\查看
SQL> select dbid,name from v$database;

      DBID NAME
---------- ---------
1991215988 ZSTEST

2、更改数据库sid
1)windows下停止所有数据库服务

2)删除旧实例创建新实例

C:\Documents and Settings\Administrator>oradim -delete -sid zs
实例已删除。

C:\Documents and Settings\Administrator>oradim -new -sid zstest
实例已创建。

C:\Documents and Settings\Administrator>set oracle_sid=zstest

3)将原密码文件pwdzs.ora改为pwdzstest.ora

4)修改spfile里实例信息(包含路径里的zs改为zstest,OS目录zs改为zstest)
//如果此处不修改路径中的zs到zstest则后面应无需重建控制文件
C:\Documents and Settings\Administrator>sqlplus sys/admin as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 7月 3 16:23:16 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到空闲例程。

//先从spfile创建pfile

SQL> create pfile='D:\oracle\product\10.2.0\admin\zs\pfile\init080703.ora' from
spfile='D:\oracle\product\10.2.0\db_1\database\SPFILEZS.ORA';

文件已创建。

//调整pfile里的参数后再创建spfile
SQL> create spfile='D:\oracle\product\10.2.0\db_1\database\SPFILEZSTEST.ORA' fro
m pfile='D:\oracle\product\10.2.0\admin\zstest\pfile\init080703.ora';

文件已创建。

5)更改listener.ora和tnsnames.ora并重启listener

直接编辑这两个文件将里面的sid_name、dbname和service_name都改为zstest

6)因为更改了OS数据库目录路径(zs改为zstest)所以需要重建controlfiles
//创建控制文件的脚本可以再旧数据库的时候使用如下语句获得:
alter database backup controlfile to trace as 'd:\controlfile.txt';
再做修改即可使用。
SQL> CREATE CONTROLFILE REUSE DATABASE "ZSTEST" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 (
  9      'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\REDO01A.LOG',
 10      'E:\ORADATA\ZSTEST\REDO01B.LOG'
 11    ) SIZE 250M,
 12    GROUP 2 (
 13      'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\REDO02A.LOG',
 14      'E:\ORADATA\ZSTEST\REDO02B.LOG'
 15    ) SIZE 250M,
 16    GROUP 3 (
 17      'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\REDO03A.LOG',
 18      'E:\ORADATA\ZSTEST\REDO03B.LOG'
 19    ) SIZE 250M
 20  DATAFILE
 21    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\SYSTEM01.DBF',
 22    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\UNDOTBS01.DBF',
 23    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\SYSAUX01.DBF',
 24    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\USERS01.DBF',
 25    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\EXAMPLE01.DBF',
 26    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\ZSKJ_DATA01.DBF',
 27    'E:\ORADATA\ZSTEST\ZSKJ_DATA02.DBF',
 28    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\ZS_DATA01.DBF',
 29    'E:\ORADATA\ZSTEST\ZS_DATA02.DBF',
 30    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\ZS_IDXDATA01.DBF',
 31    'E:\ORADATA\ZSTEST\ZS_IDXDATA02.DBF',
 32    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST\ZSKJ_IDXDATA01.DBF',
 33    'E:\ORADATA\ZSTEST\ZSKJ_IDXDATA02.DBF'
 34  CHARACTER SET ZHS16GBK;

控制文件已创建。

SQL> alter database open resetlogs;

数据库已更改。

//重建完控制文件记得要重新启用temp表空间,再trace的控制文件脚本里有提示
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZSTEST
\TEMP01.DBF'
  2       SIZE 20971520  REUSE AUTOEXTEND ON NEXT 524288000  MAXSIZE 32767M;

表空间已更改。

3、重建em
先想到直接emca -config dbcontrol db -repos recreate来重建em,但是出错,查看错误日志文件信息如下:

Check if repos user already exists.

原值 6:    WHERE username=UPPER('&EM_REPOS_USER');
新值 6:    WHERE username=UPPER('SYSMAN');
原值 8:   IF ( '&EM_CHECK_TYPE' = 'EXISTS') THEN
新值 8:   IF ( 'NOT_EXISTS' = 'EXISTS') THEN
原值   11:  raise_application_error(-20000, '&EM_REPOS_USER does not exists..');
新值   11:  raise_application_error(-20000, 'SYSMAN does not exists..');
原值   14:   ELSIF ( '&EM_CHECK_TYPE' = 'NOT_EXISTS' ) THEN
新值   14:   ELSIF ( 'NOT_EXISTS' = 'NOT_EXISTS' ) THEN
原值   17:  raise_application_error(-20001, '&EM_REPOS_USER already exists..');
新值   17:  raise_application_error(-20001, 'SYSMAN already exists..');
原值   21:  raise_application_error(-20002, 'Invalid Check type &EM_CHECK_TYPE');
新值   21:  raise_application_error(-20002, 'Invalid Check type NOT_EXISTS');

Create SYSMAN user.

没有错误。
DECLARE
*
第 1 行出现错误:
ORA-04042: 过程, 函数, 程序包或程序包体不存在
ORA-06512: 在 line 11

改变方式,先用emca -deconfig dbcontrol db -repos drop删除em,然后尝试用dbca来重建em,顺利完成。(可能是因为注册表中原em服务器项没删除的原因,重建em后端口改为5500)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/755829/viewspace-563051/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-01-09

  • 博文量
    6
  • 访问量
    12992