日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle active data guard,Oracle Active DataGuard配置手册(一)

發布時間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle active data guard,Oracle Active DataGuard配置手册(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一章 搭建Active DG

開始配置dg

Primary db:

1、 判斷dataguard是否安裝

SQL> select * from v$option where parameter = 'Oracle Data Guard';

PARAMETER

----------------------------------------------------------------

VALUE

----------------------------------------------------------------

Oracle Data Guard

TRUE

2、 修改主庫處于歸檔模式

SQL> startup mount

SQL> alter database archivelog;

Database altered.

SQL> archive log list

Database log mode????????????? Archive Mode

Automatic archival???????????? Enabled

Archive destination??????????? USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence???? 34

Next log sequence to archive?? 36

Current log sequence?????????? 36

3、 將primary 數據庫置為FORCE LOGGING 模式。通過下列語句:

SQL> select FORCE_LOGGING? from? v$database;

FOR

---

NO

SQL> alter database force logging;

Database altered.

4、 主庫創建密碼文件

同一個Dataguard中所有數據庫必須擁有獨立的密碼文件,并且保證sys用戶擁有相同密碼來保證redo的傳輸。

$ orapwd file=orapworcl password=welcome entries=3

5、 主庫配置standby redo log

SQL> startup mount

Database mounted.

SQL> alter database add standby logfile group 4

2? ('/u4/ora11/app/orcl/oradata/orcl/dg_redo1.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 5

2? ('/u4/ora11/app/orcl/oradata/orcl/dg_redo2.log') size 50m;

Database altered.

6 配置監聽

主庫:

$ cat listener.ora

ORCL=

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.190)(PORT = 1522))

)

)

ADR_BASE_LISTENER = /u4/ora11/app/orcl

$ cat tnsnames.ora

LISTENER_ORCL =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl.tools.com)

)

)

DG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg.tools.com)

)

)

備庫:

$ cat lis*.ora

DG=

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

)

)

ADR_BASE_LISTENER = /u4/dg/app/oradg

$ cat tnsnames.ora

LISTENER_DG =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

DG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg.tools.com)

)

)

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl.tools.com)

)

)

7、修改Primary 數據庫客戶端初始化參數文件

注:主要此處修改項較多,為了方便,我們首先創建并修改pfile,然后再通過pfile 重建spfile,你當然也可以通過alter system set 命令直接修改spfile 內容。

SQL> create pfile from spfile;

File created.

修改主庫初始化參數文件,增加下列內容

*.DB_UNIQUE_NAME=orcl

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'

*.LOG_ARCHIVE_DEST_1= 'LOCATION=/u4/ora11/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'

*.LOG_ARCHIVE_DEST_2='SERVICE=dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#--------配置standby 角色的參數用于角色轉換

*.FAL_SERVER=dg

*.FAL_CLIENT=orcl

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT='/u4/dg/app/oradg/oradata/dg','/u4/ora11/app/orcl/oradata/orcl '

*.LOG_FILE_NAME_CONVERT= '/u4/dg/app/oradg/oradata/dg','/u4/ora11/app/orcl/oradata/orcl '

然后將Pfile 拷貝到備庫上

$ cp /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/initorcl.ora .

$ pwd

/u4/dg/app/oradg/product/11.2.0/dbhome_1/dbs

$ id

uid=1010(oradg) gid=110(dba) groups=110(dba)

8 在主庫上創建備份庫需要的控制文件

SQL> startup mount

SQL> ALTER? DATABASE? CREATE? STANDBY? CONTROLFILE? AS? '/tmp/orcl.ctl';

Database altered.

9、用修改后的init.ora啟動主庫,然后創建主庫的spfile

SQL> create spfile from pfile;

File created.

10、復制數據文件到standby 服務器(方式多樣,不詳述)

注意需要復制所有數據文件,備份的STANDBY控制文件及客戶端初始化參數文件(這里最好把密碼文件也復制到備庫,否則后面有可能會報錯,具體錯誤后面會體現)

在standby庫操作:

$ cp -r /u4/ora11/app/orcl/oradata/orcl .

$ pwd

/u4/dg/app/oradg/oradata

$ ls

dg_bak? orcl

$ mv orcl dg

$ cp /tmp/orcl.ctl /u4/dg/app/oradg/oradata/dg

$ cd /u4/dg/app/oradg/oradata/dg

$ ls

control01.ctl? dg_redo2.log? redo01.log? redo03.log??? system01.dbf? undotbs01.dbf

dg_redo1.log?? orcl.ctl????? redo02.log? sysaux01.dbf? temp01.dbf??? users01.dbf

復制主庫參數文件:

$ cp /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/initorcl.ora .

$ pwd

/u4/dg/app/oradg/product/11.2.0/dbhome_1/dbs

Standby db配置

1、?? 創建控制文件

$ mv orcl.ctl control01.ctl

$ cp control01.ctl control02.ctl

$ pwd

/u4/dg/app/oradg/oradata/dg

2、配置listener,tnsname

同前面

3、設置備庫參數文件

$ cat initdg.ora

dg.__db_cache_size=603979776

dg.__java_pool_size=16777216

dg.__large_pool_size=16777216

dg.__oracle_base='/u4/dg/app/oradg'#ORACLE_BASE set from environment

dg.__pga_aggregate_target=872415232

dg.__sga_target=1308622848

dg.__shared_io_pool_size=0

dg.__shared_pool_size=654311424

dg.__streams_pool_size=0

*.audit_file_dest='/u4/dg/app/oradg/admin/dg/adump'

*.audit_trail='none'

*.compatible='11.2.0.0.0'

*.control_files='/u4/dg/app/oradg/oradata/dg/control01.ctl','/u4/dg/app/oradg/oradata/dg/control02.ctl'

*.db_block_size=8192

*.db_domain='tools.com'

*.db_name='dg'? ---這里其實應該設置為orcl,否則后面會報錯,具體看后面文檔

*.db_recovery_file_dest='/u4/dg/app/oradg/flash_recovery_area'

*.db_recovery_file_dest_size=4070572032

*.diagnostic_dest='/u4/dg/app/oradg'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'

*.local_listener='LISTENER_DG'

*.memory_target=2177892352

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.DB_UNIQUE_NAME=dg

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'

*.LOG_ARCHIVE_DEST_1= 'LOCATION=/u4/dg/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg'

*.LOG_ARCHIVE_DEST_2= 'SERVICE=orcl? LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#--------配置standby 角色的參數用于角色轉換

*.FAL_SERVER=orcl

*.FAL_CLIENT=dg

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT ='/u4/ora11/app/orcl/oradata/orcl','/u4/dg/app/oradg/oradata/dg'

*.LOG_FILE_NAME_CONVERT='/u4/ora11/app/orcl/oradata/orcl','/u4/dg/app/oradg/oradata/dg'

4、創建密碼文件:---這里其實最好直接復制主庫密碼文件,免得出錯

$ orapwd file=orapwdg password=welcome entries=3

5、在備庫上建立spfile

SQL> startup nomount

SQL> create spfile from pfile;

File created.

6、 嘗試啟動備庫

SQL> startup nomount

SQL>? alter database mount standby database;

alter database mount standby database

*

ERROR at line 1:

ORA-01103: database name 'ORCL' in control file is not 'DG'

故障處理:在standby環境中db_name在主庫和從庫必須是一樣的

SQL> show parameter db_name

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

db_name????????????????????????????? string????? DG

SQL> show parameter db_uni

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

db_unique_name?????????????????????? string????? dg

SQL> alter system set db_name='orcl' scope=spfile;

System altered.

SQL> shutdown immediate

SQL> startup nomount

SQL> show parameter db_name

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

db_name????????????????????????????? string????? orcl

SQL> alter database mount standby database;

Database altered.

SQL> show parameter db_uni

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

db_unique_name?????????????????????? string????? dg

SQL>

但是在open的時候報錯了

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-10458: standby database requires recovery

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: '/u4/dg/app/oradg/oradata/dg/system01.dbf'

故障處理:

查看備庫:

SQL>? SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO PRIMARY

查看主庫:

SQL>? SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

FAILED DESTINATION

狀態怎么是這個呢?

再次查看主庫相關參數

SQL> show parameter log_archive_dest_2;

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_2?????????????????? string????? ???SERVICE=dg? LGWR ASYNC VALID_F

OR=(ONLINE_LOGFILES,PRIMARY_RO

LE) DB_UNIQUE_NAME=dg

沒看出有什么問題

察看主庫alert.log,發現錯誤如下

------------------------------------------------------------

Errors in file /u4/ora11/app/orcl/diag/rdbms/orcl/orcl/trace/orcl_arc1_12785.trc:

ORA-16191: Primary log shipping client not logged on standby

PING[ARC1]: Heartbeat failed to connect to standby 'dg'. Error is 16191.

Tue Dec 06 20:43:10 2011

Error 1017 received logging on to the standby

------------------------------------------------------------

Check that the primary and standby are using a password file

and remote_login_passwordfile is set to SHARED or EXCLUSIVE,

and that the SYS password is same in the password files.

returning error ORA-16191

莫非是密碼文件的問題?

嘗試直接ftp主庫的密碼文件到備用庫

$ mv orapwdg orapwdg.bak

$ cp? /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/orapworcl .

$ mv orapworcl orapwdg

然后重新啟動主庫和備庫,發現備庫居然開始應用日志了

SQL> startup nomount

SQL> alter database mount standby database;

Database altered.

SQL> alter database open read only;

Database altered.

SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> select OPEN_MODE from v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

看來就是密碼文件的問題啊,哈哈

日志是傳過去了,但是是否已經apply到備庫了呢?

在備庫:

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# APPLIED

---------- ---------

44 YES

45 YES

46 YES

47 YES

48 YES

49 YES

50 YES

51 YES

52 YES

53 YES

下面檢測下在主庫建立的表是否應用到了備庫

SQL> select * from test;

no rows selected

發現表已經有了

下面嘗試插入數據

在主庫:

SQL> insert into test values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

SQL> !id

uid=1008(ora11) gid=110(dba) groups=110(dba)

SQL>

到備庫查詢:

SQL> select * from test;

TEL

----------

1

SQL> !id

uid=1010(oradg) gid=110(dba) groups=110(dba)

SQL>

發現已經有了,做到了read only并且可以應用日志!

總結

以上是生活随笔為你收集整理的oracle active data guard,Oracle Active DataGuard配置手册(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。