当安装配置好一个最基本的oracle数据库(unix下的)后,最好把它的系统文件和物理文件冷备份分别打包存放。CUGTechFeel
CUGTechFeel
以后如果要再次在同样Unix环境安装oracle数据库,只需要建立相关的用户,然后把这个tar包解开,建几个文件链接,CUGTechFeel
数据库就能运行起来了。CUGTechFeel
CUGTechFeel
有时候在同一个局域网内安装多台机器的时候,就需要把数据库sid改一改。 CUGTechFeel
CUGTechFeel
下面列一个简单的改sid的步骤:CUGTechFeel
CUGTechFeel
1、修改oracle安装用户的环境变量,把出现old_sid的地方改成new_sidCUGTechFeel
重新登录使改过的环境变量生效。CUGTechFeel
CUGTechFeel
2、修改数据库的参数文件(建议用initora_sid.ora文本文件的方法)CUGTechFeel
CUGTechFeel
$cd $ORACLE_HOME/dbsCUGTechFeel
$cp initold_sid.ora initnew_sid.oraCUGTechFeel
CUGTechFeel
编辑文件initnew_sid.ora,除了db_name参数保持原来数据库的名称外,CUGTechFeel
其它的出现old_sid的地方都可以替换成new_sid。CUGTechFeel
CUGTechFeel
3、生成新new_sid用的密码文件CUGTechFeel
CUGTechFeel
$cd $ORACLE_HOME/dbsCUGTechFeel
$orapwd file=$ORACLE_HOME/dbs/orapwnew_sid password=oracle entries=10CUGTechFeel
CUGTechFeel
4、数据库物理文件夹内把目录改名CUGTechFeel
CUGTechFeel
$cd $ORADATACUGTechFeel
$mv old_sid new_sidCUGTechFeel
CUGTechFeel
5、数据库管理文件夹内把目录改名CUGTechFeel
CUGTechFeel
$cd $ORACLE_BASE/admin/CUGTechFeel
$mv old_sid new_sidCUGTechFeel
CUGTechFeel
6、按新数据库参数启动数据库,改数据库的global_nameCUGTechFeel
CUGTechFeel
$sqlplus /nologCUGTechFeel
SQL>connect / as sysdbaCUGTechFeel
SQL>startup PFILE=$ORACLE_HOME/dbs/initnew_sid.ora;CUGTechFeel
SQL>alter database rename global_name to new_sid;CUGTechFeel
CUGTechFeel
说明:db_name和global_name不是一个概念,CUGTechFeel
CUGTechFeel
global_name是数据库的全局名,一般是db_name.db_domain,可以用SQL语句改变,CUGTechFeel
CUGTechFeel
db_name是数据库创建时起的名称,不能用SQL语句来改变它,只有重建控制文件的时候才可以改。CUGTechFeel
CUGTechFeel
7、oratab文件里注释掉原来的old_sid,增加一行new_sid,使dbstart和dbshut脚本能正常使用CUGTechFeel
CUGTechFeel
#old_sid:$ORACLE_HOME:YCUGTechFeel
new_sid:$ORACLE_HOME:YCUGTechFeel
CUGTechFeel
8、修改网络参数文件listener.ora和tnsnames.oraCUGTechFeel
把出现old_sid的地方改成new_sidCUGTechFeel
启动lsnrctl服务CUGTechFeel
CUGTechFeel
9、最后检查$sqlplus username/password@servicename是否能连进数据库CUGTechFeel
CUGTechFeel
------------------------------------------------------------------------------------------------- CUGTechFeel
附新建控制文件,改数据库名db_name的方法:CUGTechFeel
CUGTechFeel
1、先把原来的控制文件备份成文本文件格式(@ORACLE_BASE/admin/udump/目录下)CUGTechFeel
CUGTechFeel
SQL>alter database backup controlfile to trace;CUGTechFeel
CUGTechFeel
2、再把原来的控制文件重命名 CUGTechFeel
CUGTechFeel
$cd $ORADATA/testdb2/CUGTechFeel
$mv control01.ctl control01.ctl.old CUGTechFeel
$mv control01.ctl control02.ctl.old CUGTechFeel
$mv control01.ctl control03.ctl.old CUGTechFeel
CUGTechFeel
3、创建新的控制文件的SQL,把db_name改掉CUGTechFeel
initnew_sid.ora里面db_name参数已经改成新名称testdb2CUGTechFeel
CUGTechFeel
SQL>STARTUP NOMOUNT PFILE=$ORACLE_HOME/dbs/inittestdb2.ora CUGTechFeel
CUGTechFeel
SQL>CREATE CONTROLFILE SET DATABASE "testdb2" RESETLOGS NOARCHIVELOGCUGTechFeel
MAXLOGFILES 32CUGTechFeel
MAXLOGMEMBERS 3CUGTechFeel
MAXDATAFILES 500CUGTechFeel
MAXINSTANCES 8CUGTechFeel
MAXLOGHISTORY 907CUGTechFeel
LOGFILECUGTechFeel
GROUP 1 '/oradata/testdb2/redo01.log' SIZE 50M,CUGTechFeel
GROUP 2 '/oradata/testdb2/redo02.log' SIZE 50M,CUGTechFeel
GROUP 3 '/oradata/testdb2/redo03.log' SIZE 50MCUGTechFeel
DATAFILECUGTechFeel
'/oradata/testdb2/system01.dbf',CUGTechFeel
'/oradata/testdb2/undotbs01.dbf',CUGTechFeel
'/oradata/testdb2/sysaux01.dbf',CUGTechFeel
'/oradata/testdb2/users01.dbf'CUGTechFeel
CHARACTER SET ZHS16GBKCUGTechFeel
;CUGTechFeel
CUGTechFeel
SQL>ALTER DATABASE OPEN RESETLOGS; CUGTechFeel
CUGTechFeel
------------------------------------------------------------------------------------------------- CUGTechFeel