在Linux中通過本地複製的方式建立多一個Oracle資料庫
關閉現有資料庫,設定好一個新的 SID 後,通過複製引數檔案為 spfile
整個過程都很順利,但是此時再試圖開啟原來的資料庫就會報錯了:
|
ORA-01102: cannot mount database in EXCLUSIVE mode |
而 alert 檔案中出現如下資訊:
1
2
3
4
5
6
7
8
9
10
11 |
Sat Oct 9 11:14:18 2010
ALTER DATABASE MOUNT
Sat Oct 9 11:14:18 2010
sculkget: failed to lock /u01/app/oracle/dbs/lkORA8I exclusive
sculkget: lock held by PID: 11621
Sat Oct 9 11:14:18 2010
ORA-09968: Message 9968 not found; No message file for product=RDBMS, facility=ORA
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 11621
Sat Oct 9 11:14:18 2010
ORA-1102 signalled during: ALTER DATABASE MOUNT... |
舊的資料庫的 SID 和 DB_NAME 均是 ORA8I,failed to lock /u01/app/oracle/dbs/lkORA8I exclusive 應該就是問題所在了,在引數檔案中的db_name好改,但是db_name還存在於控制檔案和資料檔案中,這些檔案怎麼改呢? 這個就要藉助nid程式了。
首先將新資料庫啟動到 mount 階段,假設新的資料庫的例項是oratmp,資料庫名也是oratmp。
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 |
[oracle@l004020 ~]$ export $ORACLE_SID=oratmp
[oracle@l004020 ~]$ nid target=sys/sys_password dbname=oratmp
DBNEWID: Release 10.2.0.2.0 - Production on Sat Oct 9 11:37:47 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to database ORA8I (DBID=152116074)
Connected to server version 10.2.0
Control Files in database:
/u02/oradata/oratmp/control01.ctl
/u02/oradata/oratmp/control02.ctl
/u02/oradata/oratmp/control03.ctl
Change database ID and database name ORA8I to ORATMP? (Y/[N]) => y
Proceeding with operation
Changing database ID from 152116074 to 3320092043
Changing database name from ORA8I to ORATMP
Control File /u02/oradata/oratmp/control01.ctl - modified
Control File /u02/oradata/oratmp/control02.ctl - modified
Control File /u02/oradata/oratmp/control03.ctl - modified
Datafile /u02/oradata/oratmp/system01.dbf - dbid changed, wrote new name
Datafile /u02/oradata/oratmp/undotbs01.dbf - dbid changed, wrote new name
Datafile /u02/oradata/oratmp/sysaux01.dbf - dbid changed, wrote new name
Datafile /u02/oradata/oratmp/users01.dbf - dbid changed, wrote new name
Datafile /u02/oradata/ora8i/temp01.dbf - dbid changed, wrote new name
Control File /u02/oradata/oratmp/control01.ctl - dbid changed, wrote new name
Control File /u02/oradata/oratmp/control02.ctl - dbid changed, wrote new name
Control File /u02/oradata/oratmp/control03.ctl - dbid changed, wrote new name
Instance shut down
Database name changed to ORATMP.
Modify parameter file and generate a new password file before restarting.
Database ID for database ORATMP changed to 3320092043.
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.
[oracle@l004020 ~]$ sqlplus / as sysdba
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount ;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 2069648 bytes
Variable Size 104860528 bytes
Database Buffers 50331648 bytes
Redo Buffers 10510336 bytes
ORA-01103: database name 'ORATMP' in control file is not 'ORA8I'
SQL> alter system set db_name='oratmp' scope=spfile;
System altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount ;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 2069648 bytes
Variable Size 104860528 bytes
Database Buffers 50331648 bytes
Redo Buffers 10510336 bytes
Database mounted.
SQL> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs ;
Database altered.
#再看看hc
[oracle@l004020 dbs]$ ls -lth hc*
-rw-rw---- 1 oracle dba 1.6K 10-09 11:49 hc_oratmp.dat
-rw-rw---- 1 oracle dba 1.6K 10-09 11:34 hc_ora8i.dat |
簡單來說就是如下幾步:
1。startup mount ;
2。nid target=sys/sys_password dbname=oratmp
3。alter system set db_name=
4。shutdown
5。startup mount ;
6。alter database open resetlogs。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28673746/viewspace-758731/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過Linux虛擬機器拷貝方式複製Oracle資料庫伺服器Linux虛擬機Oracle資料庫伺服器
- 在Oracle中實現資料庫的複製Oracle資料庫
- 在Oracle中實現資料庫的複製(轉)Oracle資料庫
- 在同一臺主機上建立複製資料庫資料庫
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 通過命令在navicat中建立資料庫及表結構資料庫
- 【RMAN】使用duplicate本地複製資料庫資料庫
- 一次通過stream複製解決資料單向複製的案例
- Oracle同一臺伺服器建立多個資料庫Oracle伺服器資料庫
- Oracle活動資料庫複製Oracle資料庫
- oracle rman複製資料庫Oracle資料庫
- 資料庫複製方式進行資料庫恢復資料庫
- 資料庫複製(一)–複製介紹資料庫
- ZeroClipboard 多個複製按鈕,多個複製連結 實現方式
- 2.3 通過DBCA建立資料庫資料庫
- 美眾議院通過一套要求白宮建立一個APT資料庫的法案APT資料庫
- ORACLE 10G以上 在同一資料庫中複製使用者下的所有表Oracle 10g資料庫
- Oracle 之 Duplicate 複製資料庫Oracle資料庫
- oracle實驗-資料庫複製Oracle資料庫
- RMAN複製資料庫(一)資料庫
- 在另一個資料庫中建立一個與原來資料庫中許可權一樣的使用者資料庫
- 在Linux中,如何備份一個資料庫?Linux資料庫
- Oracle XE的資料庫建立過程Oracle資料庫
- 手工建立oracle資料庫的過程Oracle資料庫
- ORACLE使用者管理方式下備份資料和複製資料庫Oracle資料庫
- 通過現有的資料庫備份建立新的資料庫資料庫
- impdp在同一個資料庫中將一個使用者下的物件複製到另一個使用者下資料庫物件
- 通過本地直接連線linux伺服器的mysql資料庫Linux伺服器MySql資料庫
- 在 Linux 中複製文件Linux
- Duplicate 複製資料庫實驗過程資料庫
- 在一個資料庫中模擬兩個資料庫(每個資料庫中使用者都建立表的同義詞)資料庫
- 在MySQL資料庫中,這4種方式可以避免重複的插入資料!MySql資料庫
- 資料庫複製資料庫
- 複製資料庫資料庫
- linux[批量複製並重新命名]和[批量複製檔案到多個資料夾]Linux
- 測了一下 透過 DBCA 透過模板 複製資料庫(資料庫架構及資料)資料庫架構
- 如果通過語句Check兩個資料庫中Index是一樣的 ?資料庫Index
- Oracle備份與恢復系列(四)複製資料庫 續 手工複製資料庫的最簡操作Oracle資料庫