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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/755829/viewspace-563051/