修改数据库名(dbname),和网上流行的版本不一样,这个是oracle 11g2版数据库改名,不是10g的。
前面讲过修改sid名字,虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)
下面详细描述,更改数据库名字的。详细过程如下:
1、更改存档日志,默认安装完的oracle 测试环境是非存档模式。
要改成存档的,这个目的是为以后保存生成控制文件做准备。
sqlplus "/as sysdba"
shutdown immediate startup mount alter database archivelog alter database open2、切换在线日志——使数据库做checkpoint(第一步的四个步骤,就是为了保证这一步执行成功)
SQL> alter system archive log current; System altered.
3、生成重建控制文件的脚本**********************resetlogs;指导老师点评:在正式的生产环境中resetlogs不能用,SQL> alter database backup controlfile to trace resetlogs; Database altered.
4、关闭数据库,需要干净关闭,不能shutdown abort
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options5、进入$ORACLE_BASE/diag/rdbms/<sid>/<sid>trace目录中,找到最新生成的trc文件,这就是重建控制文件的脚本,这里要特别注意。
这个地方和10g不一样,11g取消了admin/<sid>udump目录,用diag的某个目录取代,
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 nihao_ora_7789.trc
6、用存当跟踪去生成:[oracle@localhost trace]$ cp nihao_ora_5835.trc nihao.sql [oracle@localhost trace]$ vim nihao.sql7、编辑nihao.sql,结果类似如下的行,保留下面的行,并且 指导老师点评:下面ARCHIVELOG 和当前实例的archivelog状态有关
STARTUP NOMOUNT CREATE CONTROLFILE SET DATABASE "NIHAO" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/nihao/redo01.log' SIZE 50M BLOCKSIZE 512, GROUP 2 '/u01/app/oracle/oradata/nihao/redo02.log' SIZE 50M BLOCKSIZE 512, GROUP 3 '/u01/app/oracle/oradata/nihao/redo03.log' SIZE 50M BLOCKSIZE 512 DATAFILE '/u01/app/oracle/oradata/nihao/system01.dbf', '/u01/app/oracle/oradata/nihao/sysaux01.dbf', '/u01/app/oracle/oradata/nihao/undotbs01.dbf', '/u01/app/oracle/oradata/nihao/users01.dbf', '/u01/app/oracle/oradata/nihao/example01.dbf' CHARACTER SET ZHS16GBK ; --RECOVER DATABASE USING BACKUP CONTROLFILE ALTER DATABASE OPEN RESETLOGS; ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/nihao/temp01.dbf' SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
这是改好的nihao.sql,看看文件的目录,以后要把相应的目录改过来,要不这段SQL不执行。8、目录更改:
8.1
存档日志目录:
[oracle@localhost flash_recovery_area]$ mv ORCL/ NIHAO/
9、用spfile创造新的pfile
[oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 30 11:30:26 2011 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> create pfile='?/dbs/initnihao.ora' from spfile; File created. SQL> exit Disconnected10、进入$ORACLE_HOME/dbs目录
11、编辑initnihao.ora文件
搜索所有的orcl,重命令为nihao,搜索所有的ORCL,重命名为NIHAO;
12、删除控制文件将原来的控制文件删除或重命名
控制文件的位置名称可以通过查看11步骤中的*.control_files来确定13、
13.1
进入$ORACLE_BASE/admin目录
将orcl目录重命名为nihao
[oracle@localhost flash_recovery_area]$ mv orcl/ nihao/
13.2修改数据文件存放目录:[oracle@localhost oradata]$ mv orcl/ nihao/ [oracle@localhost oradata]$ ls nihao
13.3把dbrms下面的目录orcl的改成nihao,如下面所示:
@/u01/app/oracle/diag/rdbms/nihao/nihao/trace/nihao.sql
14、调用前面步骤修改好的nihao.sql
SQL> @/u01/app/oracle/diag/rdbms/nihao/nihao/trace/nihao.sql ORA-01081: cannot start already-running ORACLE - shut it down first Control file created. Database altered. Tablespace altered. SQL> startup ORA-01081: cannot start already-running ORACLE - shut it down first SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 539848704 bytes Fixed Size 1337748 bytes Variable Size 327157356 bytes Database Buffers 205520896 bytes Redo Buffers 5832704 bytes Database mounted. Database opened. SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string nihao db_unique_name string nihao global_names boolean FALSE instance_name string nihao lock_name_space string log_file_name_convert string service_names string nihao.localdomain SQL>
第二句告诉你,正在运行,但是控制文件,数据文件,表空间都做好了。意味着数据库改名成功。
下面验证:
第8行关闭数据库,
第12行启动数据库,
第21行查看数据库,结果,全部改动成功,谢谢大家。
15、最后再次验证:
SQL> select name from v$database; NAME --------- NIHAO SQL>
后记,在网上没有找到oracle 11g2 改数据库名的例子和方法,自己摸索的,目录改了对于新手来说真的很麻烦,连照猫画虎都不能了。
费了两周。