oracle9204(9i)_linux_logical db構建指南

wisdomone1發表於2010-02-04

與10g dg最大區別:你要一步步,如紅軍涉二萬五千里長片一般,配置9i logical dg,而非可由physical db conversion

1,前提:
       primary
              archive mode
              force logging
              log_parallelism配置為1
               enable supplemental  logging
    
--查是否開啟   

SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;

--如無,開啟
   
 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;


2,簡略描述下相關logical standby db creation processes
--就是切下日誌,讓上面supplemental logging生效,日誌不能共存於:no and yes
ALTER SYSTEM ARCHIVE LOG CURRENT;

--在主庫新增一個專用於logical standby db的表空間,為什麼呢?一般用於管理它們的資訊全儲存在system表空間,呵,為了減負;所以。

CREATE TABLESPACE logmnrts DATAFILE '/disk1/oracle/dbs/logmnrts.dbf'
2> SIZE 25M AUTOEXTEND ON MAXSIZE UNLIMITED;
SQL> EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('logmnrts');


---shutdown immediate 主庫,cp or scp 所有v$datafile內容

---把主庫startup mount,生產出一個用於logical standby db的控制檔案

SQL> ALTER DATABASE BACKUP CONTROLFILE TO
2> '/disk1/oracle/oradata/payroll/standby/payroll3.ctl';

---為了防止在構建logical dg,有不法分子對主庫進行ddl and dml

ALTER SYSTEM ENABLE RESTRICTED SESSION;

---open 主庫,且生成用於logical db的dictionary
SQL> ALTER DATABASE OPEN;
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;


--歸檔當前主庫日誌,且查詢最新的歸檔日誌,這個資訊,要用於在權建的備庫上註冊及應用喲,很重要的
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
SQL> SELECT NAME FROM V$ARCHIVED_LOG
2> WHERE (SEQUENCE#=(SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG
3> WHERE DICTIONARY_BEGIN = 'YES' AND STANDBY_DEST= 'NO'));

--根據主庫,生成備庫的pfile
需要注意幾個引數,其他無異
instance_name--不同於主庫的sid
lock_name_space --同上
standby_archive_dest --這目錄,就是主庫rfs過來的歸檔儲存地喲


---startup mount pfile --mount備庫
--如備庫資料檔案及日誌檔案所在與主庫有所不同,執行如下指令碼
SQL> ALTER DATABASE RENAME FILE '/disk1/oracle/oradata/payroll/system01.dbf'
2> TO '/disk1/oracle/oradata/payroll/standby/system01.dbf';

SQL> ALTER DATABASE RENAME FILE '/disk1/oracle/oradata/payroll/undotbs01.dbf'
2> TO '/disk1/oracle/oradata/payroll/standby/undotbs01.dbf'

SQL> ALTER DATABASE RENAME FILE '/disk1/oracle/oradata/payroll/cwmlite01.dbf'
2> TO '/disk1/oracle/oradata/payroll/standby/cwmlite01.dbf'
.

SQL> ALTER DATABASE RENAME FILE '/disk1/oracle/oradata/payroll/redo01.log'
2> TO '/disk1/oracle/oradata/payroll/standby/redo01.log';



---為了防止有淘氣小孩,破壞備庫內容
SQL> ALTER DATABASE GUARD ALL;
SQL> ALTER DATABASE OPEN RESETLOGS;

--邏輯備庫的db_name要用dbnewid修改下,在未重啟備庫前,重新生成密碼檔案及pfile中的db_name

shutdown immeidate
startup mount pfilr
nid TARGET=SYS/password@PAYROLL3 DBNAME=PAYROLL3 --

orapwd --生成備庫新的密碼檔案

vi pfile --備庫的喲,改db_name與nid的資訊一致

--這下以上db_name修改好了,關閉備庫,啟動備庫到mount
shutdown immediate
sqlplus '/as sysdba'
create spfile from pfile='備庫pfile' ---發現原來例項在未到nomount也可以根據pfile生成spfile

--open resetlogs備庫
alter database open resetlogs;


---為備庫刪除已存在或新增新的臨時檔案
select * from v$tempfile;

如有,刪除
ALTER DATABASE TEMPFILE 'tempfilename' DROP;


新增臨時檔案
  1. SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE 
    2> CONTENTS ='TEMPORARY';

    TABLESPACE_NAME
    --------------------------------
    TEMP

  2. Add a new temporary file, for example:
    SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 
    2> '/disk1/oracle/oradata/payroll/standby/temp01.dbf'
    3> SIZE 40M REUSE;


---註冊以上相關步在主庫,archive log current查詢到(已scp到備庫)相關歸檔檔案
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE 
2> '/disk1/oracle/oradata/payroll/standby/arc0004.001';


--開啟備庫sql apply
ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL;--注意用了initial,因為首次開啟,以後就可以不用這個選項了

可以採用如下
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;



















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-626852/,如需轉載,請註明出處,否則將追究法律責任。

相關文章