当前位置:首页 > 芯闻号 > 充电吧
[导读]环境描述: 源数据库 Oracle服务器版本:  Oracle9.2.0.8 数据库名称 db_name = oradb  instance_name=oradb 操作系统版本: windows 20

环境描述:

源数据库

Oracle服务器版本:  Oracle9.2.0.8

数据库名称 db_name = oradb  instance_name=oradb

操作系统版本: windows 2003

实例安装位置: $oracle_base = e:/oracle

 

目标数据库

Oracle服务器版本:  Oracle9.2.0.8

数据库名称 db_name = orcl  instance_name=orcl

操作系统版本: windows xp

实例安装位置: $oracle_base = d:/oracle

 

执行步骤. 一, 数据库名称和sid要求相同

1.1 数据库名称的相关概念

一, 数据库名

数据库名是数据库的身份证号码, 用于表示一个数据库. 在参数文件(?/database/initSID.ora)中用DB_NAME表示.

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='oradb'

*.instance_name='oradb'

数据库名是在安装数据库, 创建新的数据库, 创建数据控制文件, 修改数据库结构, 备份与恢复数据库时都需要使用到的.

查询数据库名称:

n         Select name, dbid from v$database;

u       Show parameter db_name;

u       查看参数文件initsid.ora

二, 数据库实例名

数据库实例名是用户和操作系统进行联系的标识, 也就是说数据库和操作系统之间的交互使用的是数据库实例名.

实例名在参数文件中也存在, 该参数为instance_name.

数据库名和实例名可以相同也可以不同, 在一般情况下, 数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中, 数据库名和实例名是一对多的关系.

查询当前数据库实例名.

Ø         使用sql语句. Select instance_name from v$instance;

Ø         使用show命令. Show parameter instance_name;

Ø         查看参数文件initsid.ora.

数据库实例名和oracle_sid两者都表示oracle实例, 但是有区别的. Instance_name是oracle数据库参数. 而oracle_sid是操作系统的环境变量. Oracle_sid用于于操作系统交互, 也就是说, 从操作系统角度访问实例名, 必须通过oracle_sid.

Oracle_sid和instance_name必须是一致的, 否则用户将会受到一个错误. 在unix平台, 是oracle not available, 在winnt平台, 是tns, 协议适配器错误.

三, 数据库域名与全局数据库名

随着由多个数据库构成的分布式数据库的普及, 单一的db_name表示的数据库命名方式给数据库的管理造成了一定的负担. 因为分布式环境下的数据库名字可能一样, 造成管理上的混乱.

为了解决这种情况, 引入了db_domain参数, 这样在数据库的标识是由db_name和db_domain两个参数共同决定的. 避免了因为数据库重名而造成管理上的混乱.

查询数据库域名.

Ø         使用sql命令 select value from v$parameter where name = ‘db_domain’;

Ø         使用show命令 show parameter domain

Ø         查看参数文件initsid.ora

四, 数据库服务名

该参数是oracle8i新引入的. 在8i之前, 我们用sid来表示数据库的一个实例, 但是在oracle的并行环境中, 一个数据库对应多个实例, 这样就需要多个网络服务名, 设置繁琐. 为了方便并行环境中的设置, 引进了service_name参数. 该参数对应一个数据库, 而不是一个实例. 该参数的初始值为db_name.db_domain, 即等于global_name. 如果数据库有域名, 则数据库服务器名就是全局数据库名; 否则, 数据库服务名与数据库名相同.

查询数据库服务名的方法.

使用sql语句: select value from v$parameter where name = ‘service_name’;

使用show命令: show parameter service_name;

查看参数文件: 在参数文件initsid.ora中查询.

五, 网络服务名

网络服务名, 又称为数据库别名, 是客户端程序访问数据库时需要的配置. 屏蔽客户端如何连接到服务器端的细节, 实现了数据库的位置透明的特性. 网络服务名被记录在tnsnames.ora文件中.

六, 总结

Oracle中各种命名的比较.

名称

查询方式

Db_name

Select name from v$database

Instance_name

Select instance_name from v$instance

Oracle_sid

值和instance_name相同

Db_domain

Select value from v$parameter where name = ‘db_domain’;

Global_name

Db_name.db_dommain

Service_name

Select value from v$parameter where name=’service_name’;

Net_service_name

检查tnsnames.ora文件

 

1.2 修改oracle数据库的db_name和sid

一,用oracle自带的工具nid改数据库名

在本例中,假设原来的数据库名为orcl, 要改成oradb, 原实例名(service_name, instance_name)orcl要改成oradb。

Nid是自带的工具, 在oracle_home/bin目录下, 以下方法假设登陆到需要修改db_name的数据库服务器本地处理。

1, 在mount状态下使用nid修改sid

C:/Documents and Settings/Administrator>sqlplus /nolog

SQL> conn / as sysdba

SQL> shutdown immediate

SQL> startup mount  -- nid需要在mount状态下处理。

SQL> host nid target=/ dbname=oradb

处理过程中需要与用户执行一次交互。

Change database ID and database name ORCL to ORADB? (Y/[N]) => Y

2, 在mount状态下修改db_name

完成上述操作后需要再次启动到mount状态修改参数文件。

SQL> shutdown immediate

SQL> startup mount

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

SQL> shutdown immediate

3, 重建pwdsid.ora文件

Passwd文件通常放在oracle_home/database下, 文件命名形式为pwdsid.ora, sid为实例名(instance_name)

SQL> host orapwd file=D:/oracle/ora92/database/pwdorcl.ora password=sys_47522341 entries=5;

4, 开启数据库(要open resetlogs)

SQL> startup mount

SQL> alter database open resetlogs;

5, 检查修改后的结果

SQL> select name from v$database;

二, 使用oradim工具修改instance_name

执行完步骤一中的操作后, 数据库db_name变为oradb, 但instance_name依然还是orcl。 这个名称需要使用oracle的oradim工具进行修改。

1, 如果是windows系统, 先要将所有的oracle服务关闭, 否则会出错。

2, 将之前的instance_name删除

C:/Documents and Settings/Administrator>oradim -delete -sid orcl

3, 创建密码文件

SQL> host orapwd file=D:/oracle/ora92/database/pwdoradb.ora password=sys_47522341 entries=5;

4, 创建一个新的sid。

C:/Documents and Settings/Administrator>oradim -new -sid oradb

C:/Documents and Settings/Administrator>oradim -new -sid oradb

5, 进入oracle并创建spfile

设置环境变量oracle_sid=oradb

C:/Documents and Settings/Administrator>set oracle_sid = oradb

修改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;

表空间已更改。

二, 镜像迁移数据文件,控制文件以及归档日志文件

2.1 数据文件存储位置

视图 v$datafile;

Select file#, name from v$datafile;

2.2 控制文件存储位置

视图 v$controlfile

Select name from v$controlfile;

2.3 联机重做日志文件存储位置

视图 v$logfile;

Select * from v$logfile;

三, 镜像跟踪文件和警告文件到目标数据库

如果源数据库的安装路径和目标数据库不一致, 则需要在源数据库中先使用spfilesid.ora创建一个initsid.ora, 然后到目标数据库中修改initsid.ora对应文件的配置. 然后再创建一个spfile.ora.

3.1 在源数据库中创建pfile.

SQL> create pfile='E:/oracle/admin/oradb/pfile/initoradb20090922.ora' from spfile='E:/oracle/ora92/database/spfileoradb.ora';

3.2 将跟踪文件和警告文件镜像到目标数据库

源数据库路径.

$oracle_base/admin

3.3 在目标数据库中修改pfile

修改在3.1中生成的pfile文件initoradb20090922.ora, 将其中与目标数据库配置路径不同的地方替换为目标数据库中对应的路径

3.4 常见的手工修改spfile的错误

Oracle的spfile是一个二进制文件, 这个文件不能采用手工修改的方式进行维护. 可以选择的维护方式有两种, 一是在登录到服务器后使用alter system set … scope=both/spfile来实现. 或者是先通过create pfile from spfile.. 然后修改pfile的内容. 之后使用startup pfile=’’启动数据库后,再执行create create spfile from pfile来完成对spfile的修改.

在数据库的迁移中, 只能采用第二种方式.

四, 重新生成控制文件

4.1 在目标数据库中备份控制文件到跟踪文件中

首先,我们使用下述命令备份源数据库的控制文件;

SQL> alter database backup controlfile to trace as 'd:/zhanglei.txt';

4.2 修改控制文件中的内容

将上面步骤产生的控制文件中与目标数据库不匹配的内容使用目标数据库的路径替换.

CREATE CONTROLFILE REUSE DATABASE "ORADB" NORESETLOGS  ARCHIVELOG

--  SET STANDBY TO MAXIMIZE PERFORMANCE

    MAXLOGFILES 50

    MAXLOGMEMBERS 5

    MAXDATAFILES 100

    MAXINSTANCES 1

    MAXLOGHISTORY 226

LOGFILE

  GROUP 1 'E:/ORACLE/ORADATA/ORADB/REDO01.LOG'  SIZE 100M,

  GROUP 2 'E:/ORACLE/ORADATA/ORADB/REDO02.LOG'  SIZE 100M,

  GROUP 3 'E:/ORACLE/ORADATA/ORADB/REDO03.LOG'  SIZE 100M

-- STANDBY LOGFILE

 

DATAFILE

  'E:/ORACLE/ORADATA/ORADB/SYSTEM01.DBF',

  'E:/ORACLE/ORADATA/ORADB/UNDOTBS01.DBF',

  'E:/ORACLE/ORADATA/ORADB/CWMLITE01.DBF',

  'E:/ORACLE/ORADATA/ORADB/DRSYS01.DBF',

  'E:/ORACLE/ORADATA/ORADB/EXAMPLE01.DBF',

  'E:/ORACLE/ORADATA/ORADB/INDX01.DBF',

  'E:/ORACLE/ORADATA/ORADB/ODM01.DBF',

  'E:/ORACLE/ORADATA/ORADB/TOOLS01.DBF',

  'E:/ORACLE/ORADATA/ORADB/USERS01.DBF',

  'E:/ORACLE/ORADATA/ORADB/XDB01.DBF',

  'E:/ORACLE/ORADATA/ORADB/ASSM.DBF',

  'E:/ORACLE/ORADATA/ORADB/PERFSTAT01.DBF',

  'E:/ORACLE/ORADATA/ZHANGLEI.DBF',

  'E:/ORACLE/ORADATA/ORADB/CTL01.DBF'

CHARACTER SET ZHS16GBK

;

4.3 在目标数据库中执行替换后的控制文件

将上面替换后的sql语句拿到目标数据库中进行执行

完成后, 可以使用下面的语句打开数据库.

Sql> alter database open resetlogs;

4.4 生成spfile文件

SQL> create spfile='D:/oracle/ora92/database/spfileoradb.ora' from pfile='D:/oracle/admin/oradb/pfile/initoradb20090922.ora';

4.5 重启数据库完成数据库迁移

到这一步完成, 数据库已经迁移成功.

重新启动数据库, 使用spfile登录.

SQL> shutdown immediate;

SQL> startup

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭