修改oracle数据库的名字
最近閑來無事,決定修改一下數據庫的名字,記得曾經學過通過重建控制文件來修改數據庫的名字,網上找了下也可以通過oracle自帶的nid修改數據庫的名字,不過這個方法有些麻煩,并且修改的數據庫名字不能帶“_"。
? 1,通過重建控制文件修改數據庫名字。
為了方便查找trace文件我們在進行備份控制文件的時候我們可以標記下trace文件:
alter session set? tracefile_identifier='control_bak'
下面我們備份我們的控制文件:
alter database backup controlfile to? trace;
10g是在我們的$ORACLE_BASE/admin\orcl\bdump下面的包含”control_bak“的文件
11g是在我們的$ORACLE_BASE/diag/rdbms/orcl/orcl/trace下面包含的”control_bak的文件
無論是那個版本的數據庫我們可以通過查詢查找到trace文件的路徑
select * from v$diag_info;
關閉數據庫,刪除控制文件(如果我們想要復制數據庫,我們可以把所有的文件復制到相應的位置,包括數據文件,歸檔文件,在線日志文件和和網絡有關的三個文件;不需要復制控制文件)
單純的修改數據庫的名字這步可以省略,我們需要修改pfile文件:主要是修改數據庫的文件路徑和數據庫的名字,以修改后的數據文件啟動新庫到nomount階段。
打開剛才找到的trace文件,復制創建控制文件的一段(一般以CREATE CONTROLFILE 開始)
我們需要修改兩個地方:
1,將“REUSE”修改為“set”,原數據庫名修改數據庫名,其他文件的路徑按需修改
· 2,需要移除RECOVER DATABASE USING BACKUP CONTROLFILE這一句
執行我們復制的腳步
以resetlog的方式打開我們的數據庫
alter database open resetlogs;
啟用臨時文件
alter tablespace temp add tempfile? '/.../temp01.dbf' reuse;
如果只是修改數據庫的名字這一步可以省略。
可以正常打開表示修改數據庫的名字成功
2,通過nid修改數據庫的名字
啟動數據庫到mount階段,修改數據庫的名字
startup mount;
host nid target=sys/orcl? dbname=new_name
關閉再次啟動到mount階段
alter system set db_name=new_name? scope=spfile;
shutdown immediate;
重建控制文件
host orapwd file=/../pwdorcl.ora? password=orcl entries=5(其實這個參數用處不大,多少個這樣的用戶是根據系統來設置的)
以resetlogs方式打開
startup mount;
alter database open resetlogs;
查看數據庫的名字
select dbid,name from v$database;
更改數據庫的instance_name,windows下面停止所有的服務
重建實例
oradim -delete -sid old_name;
oradim -new -sid new_name -intpwd pwd -startmode a -pfile c:\..\initonew_name.ora(修改原來的參數文件)
進入到數據庫中創建spfile文件
set oracle_sid=new_name
sqlplus sys/orcl as sysdba
create spfile from? pfile='c:\..\initnew_name.ora';
重新載入監聽文件
lsnrctl reload;
如果不能啟動可以執行resetlogs
alter database open resetlogs;
在使用2方法修改數據庫的名字的時候切忌修改的名字不能帶“_",否則會報:DIM-00003: 參數缺失變元。
網上查了下是oracle的一個bug,Oracle在Bug No. 6000490中進行了描述。
解決方式就是去掉”_",并說這個bug已經提交進行到開發,但是要等到12版本才能解決。
目前解決方式只能是去掉下劃線。
總結
以上是生活随笔為你收集整理的修改oracle数据库的名字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平安普惠能冻结所有银行卡吗
- 下一篇: 富途牛牛美股开户条件