ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 11g Oracle DBNEWID的改进

11g Oracle DBNEWID的改进

原创 Linux操作系统 作者:yangtingkun 时间:2009-04-07 21:38:15 0 删除 编辑

11g中,DBNEWID工具也做了一些改进使用上更加的方便。

 

 

看一下11gDBNEWID工具的操作:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4 7 17:11:53 2009

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


连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select dbid, name from v$database;

      DBID NAME
---------- ------------------
 835491368 TEST11G

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
TEST11G.NETDB

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL> startup mount
ORACLE
例程已经启动。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
断开

下面执行NID命令:

bash-3.00$ nid target=/ dbname=new11g

DBNEWID: Release 11.1.0.6.0 - Production on 星期三 4 8 00:52:41 2009

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

已连接数据库 TEST11G (DBID=835491368)

已连接服务器版本 11.1.0

数据库中的控制文件数:
    /data/oracle/oradata/test11g/control01.ctl
    /data/oracle/oradata/test11g/control02.ctl
    /data/oracle/oradata/test11g/control03.ctl


以下数据文件是只读的:
    /data/oracle/oradata/test11g/test01.dbf (6)
此实用程序必须能够写入这些文件。

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

操作继续进行
将数据库 ID 835491368 更改为 2655088921
将数据库名从 TEST11G 更改为 NEW11G
   
控制文件 /data/oracle/oradata/test11g/control01.ctl - 已修改
   
控制文件 /data/oracle/oradata/test11g/control02.ctl - 已修改
   
控制文件 /data/oracle/oradata/test11g/control03.ctl - 已修改
   
数据文件 /data/oracle/oradata/test11g/system01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/sysaux01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/undotbs01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/users01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/yangtk01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/test01.dbf - dbid 已更改, 已写入新名称
   
数据文件 /data/oracle/oradata/test11g/temp01.dbf - dbid 已更改, 已写入新名称
   
控制文件 /data/oracle/oradata/test11g/control01.ctl - dbid 已更改, 已写入新名称
   
控制文件 /data/oracle/oradata/test11g/control02.ctl - dbid 已更改, 已写入新名称
   
控制文件 /data/oracle/oradata/test11g/control03.ctl - dbid 已更改, 已写入新名称
   
实例关闭

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

可以看到,执行完NID命令后会自动关闭数据库,而9i中是需要手工关闭的,而且11g的提示信息更加详细。

11galert文件中,DBNEWID工具会添加必要的信息来说明所进行的修改:

*** DBNEWID utility started ***
DBID will be changed from 835491368 to new DBID of 2655088921 for database TEST11G
DBNAME will be changed from TEST11G to new DBNAME of NEW11G
Starting datafile conversion
Setting recovery target incarnation to 1
Datafile conversion complete
Database name changed to NEW11G.
Modify parameter file and generate a new password file before restarting.
Database ID for database NEW11G changed to 2655088921.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open with RESETLOGS option.
Succesfully changed database name and ID.
*** DBNEWID utility finished succesfully ***

而在9i中则看不到任何的信息。

而且虽然Oracle提示需要重现生成新的密码文件,但是在11g不生成新的密码文件仍然可以正常登陆,而9i中则会报错ORA-01991错误:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 4 8 01:31:54 2009

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

已连接到空闲例程。

SQL> startup nomount
ORACLE
例程已经启动。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
SQL> alter system set db_name = new11g scope = spfile;

系统已更改。

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


ORACLE
例程已经关闭。
SQL> startup mount
ORACLE
例程已经启动。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
SQL> alter database open resetlogs;

数据库已更改。

最后在11g中,GLOBAL_NAME也会自动修改,而9i还必须手工的修改GLOBAL_NAME

SQL> select dbid, name from v$database;

      DBID NAME
---------- ------------------
2655088921 NEW11G

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
NEW11G.NETDB

当然这些改进是10g11g两个版本的改进,而不仅仅是11g一个版本的增强。

 

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

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10468726