在实际生产环境下我们可能需要快速的复制现有的数据库,又希望新库与原库不重名,或者我们需要复制生产库用来做研发测试,如果我们采用DBCA的方式,缺点是慢并且还没有数据,就需要从新导数据,费时又麻烦。下面我就详细介绍如何修改数据库名来完成使命,采用2种方法(1.重建控制文件修改数据库名2.使用nid工具修改数据库名)
一、重建控制文件修改数据库名
步骤概述
生成controlfile创建脚本并写入trace文件
执行查找trace文件语句,获取当前trace文件路径
停掉数据库
只复制数据文件、redo日志(不需要复制控制文件哦!)
生成新的initLEO2.orac纯文本参数文件
编辑新生成的initLEO2.ora纯文本参数文件
利用initLEO2.ora纯文本参数文件创建spfileLEO2.ora二进制参数文件、
数据库启动到nomount状态,加载参数文件
删除原库控制文件(如果拷贝的时候包括了控制文件的话)
修改/u01/app/oracle/admin/LEO/udump/leo_ora_25621.trc文件的内容
目标:我们用原库LEO复制出新库LEO2
1.生成controlfile创建脚本并写入trace文件
SYS@LEO> alter database backup controlfile to trace;
2.执行查找trace文件语句,获取当前trace文件路径
SYS@LEO> select c.value || '/' || d.instance_name || '_ora_' || to_char(a.spid,'fm99999') || '.trc' from v$process a, v$session b, v$parameter c, v$instance d where a.addr = b.paddr and b.audsid = userenv('sessionid') and c.name = 'user_dump_dest';
Trace文件路径
C.VALUE||'/'||D.INSTANCE_NAME||'_ORA_'||TO_CHAR(A.SPID,'FM99999')||'.TRC'
--------------------------------------------------------------------------------
/u01/app/oracle/admin/LEO/udump/LEO_ora_25621.trc
3.停掉数据库
SYS@LEO> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4.只复制数据文件、redo日志(不需要复制控制文件哦!)
从原来的/u01/app/oracle/oradata/LEO/disk1复制到
/u01/app/oracle/oradata/LEO2/disk1
5.生成新的initLEO2.orac纯文本参数文件
export ORACLE_SID=LEO
sqlplus / as sysdba 进入原库执行命令
SYS@LEO> create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initLEO2.ora' from spfile;
6.编辑新生成的initLEO2.ora纯文本参数文件
vim initLEO2.ora
需要修改的内容:
(1)路径
*.audit_file_dest='/u01/app/oracle/admin/LEO2/adump'
*.background_dump_dest='/u01/app/oracle/admin/LEO2/bdump'
*.control_files='/u01/app/oracle/oradata/LEO2/disk1/control01.ctl','/u01/app/oracle/oradata/LEO2/disk2/control02.ctl','/u01/app/oracle/oradata/LEO2/disk3/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/LEO2/cdump'
*.user_dump_dest='/u01/app/oracle/admin/LEO2/udump'
(2)数据库名
*.db_name='LEO2'
7.利用initLEO2.ora纯文本参数文件创建spfileLEO2.ora二进制参数文件
export ORACLE_SID=LEO2
sqlplus / as sysdba
SYS@LEO2> create spfile from pfile; 创建spfile
8.数据库启动到nomount状态,加载参数文件
SYS@LEO2> startup nomount
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 96470416 bytes
Database Buffers 213909504 bytes
Redo Buffers 2973696 bytes
SYS@LEO2> show parameter name
NAME TYPE VALUE