利用STANDBY將單例項資料庫升級為RAC環境(一)
利用Oracle的STANDBY技術,可以將單例項資料庫升級到RAC資料庫。這種方式可以有效的降低單例項遷移到RAC環境的停機時間。
這篇文章介紹STANDBY資料庫建立的準備工作。
首先需要確保目標伺服器上的RAC環境已經建立,如果使用ASM作為儲存機制,則ASM例項也配置完成。
下面開始STANDBY資料庫建立的過程,更改源資料庫的FORCE LOGGING屬性:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 7月 1 00:18:29 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> SET PAGES 100 LINES 120
SQL> SELECT NAME, LOG_MODE, FORCE_LOGGING FROM V$DATABASE;
NAME LOG_MODE FORCE_
------------------ ------------------------ ------
TEST11G ARCHIVELOG NO
SQL> ALTER DATABASE FORCE LOGGING;
資料庫已更改。
由於要進行將目標資料庫升級為RAC環境,因此需要新增UNDOTBS2和THREAD2對應的日誌:
SQL> CREATE UNDO TABLESPACE UNDOTBS2
2 DATAFILE '/data/oracle/oradata/test11g/undotbs2_01.dbf' SIZE 1024M;
表空間已建立。
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4
2 '/data/oracle/oradata/test11g/redo04.log' SIZE 50M;
資料庫已更改。
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 5
2 '/data/oracle/oradata/test11g/redo05.log' SIZE 50M;
資料庫已更改。
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 6
2 '/data/oracle/oradata/test11g/redo06.log' SIZE 50M;
資料庫已更改。
SQL> ALTER DATABASE ENABLE THREAD 2;
資料庫已更改。
由於RMAN的DUPLICATE建立STANDBY,沒有辦法將資料檔案放到遠端的ASM磁碟組中,因此採用手工建立備份的方法,首先將所有的表空間置於BACKUP狀態:
SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' BEGIN BACKUP;'
2 FROM DBA_TABLESPACES
3 WHERE CONTENTS != 'TEMPORARY';
'ALTERTABLESPACE'||TABLESPACE_NAME||'BEGINBACKUP;'
---------------------------------------------------------------------------------
ALTER TABLESPACE SYSTEM BEGIN BACKUP;
ALTER TABLESPACE SYSAUX BEGIN BACKUP;
ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
ALTER TABLESPACE UNDOTBS2 BEGIN BACKUP;
ALTER TABLESPACE USERS BEGIN BACKUP;
ALTER TABLESPACE YANGTK BEGIN BACKUP;
ALTER TABLESPACE TEST BEGIN BACKUP;
已選擇7行。
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE SYSAUX BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE UNDOTBS2 BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE USERS BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE TEST BEGIN BACKUP;
表空間已更改。
下面將資料檔案傳送到遠端伺服器的ASM磁碟組上,方法其實有很多,但是絕大部分需要額外的資料庫支援,比如如果遠端ASM例項上存在一個資料庫,那麼可以使用ftp的方式、DBMS_FILE_TRANSFER的方式等等。如果不依靠其他的資料庫輔助,那麼可以使用ftp到遠端磁碟,然後透過asmcmd工具將檔案複製到ASM磁碟組中。
由於目標伺服器上已經有rac資料庫存在,因此使用ftp的方式會更加的方便一些:
bash-3.00$ cd /data/oracle/oradata/test11g
bash-3.00$ ftp 172.0.2.62 7788
Connected to 172.0.2.62.
220- ser1
Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
220 ser1 FTP Server (Oracle XML DB/Oracle Database) ready.
Name (172.0.2.62:oracle): system
331 pass required for SYSTEM
Password:
230 SYSTEM logged in
Remote system type is Unix.
ftp> bin
200 Type set to I.
ftp> prompt
Interactive mode off.
ftp> cd sys
250 CWD Command successful
ftp> cd asm
250 CWD Command successful
ftp> cd data/test11g
250 CWD Command successful
ftp> mput sysaux01.dbf test01.dbf undotbs01.dbf redo0*.log users01.dbf system01.dbf undotbs2_01.dbf yangtk01.dbf
200 PORT Command successful
150 BIN Data Connection
550- Error Response
ORA-31199: Warning in processing file +data/test11g/sysaux01.dbf
ORA-19698: +DATA/test11g/sysaux01.dbf is from different database: id=2655088921, db_name=TEST11G
550 End Error Response
200 PORT Command successful
150 BIN Data Connection
550- Error Response
ORA-31199: Warning in processing file +data/test11g/test01.dbf
ORA-19698: +DATA/test11g/test01.dbf is from different database: id=2655088921, db_name=TEST11G
550 End Error Response
.
.
.
200 PORT Command successful
150 BIN Data Connection
550- Error Response
ORA-31199: Warning in processing file +data/test11g/yangtk01.dbf
ORA-19698: +DATA/test11g/yangtk01.dbf is from different database: id=2655088921, db_name=TEST11G
550 End Error Response
ftp> quit
221 QUIT Goodbye.
出現錯誤的原因是當前ftp的資料檔案也開啟asm的ftp埠的資料庫不符,這裡不用理會這個錯誤。
在源資料庫上可以關閉表空間的備份狀態:
SQL> ALTER TABLESPACE SYSTEM END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE SYSAUX END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE UNDOTBS2 END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE YANGTK END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE USERS END BACKUP;
表空間已更改。
SQL> ALTER TABLESPACE TEST END BACKUP;
表空間已更改。
在源資料庫的tnsnames.ora檔案中新增下面的TNS配置:
TEST11GR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.62)(PORT = 1521))
)
(CONNECT_DATA =
(SID = test11gr1)
(SERVER = DEDICATED)
)
)
下面可以在主庫修改初始化引數檔案:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TEST11G,TEST11GR)';
系統已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=
2 'LOCATION=/data/oradata/test11g/archivelog
3 VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
4 DB_UNIQUE_NAME=TEST11G';
系統已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=
2 'SERVICE=TEST11GR LGWR ASYNC
3 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
4 DB_UNIQUE_NAME=TEST11GR';
系統已更改。
SQL> ALTER SYSTEM SET FAL_SERVER=TEST11GR;
系統已更改。
SQL> ALTER SYSTEM SET FAL_CLIENT=TEST11G;
系統已更改。
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
系統已更改。
下面利用當前的初始化引數,建立PFILE,修改後用於STANBY資料庫的啟動,同時生成STANDBY CONTROLFILE,與修改後的PFILE檔案一起放到目標伺服器上:
SQL> CREATE PFILE='/export/home/oracle/inittest11gr.ora' FROM SPFILE;
檔案已建立。
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/export/home/oracle/control01.ctl';
資料庫已更改。
更改初始化引數,並新增RAC環境專用的初始化引數:
*.audit_file_dest='/data/oracle/admin/test11g/adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='+DATA/TEST11G/control01.ctl'
*.db_block_size=32768
*.db_domain='netdb'
*.db_name='TEST11G'
*.diagnostic_dest='/data/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=test11gXDB)'
*.fal_client='TEST11GR'
*.fal_server='TEST11G'
*.log_archive_config='DG_CONFIG=(TEST11G,TEST11GR)'
*.log_archive_dest_1='LOCATION=+DATA/TEST11G/archivelog
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=TEST11GR'
*.log_archive_dest_2='SERVICE=TEST11G LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=TEST11G'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=7398752256
*.pga_aggregate_target=2097152000
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.cluster_database=true
*.cluster_database_instances=2
*.db_unique_name='TEST11GR'
*.log_file_name_convert=('/data/oracle/oradata/test11g', '+DATA/TEST11G')
*.db_file_name_convert=('/data/oracle/oradata/test11g', '+DATA/TEST11G')
test11gr1.undo_tablespace='UNDOTBS1'
test11gr2.undo_tablespace='UNDOTBS2'
test11gr1.instance_number=1
test11gr2.instance_number=2
test11gr1.thread=1
test11gr2.thread=2
test11gr1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.62)(PORT=1521))'
test11gr2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.63)(PORT=1521))'
確保兩個節點上的對應目錄都已經建立。ASM上對應的儲存目錄也已經建立。
bash-3.00$ mkdir -p /data/oracle/admin/test11g/adump
bash-3.00$ mkdir /data/oracle/flash_recovery_area
準備工作基本上完成,下面準備在STANDBY的節點1上開啟STANDBY資料庫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-622177/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用STANDBY將單例項資料庫升級為RAC環境(四)單例資料庫
- 利用STANDBY將單例項資料庫升級為RAC環境(三)單例資料庫
- 利用STANDBY將單例項資料庫升級為RAC環境(二)單例資料庫
- 單例項環境利用備份恢復RAC資料庫(一)單例資料庫
- 單例項環境利用備份恢復RAC資料庫(四)單例資料庫
- 單例項環境利用備份恢復RAC資料庫(三)單例資料庫
- 單例項環境利用備份恢復RAC資料庫(二)單例資料庫
- RAC環境只啟動單例項資料庫單例資料庫
- 【RAC】將單例項備份集恢復為rac資料庫單例資料庫
- 【RAC】將RAC備份集恢復為單例項資料庫單例資料庫
- 將RAC備份集恢復為單例項資料庫單例資料庫
- 從單例項資料庫轉換到RAC環境——RAC的建立和配置單例資料庫
- RAC環境利用備份恢復RAC資料庫(一)資料庫
- rac環境下standby資料庫的實現資料庫
- Oracle 資料庫 升級為 RACOracle資料庫
- RAC環境的STANDBY資料庫備份報錯資料庫
- RAC環境單例項啟動資料庫收到ORA-29702報錯單例資料庫
- RAC環境下單例項啟動Oracle資料庫重建控制檔案案例單例Oracle資料庫
- RAC環境利用備份恢復RAC資料庫(五)資料庫
- RAC環境利用備份恢復RAC資料庫(四)資料庫
- RAC環境利用備份恢復RAC資料庫(三)資料庫
- RAC環境利用備份恢復RAC資料庫(二)資料庫
- 連線RAC資料庫中單個例項(一)資料庫
- 單例項恢復RAC資料庫步驟(一)單例資料庫
- rac 升級crs 升級資料庫軟體,升級資料庫資料庫
- RAC資料庫恢復到單例項資料庫資料庫單例
- 單例項資料庫expdp遷移到RAC庫單例資料庫
- 【RAC】在RAC環境中SQL*Plus命令對資料庫及例項的影響SQL資料庫
- RAC資料庫建立STANDBY(一)資料庫
- duplicate複製資料庫(rac-單例項)資料庫單例
- 恢復RAC資料庫到單例項(ASM)資料庫單例ASM
- 【kingsql分享】將RAC資料庫異機恢復到單例項(Ⅰ)SQL資料庫單例
- 【RAC】刪除RAC資料庫節點(一)——刪除資料庫例項資料庫
- 單例項環境下Oracle 11.2.0.3升級到11.2.0.4的過程單例Oracle
- 在 RHEL3 上將單一例項資料庫轉換為 Oracle RAC 10g (轉載)資料庫Oracle
- 單例項恢復RAC資料庫步驟(三)單例資料庫
- 單例項恢復RAC資料庫步驟(二)單例資料庫
- 連線RAC資料庫中單個例項(二)資料庫