首页
首页
文章目录
  1. 简介,基础信息
  2. 基础配置
  3. 在主从节点安装依赖软件包
  4. 在主节点安装oracle数据库(静默方式)

Oracle Dataguard 部署

简介,基础信息

| 系统版本 Centos 6.5 |
|—-|—-|—-|
| 主机名 | oracle01 | oracle02|
| ip地址 | 10.10.0.44 | 10.10.0.45 |
| 数据库角色 | primary | standby |

基础配置

1、 在主从节点创建oracle用户和dba组

1
2
3
4
5
mkdir -p /home/oracle
groupadd -r -g 501 oinstall
groupadd -r -g 502 dba
useradd -r -u 501 -g oinstall -G dba,root oracle -d /home/oracle
echo "888888" | passwd --stdin oracle

2、在主从节点创建oracle安装目录并赋予oracle用户和组权限

1
2
3
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/

3、在主从节点配置oracle用户环境变量

3.1 主节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ cat /home/oracle/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

export TMP=/tmp
export TMPDIR=/tmp
export TEMP=/tmp
export ORACLE_HOSTNAME=oracle01
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=/usr/bin:/usr/sbin:/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export ORACLE_SID=orcl
export ORACLE_UNQNAME=userdata1
export NLS_LANG=AMERICAN_AMERICA.UTF8
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$ORACLE_HOME/ctx/lib:/lib:/usr/lib64
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

3.2 从节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ cat /home/oracle/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

export TMP=/tmp
export TMPDIR=/tmp
export TEMP=/tmp
export ORACLE_HOSTNAME=oracle02
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=/usr/bin:/usr/sbin:/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export ORACLE_SID=orcl
export ORACLE_UNQNAME=userdata2
export NLS_LANG=AMERICAN_AMERICA.UTF8
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib:$ORACLE_HOME/lib32:$ORACLE_HOME/ctx/lib:/lib:/usr/lib64
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

4、 在主从节点关闭防火墙和selinux

1
2
3
4
service iptables stop
chkconfig iptables off
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

5、 在主从节点优化内核参数

1
2
3
4
5
6
7
8
9
10
11
# tail -n 10 /etc/sysctl.conf
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

6、在主从节点优化oracle用户资源使用限制
修改用户限制配置文件,增加如下参数

1
2
3
4
5
6
7
# tail -n 6 /etc/security/limits.conf
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

修改login配置文件,将用户限制加入到登录验证模块

1
2
# grep 'pam_limits.so' /etc/pam.d/login 
session required /lib64/security/pam_limits.so

编辑环境变量文件,增加对oracle用户的限制

1
2
3
4
5
6
7
8
9
10
11
# tail -n 10 /etc/profile
if [ $USER = "oracle" ];
then
if [ $SHELL = "/bin/ksh" ];
then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

在主从节点安装依赖软件包

在主从节点安装oracle依赖包

1
yum -y install  binutils-* compat-libstdc++-* elfutils-libelf-* elfutils-libelf-devel-* gcc-* gcc-c++-* glibc-* glibc-common-* glibc-devel-* glibc-headers-* ksh-* libaio-* libaio-devel-* libgcc-* libgomp-* libstdc++-* libstdc++-devel* make-* sysstat-* unixODBC-* libXp ksh readline readline-devel

在主从节点安装rlwrap包(用以解决sqlplus不能查询历史命令和后退键不能回退的问题)

1
2
3
4
5
6
7
8
# wget http://download.openpkg.org/components/cache/rlwrap/rlwrap-0.42.tar.gz
# tar -zxf rlwrap-0.42.tar.gz
# cd rlwrap-0.42
# ./configure
# make
# make install
# echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bashrc
# echo "alias rman='rlwrap rman'" >> /home/oracle/.bashrc

配置主从节点oracle用户之间的信任关系
主节点

1
2
3
$ ssh-keygen -t rsa
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ ssh-copy-id oracle@ec2t-userdata-02

从节点

1
2
3
$ ssh-keygen -t rsa
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ ssh-copy-id oracle@ec2t-userdata-01

在主节点安装oracle数据库(静默方式)

2.1. 安装oracle数据库软件

  2.1.1. 创建oracle数据库软件安装的应答文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
$ ./database/runInstaller -silent -responseFile /home/oracle/db_install.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 5262 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4095 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-06-19_09-28-46AM. Please wait ...[oracle@ec2t-userdata-02 u01]$ [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
CAUSE: The Central Inventory is located in the Oracle base.
ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
You can find the log of this install session at:
/u01/app/oracle/oraInventory/logs/installActions2017-06-19_09-28-46AM.log
The installation of Oracle Database 11g was successful.
Please check '/u01/app/oracle/oraInventory/logs/silentInstall2017-06-19_09-28-46AM.log' for more details.

As a root user, execute the following script(s):
1. /u01/app/oracle/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/11.2.0/db_1/root.sh


Successfully Setup Software.


$ cat /u01/app/oracle/oraInventory/logs/silentInstall2017-06-19_09-28-46AM.log | grep "OverallStatus:"
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL
INFO: OverallStatus:SUCCESSFUL

从节点需要修改”ORACLE_HOSTNAME”的值

安装oracle数据库软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ ./database/runInstaller -silent -responseFile /home/oracle/db_install.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 5262 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4095 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-06-19_09-28-46AM. Please wait ...[oracle@ec2t-userdata-02 u01]$ [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
CAUSE: The Central Inventory is located in the Oracle base.
ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
You can find the log of this install session at:
/u01/app/oracle/oraInventory/logs/installActions2017-06-19_09-28-46AM.log
The installation of Oracle Database 11g was successful.
Please check '/u01/app/oracle/oraInventory/logs/silentInstall2017-06-19_09-28-46AM.log' for more details.

As a root user, execute the following script(s):
1. /u01/app/oracle/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/11.2.0/db_1/root.sh


Successfully Setup Software.

重新打开一个session窗口以root用户执行以上两个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete.
# /u01/app/oracle/product/11.2.0/db_1/root.sh
Check /u01/app/oracle/product/11.2.0/db_1/install/root_ec2t-userdata-02_2017-06-19_09-40-24.log for the output of root script
# cat /u01/app/oracle/product/11.2.0/db_1/install/root_ec2t-userdata-02_2017-06-19_09-40-24.log
Performing root user operation for Oracle 11g

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/11.2.0/db_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
Finished product-specific root actions.

安装oracle监听程序

创建oracle监听程序安装的应答文件

1
$ cp ./database/response/netca.rsp /home/oracle/

创建oracle监听程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ netca /silent /responsefile /home/oracle/netca.rsp

Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /home/oracle/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0

安装oracle数据库

创建oracle数据库安装的应答文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
$ cp $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc.bak
$ cat $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc
<?xml version = '1.0'?>
<DatabaseTemplate name="General_Purpose" description=" " version="11.2.0.0.0">
<CommonAttributes>
<option name="OMS" value="false"/>
<option name="JSERVER" value="true"/>
<option name="SPATIAL" value="true"/>
<option name="IMEDIA" value="true"/>
<option name="XDB_PROTOCOLS" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="ORACLE_TEXT" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="SAMPLE_SCHEMA" value="false"/>
<option name="CWMLITE" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="EM_REPOSITORY" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="APEX" value="true"/>
<option name="OWB" value="true"/>
<option name="DV" value="false"/>
</CommonAttributes>
<Variables/>
<CustomScripts Execute="false"/>
<InitParamAttributes>
<InitParams>
<initParam name="db_name" value=""/>
<initParam name="dispatchers" value="(PROTOCOL=TCP) (SERVICE={SID}XDB)"/>
<initParam name="audit_file_dest" value="{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump"/>
<initParam name="compatible" value="11.2.0.4.0"/>
<initParam name="remote_login_passwordfile" value="EXCLUSIVE"/>
<initParam name="processes" value="600"/>
<initParam name="undo_tablespace" value="UNDOTBS1"/>
<initParam name="control_files" value="(&quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl&quot;, &quot;{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl&quot;)"/>
<initParam name="diagnostic_dest" value="{ORACLE_BASE}"/>
<initParam name="db_recovery_file_dest" value="{ORACLE_BASE}/fast_recovery_area"/>
<initParam name="audit_trail" value="db"/>
<initParam name="memory_target" value="2048" unit="MB"/>
<initParam name="db_block_size" value="8" unit="KB"/>
<initParam name="open_cursors" value="600"/>
<initParam name="db_recovery_file_dest_size" value="4096" unit="MB"/>
<initParam name="JAVA_JIT_ENABLED" value="FALSE"/>
</InitParams>
<MiscParams>
<databaseType>MULTIPURPOSE</databaseType>
<maxUserConn>20</maxUserConn>
<percentageMemTOSGA>40</percentageMemTOSGA>
<customSGA>false</customSGA>
<archiveLogMode>false</archiveLogMode>
<initParamFileName>{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora</initParamFileName>
</MiscParams>
<SPfile useSPFile="true">{ORACLE_HOME}/dbs/spfile{SID}.ora</SPfile>
</InitParamAttributes>
<StorageAttributes>
<DataFiles>
<Location>{ORACLE_HOME}/assistants/dbca/templates/Seed_Database.dfb</Location>
<SourceDBName>seeddata</SourceDBName>
<Name id="1" Tablespace="SYSTEM" Contents="PERMANENT" Size="740" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf</Name>
<Name id="2" Tablespace="SYSAUX" Contents="PERMANENT" Size="470" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf</Name>
<Name id="3" Tablespace="UNDOTBS1" Contents="UNDO" Size="25" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf</Name>
<Name id="4" Tablespace="USERS" Contents="PERMANENT" Size="5" autoextend="true" blocksize="8192">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf</Name>
</DataFiles>
<TempFiles>
<Name id="1" Tablespace="TEMP" Contents="TEMPORARY" Size="20">{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf</Name>
</TempFiles>
<ControlfileAttributes id="Controlfile">
<maxDatafiles>200</maxDatafiles>
<maxLogfiles>16</maxLogfiles>
<maxLogMembers>3</maxLogMembers>
<maxLogHistory>1</maxLogHistory>
<maxInstances>8</maxInstances>
<image name="control01.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
<image name="control02.ctl" filepath="{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/"/>
</ControlfileAttributes>
<RedoLogGroupAttributes id="1">
<reuse>false</reuse>
<fileSize unit="KB">102400</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo01.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="2">
<reuse>false</reuse>
<fileSize unit="KB">102400</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo02.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="3">
<reuse>false</reuse>
<fileSize unit="KB">102400</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo03.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
</StorageAttributes>
</DatabaseTemplate>

安装oracle数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ dbca -silent -responseFile /home/oracle/dbca.rsp
Enter SYS user password: 888888
Enter SYSTEM user password: 888888
Copying database files
1% complete
2% complete
4% complete
37% complete
Creating and starting Oracle instance
38% complete
40% complete
45% complete
50% complete
51% complete
56% complete
57% complete
61% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
74% complete
85% complete
86% complete
98% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/userdata/userdata.log" for further details.
支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫