修改oracle实例名(sid)和数据库名(db_name)
- 格式:doc
- 大小:52.00 KB
- 文档页数:9
ORACLERAC更改实例名规划后的实例名 fqzdbipfqzdb01 192.168.2.33fqzdb02 192.168.2.342.1.1 扫描磁盘(下⾯的操作没有特别提⽰,默认为两个节点都操作)在两个节点上使⽤root⽤户执⾏cfgmg命令识别同步过来的存储磁盘Method error (/usr/lib/methods/cfgpkcs11 -l pkcs11 ):0514-040 Error initializing a device into the kernel.---------报错可忽略扫描完成后,系统/dev⽬录下会⽣成hdisk2......hdisk33磁盘2.1.2 磁盘修改权限修改磁盘的权限⾄660,属组修改为Oracle⽤户组,打开no_reserve属性root⽤户在/dev⽬录下执⾏:chdev -l hdisk2 -a reserve_policy=no_reservechdev -l hdisk3 -a reserve_policy=no_reservechdev -l hdisk4 -a reserve_policy=no_reservechdev -l hdisk5 -a reserve_policy=no_reservechmod 660 rhdisk2chmod 660 rhdisk3chmod 660 rhdisk4chmod 660 rhdisk5chown grid:oinstall rhdisk2chown grid:oinstall rhdisk3chown grid:oinstall rhdisk4chown grid:oinstall rhdisk52.1.3 Mount Disk Group使⽤grid⽤户在两个节点上执⾏[root@prodb01a /]# su - grid[grid@prodb01a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:54:51 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> select name,state from v$asm_diskgroup;NAME STATE------------------------------ -----------DG_fqz_CRS MOUNTEDFQZDATADG DISMOUNTEDSQL> alter diskgroup FQZDATADG mount force;Diskgroup altered.2.1.4 启动数据库Oracle⽤户执⾏export ORACLE_SID=prodbsqlplus / as sysdbaSQL> startup pfile='/home/oracle/pfile.ora'2.2 修改相关名称实施步骤(本套数据库修改名称定为 prodb )2.2.1 数据库启动⾄mount状态RAC需要⾸先将cluster_database置为false后重启数据库⾄mount状态[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:05:48 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL> startup mountORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> quit2.2.2 修改Dbname、DbidOracle⽤户在1节点上使⽤nid命令执⾏[oracle@prodb01a /home/oracle]> nid target=/ dbname=prodbDBNEWID: Release 12.1.0.2.0 - Production on Thu Feb 14 11:11:00 2019Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.Connected to database PRODB (DBID=3182511783)Connected to server version 12.1.0Control Files in database:Change database ID and database name PRODB to prodb? (Y/[N]) => y ...........................Database name changed to prodbModify parameter file and generate a new password file before restarting.Database ID for database prodb changed to 3926312005.All previous backups and archived redo logs for this database are unusable.Database has been shutdown, open database with RESETLOGS option.Succesfully changed database name and ID.DBNEWID - Completed succesfully.2.2.3 重启数据库[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> create pfile=’/home/oracle/pfile.ora’ from spfile=’+PRODBDATA2/PRODBST/spfilePRODB.ora’; SQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改db_name='prodb'去掉db_unique_name参数SQL> startup mount pfile=’/home/oracle/pfile.ora’ORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> alter database open resetlogs;Database altered.SQL> show parameter db_nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_name string prodb2.2.4 修改pfile中的实例名1节点实例名prodb12节点实例名PRODB修改参数⽂件(直接使⽤1节点已修改好的参数⽂件/home/oracle/pfile.ora,因此⽆需执⾏此步骤)[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> shut immediateSQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改如下选项*.db_name='prodb'*.db_recovery_file_dest=''prodb1.instance_number=1PRODB.instance_number=2prodb1.undo_tablespace='UNDOTBS1'PRODB.undo_tablespace='UNDOTBS2'File created.2.2.5 修改Disk Droup Name将diskgroup name:BKSERVERDATA 修改为FQZDATADGGrid两个节点执⾏:[grid@prodb02a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 14:47:50 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> alter diskgroup PRODBDATA2 dismount;Diskgroup altered.Grid⽤户在1节点执⾏:[grid@prodb01a/home/oracle] renamedg phase=both dgname=PRODBDATA2 newdgname=FQZDATADG verbose=true 移除原Disk Group[grid@prodb01a/home/oracle] srvctl remove diskgroup -g PRODBDATA2 -f重建控制⽂件并修改其中数据⽂件、⽇志⽂件路径[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=falseSQL> startup mount pfile=‘/home/oracle/pfile.ora’;SQL> alter database backup controlfile to trace as ‘/home/oracle/con.trl’SQL>shut immediateSQL>startup nomount pfile=’/home/oracle/pfile.ora’;粘贴con.trl⽂件中内容并编辑新的磁盘组名,在sqlplus中运⾏SQL>CREATE CONTROLFILE REUSE DATABASE "prodb" RESETLOGS FORCE LOGGING NOARCHIVELOG MAXLOGFILES 320MAXLOGMEMBERS 5MAXDATAFILES 2000MAXINSTANCES 32MAXLOGHISTORY 2337LOGFILEGROUP 1 '+FQZDATADG/prodb/ONLINELOG/group_1.508.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 2 '+FQZDATADG/prodb/ONLINELOG/group_2.509.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 5 '+FQZDATADG/prodb/ONLINELOG/group_5.512.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 6 '+FQZDATADG/prodb/ONLINELOG/group_6.513.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 7 '+FQZDATADG/prodb/ONLINELOG/group_7.514.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 8 '+FQZDATADG/prodb/ONLINELOG/group_8.515.1000913295' SIZE 500M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE'+FQZDATADG/PRODBst/datafile/system.350.998332449','+FQZDATADG/PRODBst/datafile/sysaux.358.998332809','+FQZDATADG/PRODBst/datafile/undotbs1.303.998331203','+FQZDATADG/PRODBst/datafile/undotbs2.370.998333315','+FQZDATADG/PRODBst/datafile/users.258.998330009','+FQZDATADG/PRODBst/datafile/tbs_acctchk.477.998335675',CHARACTER SET ZHS16GBK;SQL>alter database open resetlogs;[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=trueSQL>create spfile=’+FQZDATADG/prodb/spfileprodb.ora’ from pfile='/home/oracle/pfile.ora';SQL> shut immediateORA-01507: database not mountedORACLE instance shut down.2.2.6 重新注册数据库信息Oracle⽤户在⼀个节点上执⾏srvctl add database -d prodb -o /oracle/app/oracle/12.1.0 -p ’+FQZDATADG/prodb/spfileprodb.ora’srvctl add instance -d prodb -i prodb1 -n srvctl add instance -d prodb -i PRODB -n 启动数据库[Oracle@prodbdb01a/home/oracle] srvctl start database -d prodb⾄此完成prodb数据库迁移切换⼯作。
oracle修改实例名orcl的方法Oracle是一款非常流行的关系型数据库管理系统。
在Oracle中,实例是一个特殊的进程和内存结构,用于管理数据库的访问和连接。
实例名是唯一的,它用于标识Oracle数据库实例的名称。
在某些情况下,您可能需要修改Oracle实例的名称。
本文将介绍如何以Oracle修改实例名orcl的方法。
第一步:关闭Oracle实例在修改Oracle实例名之前,您需要先关闭Oracle实例。
您可以使用以下命令关闭Oracle实例:$ sqlplus / as sysdbaSQL> shutdown immediate;这将立即关闭Oracle实例。
请注意,如果您的Oracle实例正在运行,则必须先关闭它才能修改实例名称。
第二步:备份Oracle实例在修改Oracle实例名称之前,建议您备份Oracle实例。
这将确保您可以在出现问题时恢复您的数据库。
您可以使用以下命令备份Oracle实例:$ cp -r $ORACLE_HOME/dbs $ORACLE_HOME/dbs_backup这将备份Oracle实例的数据库文件。
第三步:修改Oracle实例名要修改Oracle实例名称,您需要编辑Oracle实例的配置文件。
您可以使用以下命令编辑Oracle实例的配置文件:$ vi $ORACLE_HOME/network/admin/listener.ora在此文件中,您需要查找以下行:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(SID_NAME = orcl)))将GLOBAL_DBNAME和SID_NAME更改为您想要的名称。
例如,如果您想将Oracle实例名称更改为mydb,则可以将这些行更改为以下内容:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = mydb)(SID_NAME = mydb)))请注意,您需要将所有实例名称更改为相同的名称。
求知若饥,虚心若愚。
Oracle数据库例名SID的修改方法步骤Oracle数据库例名SID的修改方法步骤有时候我们需要修改Oracle数据库的实例名SID,下面是在Centos 6.5下修改ORACLE10.2的实例名的实例教程,感爱好学习的伴侣可以看下。
修改Oracle实例名系统环境:CentOS 6.5ORACLE版本:10.21、检查原来的数据库实例名$ echo $ORACLE_SIDorcl$ sqlplus / as sysdbaselect instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl2、关闭数据库shutdown immediate;exit;3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改第1页/共3页学而不舍,金石可镂。
为linuxidc$ vi /home/oracle/.bash_profileexport ORACLE_SID=linuxidc$ source /home/oracle/.bash_profile4、修改/etc/oratab文件,将sid名由orcl修改为linuxidc $ vi /etc/oratablinuxidc:/u01/app/oracle/11.2/db_1:Y5、进入到$ORACLE_HOME/dbs名目将全部文件名中包含原来的sid的'修改为对应的新sid的$ cd $ORACLE_HOME/dbs$ mv hc_zf.dat hc_linuxidc.dat$ mv lkZF lklinuxidc$ mv orapwzf orapwlinuxidc$ mv spfilezf.ora spfilelinuxidc.ora6、重建口令文件由于口令文件改名后不能在新实例中使用,所以重建$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 entries=5 force=y7、启动数据库$ sqlplus / as sysdbastartup8、检查数据库实例名第2页/共3页求知若饥,虚心若愚。
Oracle数据库名、实例名、Oracle_SID本⽂参考⾃,纯属读书笔记,加深记忆在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。
在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。
这些都存在于同⼀个数据库中的标识,⽤于区分不同数据库的参数。
1、数据库名数据库名是⽤于区分数据的标识,是以⼆进制形式存储于数据库控制⽂件中的参数,在数据库安装或者创建之后不得修改,在数据库创建之后,该参数将被写⼊到数据库控制参数⽂件pfile中,其基本格式如下:.........db_name="orcl" #(不允许修改)db_domain=instance_name=orclservice_names=control_file=(........................注:每⼀个运⾏Oracle 8i及以上的数据库都有⼀个数据库名。
但如果服务器程序创建了两个数据库,那么就会有两个数据库名,它们分别存储与不同的数据库控制参数⽂件pfile中,分别控制着对应的数据库。
2、数据库实例名数据库实例名是⽤于和操作系统之间的联系,⽤于对外部连接时使⽤。
在操作系统中,要取得于数据库之间的联系必须通过实例名。
⽐如:要和某⼀个数据库Server进⾏连接,必须通过实例名,只知道数据库名是没⽤的,与数据库名不同的是,数据库实例名在数据库的安装或者创建之后,是可以被修改的。
数据库在安装之后,对应的实例名会被写⼊到数据库控制参数⽂件pfile(格式如下代码块)中,可以通过修改这个⽂件,来修改Oracle数据库的实例名,当然,数据库名是不能修改的!db_name="orcl" #(数据库名:不允许修改)db_domain=instance_name=orcl #(数据库实例名:可以修改,可以与db_name相同也可不同)service_names=control_file=(........................3、数据库名和实例名之间的关系a、数据库名于实例名之间的关系⼀般是⼀⼀对应,有⼀个数据库名,就有⼀个实例名。
ORACLE数据库与实例的关系1 数据库名1.1 数据库名的概念数据库名(db_nam e)就是一个数据库的标识,就像人的身份证号一样。
如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。
在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。
数据库名在$O racle_HOME/admin/db_nam e/pfile/init.ora(或$ORACLE_BASE/admin/db_nam e/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实例名>.ORA)文件中############################################ Databa se Identi ficat ion###########################################db_dom ain=""db_nam e=orcl在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。
因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。
假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。
但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
1.2 数据库名的作用数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用s i d,还有alte r databa se时都是使用数据库名)。
有很多Oracle安装文件目录是与数据库名相关的,如:winnt: F:\oracle\produc t\10.2.0\oradat a\DB_NAM E\...又如参数文件p file:winnt: F:\oracle\produc t\10.2.0\admin\DB_NAM E\pfile\init.ora.54200885729如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create contro lfile命令创建控制文件,当然这个命令中也要指明D B_NA ME。
oracle更改数据库名的⽅法如何修改数据库名(db_name)及实例名(Instance_name or Service_name)Nid是Oracle从9iR2开始提供的⼯具,可以⽤来更改数据库名称,⽽⽆需通过之前重建控制⽂件等繁琐⽅式。
nid是⾃带的⼯具,在oracle_home/bin⽬录中.以下⽅法假设登陆到数据库本机做。
⽬的:在本例中,假设原来的数据库名为orcl,要改成dborcl,原实例名(service_name,instance_name)orcl,要改成dborcl. 步骤概述:1.检查当前的参数情况2.shutdown数据库,然后mount数据库3.运⾏nid命令4.更改参数⽂件pfile.ora(db_name,instance_name)5.检测更改情况6.如果是windows平台,要修改服务7.修改监听服务C:\Documents and Settings\Administrator>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 11:56:33 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - Production1. 查看更改前的相应名称SQL> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string orcldb_unique_name string orclglobal_names boolean FALSEinstance_name string orcllock_name_space stringlog_file_name_convert stringservice_names string orcl2. --先shutdown数据库SQL> shutdown immediate数据库已经关闭。
详解:oracle10G 数据库名、实例名、ORACLE_SID【转载】数据库名、实例名、数据库域名、全局数据库名、服务名,这是几个令很多初学者容易混淆的概念。
相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。
我们现在就来把它们弄个明白。
一、数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样。
他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。
在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。
格式如下:DB_NAME=myorcl...在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。
因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。
假设用户修改了参数文件中的数据库名,即修改DB_NAME 的值。
但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
数据库名的作用数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
有很多Oracle安装文件目录是与数据库名相关的,如:winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\...Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...pfile:winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.oraUnix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora跟踪文件目录:winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。
o racle 11g 更改sid和dbname分两个阶段描述,第一阶段改sid,第二阶段改dbname下面描述详细步骤首先要更改sid1、登录数据库查看先前的sid,总共三步[oracle@localhost ~]$ sqlplus "/as sysdba"SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 9 05:53:08 2013 Copyright (c) 1982, 2009, Oracle. A ll rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 539848704 bytesFixed Size 1337748 bytesVariable Size 360711788 bytesDatabase Buffers 171966464 bytesRedo Buffers 5832704 bytesDatabase mounted.Database opened.SQL> select instance from v$thread ;INSTANCE-------------------------------------------------------------------------------- orcl2、关闭数据库[sql] view plaincopyprint?SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options3、编辑/etc/oratab文件,把所有orcl换成oat[oracle@localhost ~]$ vim /etc/oratab4、更改oracle用户的 .bash_profile文件[oracle@localhost ~]$ vim .bash_profile5、使改好的.bash_profile文件生效:%s/oral/oat/g[oracle@localhost ~]$ . .bash_profile7、查看系统环境变量[oracle@localhost ~]$ env |grep ORACLEORACLE_SID=oatORACLE_BASE=/u01/appORACLE_HOME=/u01/app/oracle效果一生成。
解析Oracle数据库中的对象集合schema搭建⼀个oracle,下⾯会有很多schema,每个schema下的数据都不影响。
感觉和mysql的库的概念很像,现在⽤的数据库管理系统其实也是这么划分的,mysql⽤的ip+port+库标识,oracle⽤ip+port+schema标识,平时还总听到⼀个实例的概念,我的理解就是实例就是⼀系列相关进程,代表了⼀个数据库服务。
⽬前线上为了节省资源,常常把机器分成多个实例,⽤不同的端⼝号标识,每个实例上有多个schema。
旭哥跟我说的很形象,oracle⼀个实例上有对应多个库。
mysql⼀个库上应多个实例。
mysql的建库很灵活。
websql中⼀⾏数据中,name为mgmt_view,displayName为mgmt_view@dev_crm,jdbc为jdbc:oracle:thin:@10.232.31.XXX:1521:newcrm,jdbcusername为dev_ddl,DSName为dev_crm,DBName为newcrm(和jdbaURL上的⼀致),DBuser为mgmt_view,TNSName为dev_crm(应该是ora⽂件上的配置)。
name为stat,displayName为stat@dev_dbc ,jdbc为jdbc:oracle:thin:@10.232.31.XXX:1521:dev-dbc,jdbcusername为dev_ddl,DSName为dev-dbc,DBName为dev-dbc(和jdbaURL上的⼀致),DBuser为stat,TNSName为dev_dbc(应该是ora⽂件上的配置),我本地的ora⽂件有如下配置:LOCALTEST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = localtest)))这⾥⾯有个serviceName,还有的地⽅是SID,另外最开始还有个LOCALTEST名字,这个标识链接描述符。
修改oracle实例名(sid)和数据库名(db_name)有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:1、修改实例名(SID)2、修改数据库名(dbname)下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:1、修改实例名(sid)1.1、检查原来的数据库实例名(sid)oracle@oracle[/home/oracle]> echo $ORACLE_SIDorcloracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining optionssys@ORCL> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl1.2、关闭数据库注意不能用shutdown abort,只能是shutdown immediate或shutdown normal1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtm1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm1.5、进入到$ORACLE_HOME/dbs目录将所有文件名中包含原来的sid的修改为对应的新sid的如我对如下文件修改为其后对应的文件1.6、使新修改的ORACLE_SID环境变量生效1.7、重建口令文件因为口令文件改名后不能在新实例中使用,所以重建1.8、启动数据库oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> startupORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1218292 bytesVariable Size 62916876 bytesDatabase Buffers 96468992 bytesRedo Buffers 7168000 bytesDatabase mounted.Database opened.1.9、检查数据库实例名通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtm2、修改数据库名(dbname)虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)可以通过如下步骤修改数据库名(dbname)2.1、首先切换一下在线日志,使数据库做checkpoint2.2、生成重建控制文件的脚本2.3、关闭数据库,需要干净关闭,不能shutdown abort2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本2.5、将找到的trc文件复制一份,并命名为ccf.sql2.6、修改ccf.sql查找STARTUP NOMOUNT语句,将这一行上面的所有行都删除查找所有以--开始的行,把这些行删除查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM找到CREATE CONTROLFILE REUSE DATABASE...语句,将其中的REUSE修改为SET 找到RECOVER DATABASE USING BACKUP CONTROLFILE语句,将其用双横线(--)注释掉如果有精力,可以修改这个脚本中的datafile和logfile部分使用新的文件名称,其实这部分不修改也可以,我为了测试的目的进行了修改,修改后要记得去重命名数据文件和log文件,将对应的数据文件和log文件与这里的名称相对应我修改后的ccf.sql文件内容如下STARTUP NOMOUNTCREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '+DATA/cnhtm/onlinelog/group_1.LOG' SIZE 100M,GROUP 2 '+DATA/cnhtm/onlinelog/group_2.LOG' SIZE 100M,GROUP 3 '+DATA/cnhtm/onlinelog/group_3.LOG' SIZE 100M,GROUP 4 '+DATA/cnhtm/onlinelog/group_4.LOG' SIZE 100MDATAFILE'+DATA/cnhtm/datafile/system01.DBF','+DATA/cnhtm/datafile/undotbs101.DBF','+DATA/cnhtm/datafile/sysaux01.DBF','+DATA/cnhtm/datafile/users01.DBF','+DATA/cnhtm/datafile/example01.DBF','+DATA/cnhtm/datafile/tbs_lmt01.DBF','+DATA/cnhtm/datafile/tbs_lmt_201.DBF',2.7、修改数据文件、在线日志文件名如果上一步修改了ccf.sql文件中的datafile和logfile段的文件名,这里要将这些文件名重命令为与其一致。
因为我的实验环境使用了ASM,在Oracle 10.2中ASM中不能重命名和复制文件,我采用了创建别名的方式,操作如下:oracle@oracle[/oracle/admin/cnhtm/udump]> export ORACLE_SID=+ASM oracle@oracle[/oracle/admin/cnhtm/udump]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 12:08:52 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining optionsidle> alter diskgroup data add directory '+data/CNHTM';Diskgroup altered.idle> alter diskgroup data add directory '+data/CNHTM/DATAFILE';Diskgroup altered.idle> alter diskgroup data add alias2 '+data/CNHTM/DATAFILE/EXAMPLE01.DBF'3 for4 '+data/ORCL/DATAFILE/EXAMPLE.261.705922745';Diskgroup altered.......idle> alter diskgroup data add alias2 '+data/CNHTM/DATAFILE/USERS01.DBF'3 for4 '+data/ORCL/DATAFILE/USERS.266.705922777';Diskgroup altered.idle> alter diskgroup data add directory '+data/CNHTM/ONLINELOG'; Diskgroup altered.......idle> alter diskgroup data add alias2 '+data/CNHTM/ONLINELOG/group_4.LOG'3 for4 '+data/ORCL/ONLINELOG/group_7.273.705923695';Diskgroup altered.2.8、如果归档日志目录名中包含sid,那么修改归档目录名我的测试环境,归档目录使用的是flash_recovery_area,所以需要将这个目录中的ORCL目录重命名为CNHTM2.9、使用spfile生成pfile注意这里没有启动数据库,只是链接到idle状态oracle@oracle[/home/oracle]> export ORACLE_SID=cnhtmoracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:49:20 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> create pfile='?/dbs/initcnhtm.ora' from spfile;File created.idle> exit2.10、进入$ORACLE_HOME/dbs目录2.11、编辑initcnhtm.ora文件搜索所有的orcl,重命令为cnhtm,搜索所有的ORCL,重命名为CNHTM2.12、删除控制文件将原来的控制文件删除或重命名控制文件的位置名称可以通过查看2.11步骤中的*.control_files来确定如果控制文件在ASM中,可以进入asmcmd命令,然后用rm命令删除2.13、进入$ORACLE_BASE/admin目录将orcl目录重命名为cnhtm2.14、使用修改过的pfile生成spfile2.15、调用2.6步骤修改好的ccf.sql2.16、检查数据库状态idle> conn / as sysdbaConnected.sys@CNHTM>select open_mode from v$database; OPEN_MODE----------READ WRITEsys@CNHTM> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string cnhtmdb_unique_name string cnhtmglobal_names boolean FALSEinstance_name string cnhtmlock_name_space stringlog_file_name_convert stringservice_names string cnhtm发现数据库名(db_name)已经修改为cnhtm。