有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:
1、修改实例名(SID)
2、修改数据库名(dbname)
下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:
1、修改实例名(sid)
1.1、检查原来的数据库实例名(sid)
oracle@oracle[/home/oracle]> echo $ORACLE_SID orcl oracle@oracle[/home/oracle]> sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009 Copyright (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 options sys@ORCL> select instance from v$thread; INSTANCE -------------------------------------------------------------------------------- orcl |
1.2、关闭数据库
注意不能用shutdown abort,只能是shutdown immediate或shutdown normal
sys@ORCL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. sys@ORCL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options |
1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtm
oracle@oracle[/home/oracle]> cat ~/.bash_profile|grep -i sid ORACLE_SID=cnhtm export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH |
1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm
oracle@oracle[/home/oracle]> cat /etc/oratab ...... cnhtm:/oracle/app/10.1:Y +ASM:/oracle/app/10.1:Y |
1.5、进入到$ORACLE_HOME/dbs目录
将所有文件名中包含原来的sid的修改为对应的新sid的
如我对如下文件修改为其后对应的文件
hc_orcl.dat->hc_cnhtm.dat lkORCL->lkCNHTM orapworcl->orapwcnhtm snapcf_orcl.f->snapcf_cnhtm.f spfileorcl.ora->spfilecnhtm.ora |
1.6、使新修改的ORACLE_SID环境变量生效
oracle@oracle[/oracle/app/10.1/dbs]> . ~/.bash_profile oracle@oracle[/oracle/app/10.1/dbs]> echo $ORACLE_SID cnhtm |
1.7、重建口令文件
因为口令文件改名后不能在新实例中使用,所以重建
oracle@oracle[/oracle/app/10.1/dbs]> orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y oracle@oracle[/oracle/app/10.1/dbs]> ls -lrt orapw* -rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm |
1.8、启动数据库
oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdba SQL*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> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1218292 bytes Variable Size 62916876 bytes Database Buffers 96468992 bytes Redo Buffers 7168000 bytes Database mounted. Database opened. |
1.9、检查数据库实例名
通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtm
idle> select instance from v$thread; INSTANCE -------------------------------------------------------------------------------- cnhtm |
2、修改数据库名(dbname)
虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)
idle> conn / as sysdba Connected. sys@ORCL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string orcl db_unique_name string orcl global_names boolean FALSE instance_name string cnhtm lock_name_space string log_file_name_convert string service_names string orcl |
可以通过如下步骤修改数据库名(dbname)
2.1、首先切换一下在线日志,使数据库做checkpoint
sys@ORCL> alter system archive log current; System altered. |
2.2、生成重建控制文件的脚本
sys@ORCL> alter database backup controlfile to trace resetlogs; Database altered. |
2.3、关闭数据库,需要干净关闭,不能shutdown abort
sys@ORCL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. sys@ORCL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options |
2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本
oracle@oracle[/oracle/admin/orcl/udump]> ls -lrt total 2608 -rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc ...... -rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc |
2.5、将找到的trc文件复制一份,并命名为ccf.sql
oracle@oracle[/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql |
2.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 NOMOUNT CREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 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 100M DATAFILE '+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', '+DATA/cnhtm/datafile/tbs_lmt_301.DBF' CHARACTER SET ZHS16GBK ; --RECOVER DATABASE USING BACKUP CONTROLFILE; ALTER DATABASE OPEN RESETLOGS; ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/cnhtm/tempfile/temp.269.705923003' SIZE 104857600 REUSE AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M; |
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 sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 12:08:52 2009 Copyright (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 options idle> 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 alias 2 '+data/CNHTM/DATAFILE/EXAMPLE01.DBF' 3 for 4 '+data/ORCL/DATAFILE/EXAMPLE.261.705922745'; Diskgroup altered. ...... idle> alter diskgroup data add alias 2 '+data/CNHTM/DATAFILE/USERS01.DBF' 3 for 4 '+data/ORCL/DATAFILE/USERS.266.705922777'; Diskgroup altered. idle> alter diskgroup data add directory '+data/CNHTM/ONLINELOG'; Diskgroup altered. ...... idle> alter diskgroup data add alias 2 '+data/CNHTM/ONLINELOG/group_4.LOG' 3 for 4 '+data/ORCL/ONLINELOG/group_7.273.705923695'; Diskgroup altered. |
2.8、如果归档日志目录名中包含sid,那么修改归档目录名
我的测试环境,归档目录使用的是flash_recovery_area,所以需要将这个目录中的ORCL目录重命名为CNHTM
2.9、使用spfile生成pfile
注意这里没有启动数据库,只是链接到idle状态
oracle@oracle[/home/oracle]> export ORACLE_SID=cnhtm oracle@oracle[/home/oracle]> sqlplus / as sysdba SQL*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; create pfile='?/dbs/initcnhtm.ora' from spfile; File created. idle> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options |
2.10、进入$ORACLE_HOME/dbs目录
2.11、编辑initcnhtm.ora文件
搜索所有的orcl,重命令为cnhtm,搜索所有的ORCL,重命名为CNHTM
2.12、删除控制文件
将原来的控制文件删除或重命名
控制文件的位置名称可以通过查看2.11步骤中的*.control_files来确定
如果控制文件在ASM中,可以进入asmcmd命令,然后用rm命令删除
2.13、进入$ORACLE_BASE/admin目录
将orcl目录重命名为cnhtm
2.14、使用修改过的pfile生成spfile
oracle@oracle[/oracle/admin/cnhtm/udump]> sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:59:56 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. idle> create spfile from pfile='?/dbs/initcnhtm.ora'; File created. |
2.15、调用2.6步骤修改好的ccf.sql
idle> @/oracle/admin/cnhtm/udump/ccf.sql ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1218292 bytes Variable Size 67111180 bytes Database Buffers 92274688 bytes Redo Buffers 7168000 bytes Control file created. Database altered. Database altered. Tablespace altered. |
2.16、检查数据库状态
idle> conn / as sysdba Connected. sys@CNHTM>select open_mode from v$database; OPEN_MODE ---------- READ WRITE sys@CNHTM> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string cnhtm db_unique_name string cnhtm global_names boolean FALSE instance_name string cnhtm lock_name_space string log_file_name_convert string service_names string cnhtm |
分享到:
相关推荐
数据库最大连接数修改与 Oracle 多实例启动在 Linux 系统下 一、修改 Oracle 数据库允许的最大连接数 Oracle 数据库的最大连接数可以通过修改参数文件或使用 alter system 语句来实现。下面是修改最大连接数的步骤...
ORACLE_SID与实例名本质上是同一个概念,但它的作用是在操作系统层面,用于定位数据库参数文件(如`init$ORACLE_SID.ora`),并告诉操作系统哪个Oracle实例正在运行。设置ORACLE_SID的方法是通过操作系统命令,如`...
Oracle数据库最大连接数修改和Linux系统下Oracle数据库多实例启动 一、修改Oracle数据库最大连接数 Oracle数据库的最大连接数是指数据库允许的最大并发连接数,该数值可以通过修改数据库参数来实现。下面是修改...
在Linux环境下配置Oracle数据库时,有时我们需要在同一台服务器上安装多个Oracle实例,并通过一个监听器进行管理。这种配置可以提高资源利用率并简化网络管理。本文将详细介绍如何在Linux下为两个Oracle实例配置一个...
每个实例都有一个全局数据库名称(GLOBAL_DBNAME)、Oracle Home路径和SID(系统标识符)。修改后,需要停止并重新启动监听器以应用更改。 这个过程完成后,新的Oracle数据库实例`orcl`就在Linux系统中成功创建并...
Oracle 数据库是重量级的,其管理非常复杂,将其在 Linux 平台上的启动和关闭步骤整理如下: 一、安装和配置 Oracle 在 Linux 平台上安装 Oracle 之后,需要创建 Oracle 系统用户,并在 `/home/oracle` 下面的 `....
- 它是由数据库名称和数据库域名组成的一个完整的标识符。 - **示例:** - 给定`DB_NAME=myorcl`和`DB_DOMAIN=fj.jtyz`,则全局数据库名称为`myorcl.fj.jtyz`。 - **查看全局数据库名称:** - 直接查看全局...
在Linux平台下,Oracle数据库可以启动多个实例,每个实例都有其自己的SID(System Identifier)。例如,第一个实例的SID为orcl,第二个实例的SID为orcl2。为了启动不同的数据库实例,我们需要切换到相应的实例下。 ...
在Oracle环境中,为了实现高可用性和资源的有效利用,经常会遇到需要在同一台服务器上部署多个Oracle实例的情况。这种部署模式被称为“Oracle双实例”或者“多实例”。本文将详细介绍如何配置Oracle双实例的监听器...
### 详解数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名 在深入了解Oracle数据库的管理及维护过程中,理解数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名和服务名等核心概念至关重要。...
系统部署为AIX 6.1版本,配合HACMP 5.4版本,以及共享存储来存放Oracle程序和数据库实例。共享存储允许两个节点都能访问相同的数据,这是实现双机热备的基础。网络部署中,两台服务器(a和b)各自拥有独立的IP地址,...
1. **创建ODBC数据源**:使用Oracle服务器的操作系统提供的ODBC管理工具创建一个新的ODBC数据源,该数据源指向SQL Server数据库实例(如ET2000、OFSS2000、BK2000)。这一步骤是基础性的设置,确保Oracle可以通过...
在 Windows 下,SID 不能重复,而在 Unix/Linux 下只要不同版本的 Oracle 安装在不同的 Oracle_home 下就可以创建相同 SID 的实例。 DB_UNIQUE_NAME DB_UNIQUE_NAME 是 10g 的参数,在配置 Dataguard 环境时必须为...
在Linux环境下,Oracle 10g提供了一种方法来实现这样的配置,即在单个主机上开启两个或更多实例,每个实例都可以访问不同的数据库,或者在本例中,可能是同一个数据库。这里我们将详细探讨如何在Oracle 10g中设置和...
我们需要添加SID_LIST(系统标识符列表),这个列表中包含了每个数据库实例的SID_DESC(系统标识符描述),其中GLOBAL_DBNAME是为这个数据库实例设置的全局数据库名,ORACLE_HOME是数据库软件的安装路径,SID_NAME是...
databaseName=dbname”,而Oracle则可能是“jdbc:oracle:thin:@hostname:port:sid”。 在实际开发中,程序员需要根据具体的应用需求选择合适的驱动,并正确配置数据库连接参数,如用户名、密码和数据库实例信息。...
例如,添加 GLOBAL_DBNAME 和 SID_NAME 信息。 第三步:使用 dos 端登录 Oracle,使用 SQLPLUS 命令连接到数据库。使用 startup pfile命令启动数据库实例,指定 pfile 路径。 第四步:找到 pfile 文件,位于 admin...
- **Path**: 在Path环境变量中加入客户端目录和数据库bin目录。 - 客户端目录: `F:\Oracle11g_x64\product\11.2.0\instantclient_11_2` - 数据库bin目录: `F:\Oracle11g_x64\product\11.2.0\dbhome_1\BIN` 需要...
Linux下启动Oracle服务和监听程序是Oracle数据库管理员的基本操作之一。本文将详细介绍Linux平台上启动和关闭Oracle服务和监听程序的步骤,并对启动和关闭参数进行解释。 启动Oracle服务和监听程序 1. 首先,需要...
1. 创建数据库实例:Oracle数据库实例是内存结构和后台进程的集合,它们一起管理数据库的运行。首先,你需要通过Oracle Database Configuration Assistant (DBCA) 或手动配置来创建一个实例。手动创建时,需要指定...