操作系统:CentOS-7-x86_64-DVD-1804.iso
内存:4G
磁盘:128G(建议16G及以上)
#--检查是否开启
# systemctl status iptables.service
[comuser@localhost ~]$ systemctl status iptables.service
Unit iptables.service could not be found.
#--重启后生效
#--开启
# systemctl enable iptables.service
#--关闭 (== 当前操作建议使用 ==)
# systemctl disable iptables.service
#--即时生效,重启后失效
#--开启
# systemctl start iptables.service
#--关闭
# systemctl stop iptables.service
# vim /etc/selinux/config
#--原内容
SELINUX=enforcing
#--修改后
SELINUX=disabled
https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1111
# yum -y install libXp
#-- 如果后面安装时报错,有下面几个包名时,可运行以下命令
# yum -y install libXp.i686
# yum -y install libXt.i686
# yum -y install libXtst.i686
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 make sysstat
oinstall
# groupadd oinstall
dba
# groupadd dba
orauser
,并加入用户组oinstall
和dba
# useradd -m -g oinstall -G dba orauser
orauser
是否创建成功# id orauser
orauser
的密码# passwd orauser
# vim /etc/sudoers
root ALL=(ALL) ALL
orauser ALL=(ALL) ALL
/etc/sysctl.conf
文件#--表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改
kernel.shmall = 4294967296
#--定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G
kernel.shmmax = 68719476736
#--用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改
kernel.shmmni = 4096
#--表示设置的信号量
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
#--默认的接收窗口大小
net.core.rmem_default=4194304
#--接收窗口的最大大小
net.core.rmem_max=4194304
#--默认的发送窗口大小
net.core.wmem_default=262144
#--发送窗口的最大大小
net.core.wmem_max=262144
#--这里1002是oracle用户组dba的gid,即运行 #id orauser 时,dba旁边的数据
#--例如:uid=1001(orauser) gid=1001(oinstall) 组=1001(oinstall),1002(dba)
vm.hugetlb_shm_group=1002
# sysctl -p
/etc/security/limits.conf
文件# vim /etc/security/limits.conf
orauser soft nproc 2047
orauser hard nproc 16384
orauser soft nofile 1024
orauser hard nofile 65536
/etc/pam.d/login
文件# vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
/etc/profile
文件# vim /etc/profile
if [ $USER = "orauser" ]; then
中 orauser
是Oracle用户名)if [ $USER = "orauser" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
##--写入位置开始
if [ $USER = "orauser" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
##--写入位置结束
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
由于 Oracle 10g发行时,CentOS7并未发行,所以,需要修改linux发行版本,应对Oracle安装时的检测
编辑 /etc/redhat-release
文件
# vim /etc/redhat-release
#--原文件内容
CentOS Linux release 7.5.1804 (Core)
#--修改后文件内容
redhat 4
#--创建文件夹
# mkdir /opt/oracle
# mkdir /opt/oracle/102
#-- 修改目录及子目录所有文件的拥有者
# chown -R orauser:dba /opt/oracle
12)配置主机名静态查询表
/etc/hosts
文件内容# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
orauser
的用户目录(一般是打开终端时的路径)$ cd /home/orauser
.bash_profile
文件$ vim .bash_profile
#--上面创建的Oracle安装文件夹
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/102
#--实例ID可以根据实际情况进行修改
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH
$ source .bash_profile
$ cpio -idmv < 10201_database_linux_x86_64.cpio
$ cd database
$ export LANG=en_US
$ ./runInstaller
.bash_profile
文件(没有就跳过)#--orauser为用户目录
$ vim /home/orauser/.bash_profile
export LANG=en_US
export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType
$ ./runInstaller -ignoreSysPrereqs
/opt/oracle/102
dba
sys
的密码/opt/oracle/oraInventory
dba
User Verified
出现的错误提示:
Error in invoking target ‘all_no_orcl’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.
Error in invoking target ‘collector’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.
等待 Database Configuration Assistant 窗口配置数据库
(一般不会出现,可跳过)如果这里出现如下异常:
OUI-25031:Some of the configuration assistants failed.
解决:添加ip和主机名的映射
#--查询主机名
$ hostnamectl status
#--编辑/etc/hosts
$ vim /etc/hosts
#--原文件内容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#--修改后文件内容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.10 localhost.localdomain
# su root
# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/102/root.sh
Enter the full pathname of the local bin directory: [/usr/local/bin]:
#--输出当前实例
$ echo $ORACLE_SID
#--多个实例时,指定当前实例
$ export ORACLE_SID=orcl
#--启动监听
$ lsnrctl start
#--查看监听状态
$ lsnrctl status
#--启动sqlplus
$ sqlplus /nolog
#--dba登录
SQL> conn / as sysdba
#--启动当前实例
SQL> startup
#--检查当前实例是否启动成功(出现一排的ora_XXX_实例名,说明启动成功)
$ ps -ef|grep ora_
1)配置 /etc/oratab
文件
# vim /etc/oratab
orcl:/opt/oracle/102:N
orcl:/opt/oracle/102:Y
2)配置 /etc/rc.d/rc.local
文件
# vim /etc/rc.d/rc.local
su orauser -lc "/opt/oracle/102/bin/lsnrctl start"
su orauser -lc /opt/oracle/102/bin/dbstart
rc.local
的可执行权限# chmod +x /etc/rc.d/rc.local
#--停止监听
$ lsnrctl stop
#--查看监听状态
$ lsnrctl status
#--查看指定端口状态
$ netstat -an|grep 15215
#--启动监听
$ lsnrctl start
listener.ora
监听配置文件#--端口由 1521 改为 15215 | $ORACLE_HOME需要配置环境变量
$ vim $ORACLE_HOME/network/admin/listener.ora
#--原配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
#--修改后
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 15215))
)
)
#--启动sqlplus
$ sqlplus /nolog
#--dba登录
SQL> conn / as sysdba
#--查询 local_listener 属性的Value是否为空字符串
SQL> show parameter local_listener;
#--修改 local_listener 属性
SQL> alter system set local_listener='(address = (protocol = tcp)(host = localhost)(port = 15215))';
#--多个实例时,切换到需要操作的实例
$ export ORACLE_SID=orcl
#--进入sqlplus控制台
$ sqlplus /nolog
#--以管理员身份登录
SQL> connect / as sysdba
#--停止数据库实例
SQL> shutdown abort
#--启动实例
SQL> startup
#--退出sqlplus
SQL> exit
oracle 默认表空间 system
oracle 默认临时表空间 temp
创建表空间
#--登录sqlplus,查询数据文件位置
SQL> select name from v$datafile;
#--创建临时表空间,temp_orcl 表示临时表空间名称
SQL> create temporary tablespace temp_orcl tempfile '/opt/oracle/oradata/orcl/temp_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;
#--创建表空间,db_orcl 表示表空间名称
SQL> create tablespace db_orcl logging datafile '/opt/oracle/oradata/orcl/db_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;
用户名
,identified后面接密码
,db_orcl表示表空间,temp_orcl表示临时表空间)#--创建用户
SQL> create user testuser identified by test123 account unlock default tablespace db_orcl temporary tablespace temp_orcl;
#--级联删除,cascade表示如果用户testuser下有其它对象,也会一并删除(强制删除)
SQL> drop user testuser cascade
#--修改用户testuser的密码
SQL> alter user testuser identified by 123456;
#--把connect,resources角色赋予用户testuser
SQL> grant connect,resource to testuser;
#--把dba角色赋予用户testuser
SQL> grant dba to testuser;
#--撤销角色
SQL> revoke connect,resource to testuser
#-- 用户=testuser,密码=test123,监听端口=15215
$ imp testuser/test123@localhost:15215/db_orcl file=/home/orauser/upload/test.dmp full=y
SQL> select 'drop table '||table_name||';' from cat where table_type='TABLE';
建议使用Oracle用户(具有sudo权限)
查询当前数据库字符集,避免备份后乱码情况(选其一)
SQL> select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
#--创建数据备份目录,`-p`=创建多级目录
# mkdir -p /opt/oracle/backup
#--创建备份脚本目录
# mkdir -p /opt/oracle/backup/shell
#--创建导出数据日志目录
# mkdir -p /opt/oracle/backup/logs
# vim /opt/oracle/backup/shell/orabak.sh
orabak.sh
脚本内容如下:
1. Oracle安装路径、备份路径、Oracle用户和密码、实例名等信息需要根据情况进行修改
2. 注释的脚本是,每次备份数据库时自动删除30天之前的数据库文件
3. 脚本中使用 NLS_LANG
设置导出数据库文件字符集
#!/bin/sh
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/opt/oracle/backup
export LOGS_DIR=/opt/oracle/backup/log
#export DELTIME=`date -d "30 days ago" +%Y%m%d`
export BAKUPTIME=`date +%Y%m%d%H%M%S`
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
mkdir -p $DATA_DIR
mkdir -p $LOGS_DIR
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp"
exp testuser/123456@localhost/orcl file=$DATA_DIR/ORCL$BAKUPTIME.dmp log=$LOGS_DIR/ORCL$BAKUPTIME.log
#echo "Delete the file bakup before 30 days..."
#rm -rf $DATA_DIR/ORCL$DELTIME*.dmp
#rm -rf $LOGS_DIR/ORCL$DELTIME*.log
#echo "Delete the file bakup successfully. "
echo "Bakup completed."
#--修改脚本文件权限
# chmod 777 dbbak.sh
#--测试脚本
# cd /opt/oracle/backup/shell
# ./orabak.sh
# vim /etc/crontab
配置内容如下:
1. 配置内容格式: 时间 + 执行操作的系统用户 + 脚本文件的全路径
2. 下面配置表示凌晨1点执行数据库备份脚本
00 1 * * * orauser /opt/oracle/backup/shell/orabak.sh