您好,登錄后才能下訂單哦!
為了達到提升SGA和PGA得目的我會調整參數,還由于為了最小化誤操作順利的完成數據遷移工作,我會在各個步驟中給中具體的參數值、命令和需要建立的目錄。這里說明一下對于新的服務器經過分析我準備為SGA分配16GB內存,PGA分配到3GB,剩余的5GB來分配給系統使用。
1、遷移前幾天停止現有DATA GUARD,提前安裝好備庫服務器的系統和數據庫軟件。
2、遷移前一天停止RMAN腳本中的DELETE ALL INPUT來停止刪除歸檔日志文件。
3、全備前使用V$LOG來確定當前的日志序列號,為確定恢復所需要的歸檔日志文件做好準備。
4、在當前服務器中新建目錄(/??)來保存RMAN備份文件
5、使用RMAN全備命令進行完整的RMAN備份,指定目錄到新建的目錄(/??)中。同時保存RMAN備份日志,用來過后確定ORACLE控制文件所在的備份集備份片。
命令如下:
run {
backup format "/??/db_%s_%p_%T"
database plus archivelog
format "/??/arch_%s_%p_%T";
}
6、在原數據庫中使用CREATE PFILE FROM SPFILE來更新PFILE,保證所有的參數設置都是最新的
7、在目標服務器中通過DBCA新建數據庫,數據庫的名字和原數據庫一樣,我們的生產庫就為POMSPRO,但是其他的文件位置不需要更改,因為這個步驟只是為了建立初始實例(INSTANCE)
8、建立完成后刪除所有數據文件,日志文件,控制文件,同時刪除SPFILE。
9、在目標服務器中新建目錄,此目錄和原服務器中的目錄一樣,及和第5步中的目錄一樣(/??),用來存放RMAN全備的備份集備份片。
10、通過FTP傳輸所有備份集備份片到目標服務器中新建的目錄中及/??目錄中。
11、修改目標服務器中數據庫的PFILE,要求和原數據庫PFILE一樣。然后修改部分參數,如下:
log_archive_dest_1='LOCATION=/u01/oradata/gelcprod10g
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)'
pga_aggregate_target = 3221225472
sga_max_size= 17179869184
sga_target= 17072495001
data guard 參數
12、啟動數據庫到NOMOUNT狀態,此時實例已經啟動內存已經分配。
13、在目標服務器中新建目錄用來存在恢復的控制文件,參照PFILE中的配置及建立如下目錄
/oradata/gelcprod10g/GELCPRO/
14、使用命令恢復控制文件,命令如下
restore controlfile from ‘/??/??’
??代表的是第5步確定的控制文件所在的備份片
15、啟動數據庫到MOUNT狀態,此時數據庫已經加載了控制文件。
16、在目標服務器中新建數據文件目錄,日志目錄,歸檔目錄,同時建立各種TRACE
文件目錄。我們需要建立的目錄如下
/u01/oradata/gelcprod10g 歸檔位置
/oradata/gelcprod10g/GELCPRO/ 數據文件所在位置
/oradata/gelcprod10g/GELCPRO/ 日志文件組1所在位置
/u01/oradata/gelcprod10g/GELCPRO/ 日志文件組2所在位置
/home/oraprod/admin/GELCPRO/adump
/home/oraprod/admin/GELCPRO/bdump
/home/oraprod/admin/GELCPRO/cbump
/home/oraprod/admin/GELCPRO/udump
/home/oraprod/admin/GELCPRO/dpdump
/home/oraprod/admin/GELCPRO/pfile
這些目錄用來存放各種TRACE
17、通過RESOTRE DATABASE來進行數據文件還原
到此準備工作完成,下面的步驟需要斷開所有應用,停止所有業務進行操作
18、關閉應用,確定不會再有新的數據寫入到數據庫。
19、遷移前提取原庫的對象信息,使用命令如下
select count(*) from user_tables;
select count(*) from user_indexes;
select count(*) from user_views;
select count(*) from user_synonyms;
select OBJECT_TYPE, count(*)
from user_objects
group by OBJECT_TYPE
having OBJECT_TYPE not in ('TABLE', 'INDEX', 'VIEW','SYNONYM');
select count(*) from dba_users;
select count(*) from dba_db_links;
select count(*) from user_jobs;
20、進行多次日志切換,確保所有更改的數據都已經寫入到歸檔日志,我們的日志組為3組所以進行4-6次切換保證所有的數據都進入了歸檔日志,使用日下命令 ALTER SYSTEM SWITCH LOGFILE
21、通過在原數據庫查看V$LOG來確定當前日志序列(SEQUENCE#),判斷出需要拷貝的歸檔日志文件,為了更加安全可以在最早的歸檔以前再多取幾個。
22、通過FTP拷貝原服務器歸檔日志到目標服務器相應的目錄中,及拷貝到目錄/u01/oradata/gelcprod10g中。
23、通過應用歸檔日志文件進行恢復。命令如下
recover database until logseq **
**代表最后一個歸檔日志文件的SEQUENCE#
24、使用ALTER DATABASE OPEN RESETLOGS來打開數據庫。
25、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
26、使用命令STARTUP MIGRATE啟動數據庫。
27、運行rdbms/admin 下的utlirp.sql腳本
28、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
29、使用命令STARTUP來啟動數據庫。
30、運行rdbms/admin 下的utlrp.sql腳本
31、使用命令SHUTDOWN IMMEDIATE來關閉數據庫。
32、使用命令STARTUP來啟動數據庫。
到此數據遷移工作完成,下面的步驟進行IP切換和監聽配置,此時需要關閉原庫并且禁用網絡服務,避免IP沖突
33、關閉原生產服務器網絡服務使用命令如下
service network stop
34、修改/etc/sysconfig/network-scripts/ ifcfg-eth0參數如下
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.8.255
IPADDR=192.168.8.9
NETMASK=255.255.255.0
NETWORK=192.168.8.0
ONBOOT=yes
TYPE=Ethernet
35、修改/etc/hosts中主機名所對應的IP 192.168.8.9
36、使用命令重啟網絡服務,命令如下
service network restart
37、通過FTP拷貝原數據庫的listener.ora和tnsnames.ora文件到目標服務器的network/admin目錄下
38、通過命令來重啟ORACLE監聽器,命令如下
Lsnrctl stop
Lsnrctl start
到此IP切換工作完成,下面的步驟是進行對象的驗證,作為DBA只能對數據庫中的各種對象進行驗證,而不會對具體的數據進行驗證
39、驗證用戶所擁有的表數量,使用如下命令
select count(*) from user_table;
40、驗證用戶所擁有的索引數量,使用如下命令
select count(*) from user_indexes;
41、驗證用戶所擁有的視圖數量,使用如下命令
select count(*) from user_views;
42、驗證用戶所擁有的同義詞數量,使用如下命令
select count(*) from user_synonyms;
43、驗證其他一些對象,包括過程,函數,觸發器等,使用如下命令
select OBJECT_TYPE, count(*)
from user_objects
group by OBJECT_TYPE
having OBJECT_TYPE not in ('TABLE', 'INDEX', 'VIEW');
44、驗證所有用戶使用如下命令
select count(*) from dba_users;
45、驗證所用Dblink使用如下命令
select count(*) from dba_db_links;
46、驗證用戶擁有的JOB使用如下命令
select count(*) from user_jobs;
至此我們DBA所能做的數據驗證結束,需要開發人員進行詳細的數據抽樣驗證,等到數據驗證完成我們就可以啟動應用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。