當前位置:首頁 > 芯聞號 > 充電吧
[導讀]環(huán)境描述: 源數據庫 Oracle服務器版本:? Oracle9.2.0.8 數據庫名稱 db_name = oradb? instance_name=oradb 操作系統(tǒng)版本: windows 20

環(huán)境描述:

源數據庫

Oracle服務器版本:? Oracle9.2.0.8

數據庫名稱 db_name = oradb? instance_name=oradb

操作系統(tǒng)版本: windows 2003

實例安裝位置: $oracle_base = e:/oracle

?

目標數據庫

Oracle服務器版本:? Oracle9.2.0.8

數據庫名稱 db_name = orcl? instance_name=orcl

操作系統(tǒng)版本: windows xp

實例安裝位置: $oracle_base = d:/oracle

?

執(zhí)行步驟. 一, 數據庫名稱和sid要求相同

1.1 數據庫名稱的相關概念

一, 數據庫名

數據庫名是數據庫的身份證號碼, 用于表示一個數據庫. 在參數文件(?/database/initSID.ora)中用DB_NAME表示.

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='oradb'

*.instance_name='oradb'

數據庫名是在安裝數據庫, 創(chuàng)建新的數據庫, 創(chuàng)建數據控制文件, 修改數據庫結構, 備份與恢復數據庫時都需要使用到的.

查詢數據庫名稱:

n???????? Select name, dbid from v$database;

u?????? Show parameter db_name;

u?????? 查看參數文件initsid.ora

二, 數據庫實例名

數據庫實例名是用戶和操作系統(tǒng)進行聯(lián)系的標識, 也就是說數據庫和操作系統(tǒng)之間的交互使用的是數據庫實例名.

實例名在參數文件中也存在, 該參數為instance_name.

數據庫名和實例名可以相同也可以不同, 在一般情況下, 數據庫名和實例名是一對一的關系,但如果在oracle并行服務器架構(即oracle實時應用集群)中, 數據庫名和實例名是一對多的關系.

查詢當前數據庫實例名.

????????? 使用sql語句. Select instance_name from v$instance;

????????? 使用show命令. Show parameter instance_name;

????????? 查看參數文件initsid.ora.

數據庫實例名和oracle_sid兩者都表示oracle實例, 但是有區(qū)別的. Instance_name是oracle數據庫參數. 而oracle_sid是操作系統(tǒng)的環(huán)境變量. Oracle_sid用于于操作系統(tǒng)交互, 也就是說, 從操作系統(tǒng)角度訪問實例名, 必須通過oracle_sid.

Oracle_sid和instance_name必須是一致的, 否則用戶將會受到一個錯誤. 在unix平臺, 是oracle not available, 在winnt平臺, 是tns, 協(xié)議適配器錯誤.

三, 數據庫域名與全局數據庫名

隨著由多個數據庫構成的分布式數據庫的普及, 單一的db_name表示的數據庫命名方式給數據庫的管理造成了一定的負擔. 因為分布式環(huán)境下的數據庫名字可能一樣, 造成管理上的混亂.

為了解決這種情況, 引入了db_domain參數, 這樣在數據庫的標識是由db_name和db_domain兩個參數共同決定的. 避免了因為數據庫重名而造成管理上的混亂.

查詢數據庫域名.

????????? 使用sql命令 select value from v$parameter where name = ‘db_domain’;

????????? 使用show命令 show parameter domain

????????? 查看參數文件initsid.ora

四, 數據庫服務名

該參數是oracle8i新引入的. 在8i之前, 我們用sid來表示數據庫的一個實例, 但是在oracle的并行環(huán)境中, 一個數據庫對應多個實例, 這樣就需要多個網絡服務名, 設置繁瑣. 為了方便并行環(huán)境中的設置, 引進了service_name參數. 該參數對應一個數據庫, 而不是一個實例. 該參數的初始值為db_name.db_domain, 即等于global_name. 如果數據庫有域名, 則數據庫服務器名就是全局數據庫名; 否則, 數據庫服務名與數據庫名相同.

查詢數據庫服務名的方法.

使用sql語句: select value from v$parameter where name = ‘service_name’;

使用show命令: show parameter service_name;

查看參數文件: 在參數文件initsid.ora中查詢.

五, 網絡服務名

網絡服務名, 又稱為數據庫別名, 是客戶端程序訪問數據庫時需要的配置. 屏蔽客戶端如何連接到服務器端的細節(jié), 實現(xiàn)了數據庫的位置透明的特性. 網絡服務名被記錄在tnsnames.ora文件中.

六, 總結

Oracle中各種命名的比較.

名稱

查詢方式

Db_name

Select name from v$database

Instance_name

Select instance_name from v$instance

Oracle_sid

值和instance_name相同

Db_domain

Select value from v$parameter where name = ‘db_domain’;

Global_name

Db_name.db_dommain

Service_name

Select value from v$parameter where name=’service_name’;

Net_service_name

檢查tnsnames.ora文件

?

1.2 修改oracle數據庫的db_name和sid

一,用oracle自帶的工具nid改數據庫名

在本例中,假設原來的數據庫名為orcl, 要改成oradb, 原實例名(service_name, instance_name)orcl要改成oradb。

Nid是自帶的工具, 在oracle_home/bin目錄下, 以下方法假設登陸到需要修改db_name的數據庫服務器本地處理。

1, 在mount狀態(tài)下使用nid修改sid

C:/Documents and Settings/Administrator>sqlplus /nolog

SQL> conn / as sysdba

SQL> shutdown immediate

SQL> startup mount? -- nid需要在mount狀態(tài)下處理。

SQL> host nid target=/ dbname=oradb

處理過程中需要與用戶執(zhí)行一次交互。

Change database ID and database name ORCL to ORADB? (Y/[N]) => Y

2, 在mount狀態(tài)下修改db_name

完成上述操作后需要再次啟動到mount狀態(tài)修改參數文件。

SQL> shutdown immediate

SQL> startup mount

SQL> alter system set db_name=oradb scope=spfile;

SQL> shutdown immediate

3, 重建pwdsid.ora文件

Passwd文件通常放在oracle_home/database下, 文件命名形式為pwdsid.ora, sid為實例名(instance_name)

SQL> host orapwd file=D:/oracle/ora92/database/pwdorcl.ora password=sys_47522341 entries=5;

4, 開啟數據庫(要open resetlogs)

SQL> startup mount

SQL> alter database open resetlogs;

5, 檢查修改后的結果

SQL> select name from v$database;

二, 使用oradim工具修改instance_name

執(zhí)行完步驟一中的操作后, 數據庫db_name變?yōu)閛radb, 但instance_name依然還是orcl。 這個名稱需要使用oracle的oradim工具進行修改。

1, 如果是windows系統(tǒng), 先要將所有的oracle服務關閉, 否則會出錯。

2, 將之前的instance_name刪除

C:/Documents and Settings/Administrator>oradim -delete -sid orcl

3, 創(chuàng)建密碼文件

SQL> host orapwd file=D:/oracle/ora92/database/pwdoradb.ora password=sys_47522341 entries=5;

4, 創(chuàng)建一個新的sid。

C:/Documents and Settings/Administrator>oradim -new -sid oradb

C:/Documents and Settings/Administrator>oradim -new -sid oradb

5, 進入oracle并創(chuàng)建spfile

設置環(huán)境變量oracle_sid=oradb

C:/Documents and Settings/Administrator>set oracle_sid = oradb

修改spfile里實例信息(包含路徑里的zs改為zstest,OS目錄zs改為zstest)
//如果此處不修改路徑中的zs到zstest則后面應無需重建控制文件
C:/Documents and Settings/Administrator>sqlplus sys/admin as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 7月 3 16:23:16 2008

Copyright (c) 1982, 2005, Oracle.? All rights reserved.

已連接到空閑例程。

//先從spfile創(chuàng)建pfile

SQL> create pfile='D:/oracle/product/10.2.0/admin/zs/pfile/init080703.ora' from
spfile='D:/oracle/product/10.2.0/db_1/database/SPFILEZS.ORA';

文件已創(chuàng)建。

//調整pfile里的參數后再創(chuàng)建spfile
SQL> create spfile='D:/oracle/product/10.2.0/db_1/database/SPFILEZSTEST.ORA' fro
m pfile='D:/oracle/product/10.2.0/admin/zstest/pfile/init080703.ora';

文件已創(chuàng)建。

5)更改listener.ora和tnsnames.ora并重啟listener

直接編輯這兩個文件將里面的sid_name、dbname和service_name都改為zstest

6)因為更改了OS數據庫目錄路徑(zs改為zstest)所以需要重建controlfiles
//創(chuàng)建控制文件的腳本可以再舊數據庫的時候使用如下語句獲得:
alter database backup controlfile to trace as 'd:/controlfile.txt';
再做修改即可使用。
SQL> CREATE CONTROLFILE REUSE DATABASE "ZSTEST" RESETLOGS? ARCHIVELOG
? 2????? MAXLOGFILES 16
? 3????? MAXLOGMEMBERS 3
? 4????? MAXDATAFILES 100
? 5????? MAXINSTANCES 8
? 6????? MAXLOGHISTORY 292
? 7? LOGFILE
? 8??? GROUP 1 (
? 9????? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/REDO01A.LOG',
?10????? 'E:/ORADATA/ZSTEST/REDO01B.LOG'
?11??? ) SIZE 250M,
?12??? GROUP 2 (
?13????? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/REDO02A.LOG',
?14????? 'E:/ORADATA/ZSTEST/REDO02B.LOG'
?15??? ) SIZE 250M,
?16??? GROUP 3 (
?17????? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/REDO03A.LOG',
?18????? 'E:/ORADATA/ZSTEST/REDO03B.LOG'
?19??? ) SIZE 250M
?20? DATAFILE
?21??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/SYSTEM01.DBF',
?22??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/UNDOTBS01.DBF',
?23??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/SYSAUX01.DBF',
?24??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/USERS01.DBF',
?25??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/EXAMPLE01.DBF',
?26??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/ZSKJ_DATA01.DBF',
?27??? 'E:/ORADATA/ZSTEST/ZSKJ_DATA02.DBF',
?28??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/ZS_DATA01.DBF',
?29??? 'E:/ORADATA/ZSTEST/ZS_DATA02.DBF',
?30??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/ZS_IDXDATA01.DBF',
?31??? 'E:/ORADATA/ZSTEST/ZS_IDXDATA02.DBF',
?32??? 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST/ZSKJ_IDXDATA01.DBF',
?33??? 'E:/ORADATA/ZSTEST/ZSKJ_IDXDATA02.DBF'
?34? CHARACTER SET ZHS16GBK;

控制文件已創(chuàng)建。

SQL> alter database open resetlogs;

數據庫已更改。

//重建完控制文件記得要重新啟用temp表空間,再trace的控制文件腳本里有提示
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ZSTEST
/TEMP01.DBF'
? 2?????? SIZE 20971520? REUSE AUTOEXTEND ON NEXT 524288000? MAXSIZE 32767M;

表空間已更改。

二, 鏡像遷移數據文件,控制文件以及歸檔日志文件

2.1 數據文件存儲位置

視圖 v$datafile;

Select file#, name from v$datafile;

2.2 控制文件存儲位置

視圖 v$controlfile

Select name from v$controlfile;

2.3 聯(lián)機重做日志文件存儲位置

視圖 v$logfile;

Select * from v$logfile;

三, 鏡像跟蹤文件和警告文件到目標數據庫

如果源數據庫的安裝路徑和目標數據庫不一致, 則需要在源數據庫中先使用spfilesid.ora創(chuàng)建一個initsid.ora, 然后到目標數據庫中修改initsid.ora對應文件的配置. 然后再創(chuàng)建一個spfile.ora.

3.1 在源數據庫中創(chuàng)建pfile.

SQL> create pfile='E:/oracle/admin/oradb/pfile/initoradb20090922.ora' from spfile='E:/oracle/ora92/database/spfileoradb.ora';

3.2 將跟蹤文件和警告文件鏡像到目標數據庫

源數據庫路徑.

$oracle_base/admin

3.3 在目標數據庫中修改pfile

修改在3.1中生成的pfile文件initoradb20090922.ora, 將其中與目標數據庫配置路徑不同的地方替換為目標數據庫中對應的路徑

3.4 常見的手工修改spfile的錯誤

Oracle的spfile是一個二進制文件, 這個文件不能采用手工修改的方式進行維護. 可以選擇的維護方式有兩種, 一是在登錄到服務器后使用alter system set … scope=both/spfile來實現(xiàn). 或者是先通過create pfile from spfile.. 然后修改pfile的內容. 之后使用startup pfile=’’啟動數據庫后,再執(zhí)行create create spfile from pfile來完成對spfile的修改.

在數據庫的遷移中, 只能采用第二種方式.

四, 重新生成控制文件

4.1 在目標數據庫中備份控制文件到跟蹤文件中

首先,我們使用下述命令備份源數據庫的控制文件;

SQL> alter database backup controlfile to trace as 'd:/zhanglei.txt';

4.2 修改控制文件中的內容

將上面步驟產生的控制文件中與目標數據庫不匹配的內容使用目標數據庫的路徑替換.

CREATE CONTROLFILE REUSE DATABASE "ORADB" NORESETLOGS? ARCHIVELOG

--? SET STANDBY TO MAXIMIZE PERFORMANCE

??? MAXLOGFILES 50

??? MAXLOGMEMBERS 5

??? MAXDATAFILES 100

??? MAXINSTANCES 1

??? MAXLOGHISTORY 226

LOGFILE

? GROUP 1 'E:/ORACLE/ORADATA/ORADB/REDO01.LOG'? SIZE 100M,

? GROUP 2 'E:/ORACLE/ORADATA/ORADB/REDO02.LOG'? SIZE 100M,

? GROUP 3 'E:/ORACLE/ORADATA/ORADB/REDO03.LOG'? SIZE 100M

-- STANDBY LOGFILE

?

DATAFILE

? 'E:/ORACLE/ORADATA/ORADB/SYSTEM01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/UNDOTBS01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/CWMLITE01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/DRSYS01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/EXAMPLE01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/INDX01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/ODM01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/TOOLS01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/USERS01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/XDB01.DBF',

? 'E:/ORACLE/ORADATA/ORADB/ASSM.DBF',

? 'E:/ORACLE/ORADATA/ORADB/PERFSTAT01.DBF',

? 'E:/ORACLE/ORADATA/ZHANGLEI.DBF',

? 'E:/ORACLE/ORADATA/ORADB/CTL01.DBF'

CHARACTER SET ZHS16GBK

;

4.3 在目標數據庫中執(zhí)行替換后的控制文件

將上面替換后的sql語句拿到目標數據庫中進行執(zhí)行

完成后, 可以使用下面的語句打開數據庫.

Sql> alter database open resetlogs;

4.4 生成spfile文件

SQL> create spfile='D:/oracle/ora92/database/spfileoradb.ora' from pfile='D:/oracle/admin/oradb/pfile/initoradb20090922.ora';

4.5 重啟數據庫完成數據庫遷移

到這一步完成, 數據庫已經遷移成功.

重新啟動數據庫, 使用spfile登錄.

SQL> shutdown immediate;

SQL> startup

?

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉