寫在前面,主機規劃:
主機名 | IP | 備註 |
xypri | 192.0.2.11 | (奇數機)主 |
xystb | 192.0.2.12 | (偶數機)備 |
一、軟件安裝前環境配置(root用戶操作)主備均要操作
1.修改主機名
vi /etc/sysconfig/network
HOSTNAME=xypri
vi /etc/hosts
192.0.2.11 xypri
192.0.2.12 xystb
2.修改IP地址
IPADDR=192.0.2.11
3.修改內核參數
cp /etc/sysctl.conf /etc/sysctl.conf.bak
vi /etc/sysctl.conf
--文檔最低要求,添加以下內容
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 9000 65500
修改完運行 sysctl -p
4.修改資源限制
cp /etc/security/limits.conf /etc/security/limits.conf.bak
vi /etc/security/limits.conf
#末尾添加如下
# oracle-rdbms-server-11gR2-preinstall setting for nofile soft limit is 1024
oracle soft nofile 1024
# oracle-rdbms-server-11gR2-preinstall setting for nofile hard limit is 65536
oracle hard nofile 65536
# oracle-rdbms-server-11gR2-preinstall setting for nproc soft limit is 2047
oracle soft nproc 2047
# oracle-rdbms-server-11gR2-preinstall setting for nproc hard limit is 16384
oracle hard nproc 16384
# oracle-rdbms-server-11gR2-preinstall setting for stack soft limit is 10240KB
oracle soft stack 10240
# oracle-rdbms-server-11gR2-preinstall setting for stack hard limit is 32768KB
oracle hard stack 32768
5.創建用戶和安裝目錄
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/
6.設置oracle用戶環境變量,添加以下內容
vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=xy
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
#立即生效
source /home/oracle/.bash_profile
二、軟件安裝
1.上傳安裝包到服務器,解壓,運行安裝程序
cd database
./runInstaller
2.具體安裝步驟(略)
三、建庫
1.運行建庫命令:dbca
2.RMAN備份設置
CONFIGURE BACKUP OPTIMIZATION on;
CONFIGURE CONTROLFILE AUTOBACKUP on;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
四、創建物理備庫
1.備庫創建
1.1和主庫創建不同點
主機名:xystb
IP地址:192.0.0.12
1.2和主庫創建相同點
其他目錄、軟件安裝路徑、資源限制等等均保持一致。
1.3 注意事項
備庫不需要建庫,只需要安裝好數據軟件。
五、主備同步
1.主庫:開啓歸檔模式
SQL> archive log list;
SQL> show parameter recovery;
SQL> alter system set db_recovery_file_dest_size=400G;
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' scope=spfile;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
2.主庫:奇數機開啓強制寫日誌功能並關閉閃回。
SQL> select force_logging from v$database;
SQL> alter database force logging;
SQL> alter database flashback off;
3.主庫:配置靜態監聽, 編輯/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = xypri)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = xy)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xypri)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
奇數機:
$ lsnrctl stop
$ lsnrctl start
4.主庫:奇數機配置 tnsnames 文件
XYPRI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xypri)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xy)
)
)
XYSTB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xystb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xystb)
)
)
5.主庫:增加 standby logfile 文件
SQL> set linesize 200;
SQL> col member for a60
SQL> select group#, member from v$logfile;
SQL> select bytes/1024/1024 "Size MB" from v$log;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/xy/redo04.log' size 512m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/xy/redo05.log' size 512m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/xy/redo06.log' size 512m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/xy/redo07.log' size 512m;
SQL> select group#, member, type from v$logfile where type='STANDBY';
6.主庫:修改參數文件, 將其下面內容添加到 initPROD1.ora 文件中
SQL> create pfile from spfile;
SQL> shutdown immediate;
$ vi initxy.ora
DB_UNIQUE_NAME=xypri
LOG_ARCHIVE_CONFIG='DG_CONFIG=(xypri,xystb)'
LOG_ARCHIVE_DEST_1=
'LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=xypri'
LOG_ARCHIVE_DEST_2=
'SERVICE=xystb ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=xystb'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30
FAL_SERVER=xystb
DB_FILE_NAME_CONVERT='xystb','xypri'
LOG_FILE_NAME_CONVERT='xystb','xypri'
STANDBY_FILE_MANAGEMENT=AUTO
SQL> create spfile from pfile;
SQL> startup
7.偶數機備庫:配置靜態監聽: 編輯
/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = xystb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = xy)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xystb)(PORT = 1521))
)
)
偶數機:
$ lsnrctl stop
$ lsnrctl start
8.備庫:配置 tnsnames 文件, 編輯
XYSTB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xystb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = xy)
)
)
XYPRI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xypri)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = l)
)
)
9.備庫:在奇數機執行拷貝主庫參數文件、 密碼文件到備庫並改名
cd /u01/app/oracle/product/11.2.0/db_1/dbs
scp initxy.ora xystb:/u01/app/oracle/product/11.2.0/db_1/dbs/initxy.ora
scp orapwxy xystb:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwxy
10.備庫:在偶數機操作修改參數文件:(將原始的 xypri 和 xystb 位置進行調換)
$ vi initxy.ora
DB_UNIQUE_NAME=xystb
LOG_ARCHIVE_CONFIG='DG_CONFIG=(xystb,xypri)'
LOG_ARCHIVE_DEST_1=
'LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=xystb'
LOG_ARCHIVE_DEST_2=
'SERVICE=xypri ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=xypri'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30
FAL_SERVER=xypri
DB_FILE_NAME_CONVERT='xypri','xystb'
LOG_FILE_NAME_CONVERT='xypri','xystb'
STANDBY_FILE_MANAGEMENT=AUTO
11.備庫:在偶數機根據參數文件創建相應的目錄
mkdir -p /u01/app/oracle/oradata/xy/
mkdir -p /u01/app/oracle/admin/xy/adump
mkdir -p /u01/app/oracle/fast_recovery_area/xy/
mkdir -p /u01/app/oracle/oradata/xy/
$ export ORACLE_SID=xy
SQL> sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup nomount
12.主庫:通過 rman duplicate 方式進行備庫恢復(主備庫sid名稱均爲xy,故文件路徑一致,需要添加nofilenamecheck參數)
rman target / auxiliary sys/oracle@xystb
RMAN> duplicate target database for standby from active database nofilenamecheck;
13.驗證是否搭建成功:
奇數機:
$ sqlplus / as sysdba
SQL> select DATABASE_ROLE from v$database;
偶數機:
$ sqlplus / as sysdba
SQL> select open_mode from v$database;
SQL> select DATABASE_ROLE from v$database;
$ cd /u01/app/oracle/oradata/xy/
$ ls
control01.ctl redo02.log redo04.log redo06.log sysaux01.dbf undotbs01.dbf
redo01.log redo03.log redo05.log redo07.log system01.dbf users01.dbf
奇數機:
$ sqlplus / as sysdba
SQL> archive log list;
SQL> alter system switch logfile;
SQL> archive log list;
SQL> alter system switch logfile;
SQL> archive log list;
偶數機:
$ sqlplus / as sysdba
SQL> select process, pid, status, client_process from v$managed_standby;
SQL> archive log list;
14.備庫:sync 數據
偶數機:
$ sqlplus / as sysdba
SQL> SELECT PROTECTION_MODE, PROTECTION_LEVEL,DATABASE_ROLE ROLE,SWITCHOVER_STATUS FROM V$DATABASE;
SQL> recover managed standby database using current logfile disconnect from session;
SQL> recover managed standby database cancel;
SQL> alter database open;
SQL> recover managed standby database using current logfile disconnect from session;
SQL> select open_mode from v$database;
奇數機:
$ sqlplus / as sysdba
SQL> create table t(id number);
SQL> insert into t values(1);
SQL> commit;
SQL> select * from t;
SQL> delete from t;
SQL> commit;
SQL> drop table t;
偶數機:
SQL> select * from t;
備註:
【Oracle】Linux7安裝11g 86%報錯:Error in invoking target 'agent nmhs' of makefile
參考:http://blog.itpub.net/29475508/viewspace-2120836/