windows环境oracle数据库迁移实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
环境描述:
源数据库
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'
数据库名是在安装数据库, 创建新的数据库, 创建数据控制文件, 修改数据库结构, 备份与恢复数据库时都需要使用到的.
查询数据库名称:
⏹Select name, dbid from v$database;
◆Show parameter db_name;
◆查看参数文件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文件中.
六, 总结
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