一、ECS主机构建和挂载磁盘 购买服务器完成后在控制面板修改root密码,ssh远程ecs服务器挂载DATA、FRA磁盘。 格式化硬盘和xfs格式分区硬盘
fdisk -l
fdisk /dev/vdb
np1enterwq
mkfs.xfs -f /dev/vdb1
查看vdb1硬盘是否是xfs分区
parted -l
备份/etc/fstab和添加两块磁盘的信息
cp /etc/fstab /etc/fstab.bak
echo /dev/vdb1 /data xfs defaults 0 0 >> /etc/fstab
echo /dev/vdc1 /fra xfs defaults 0 0 >> /etc/fstab
2.3挂载磁盘 根目录下创建data和fra文件夹
mkdir data && mkdir fra
挂载磁盘 mount /dev/vdb1 /data mount /dev/vdc1 /fra
二、ORACLE安装环境配置 Oracle系统依赖包安装 yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static elfutils-libelf-devel ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel unzip 修改主机名和hosts文件 hostnamectl --static set-hostname bizone_db1 vi /etc/hosts 172.17.100.20 bizone_db1 建立用户和组 groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle echo "oracle" | passwd --stdin oracle id oracle 创建oracle安装目录,赋予权限。 mkdir -p /u01/app/oracle/product/11.2.0/db_1 mkdir /u01/app/oracle/oradata mkdir /u01/app/oracle/inventory mkdir /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01/app chmod - R 775 /u01/app 修改内核参数:编辑 /etc/sysctl.conf 添加以下设置: kernel.shmmax = 34359738368 kernel.shmall =33554432 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 fs.aio-max-nr = 3145728 fs.file-max = 6815744 让参数生效:sysctl -p 修改用户的限制文件,编辑 /etc/security/limits.conf 添加以下配置: oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 修改/etc/pam.d/login文件,添加: session required /lib64/security/pam_limits.so session required pam_limits.so 修改/etc/profile文件:
vi /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用户环境变量
vi ~oracle/.bash_profile
ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 ORACLE_SID=orcl PATH=$ORACLE_HOME/bin:$PATH export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH oracle用户环境变量生效 source .bash_profile 至此oracle安装环境准备工作已经结束 三、静默安装ORACLE数据库 3.1上传Oracle安装文件到ecs主机的tmp文件目录下解压 修改文件权限 chown -R oracle:oinstall ./ p13390677_112040_Linux-x86-64_1of7.zip chown -R oracle:oinstall ./ p13390677_112040_Linux-x86-64_2of7.zip 解压文件 su - oracle unzip p13390677_112040_Linux-x86-64_1of7.zip && unzip p13390677_112040_Linux-x86-64_2of7.zip 3.2执行安装应答文件 ./runInstaller -silent -ignorePrereq -ignoreSysPrereqs -responseFile /tmp/database/response/db_install.rsp
切换到root用户终端执行脚本
3.3静默方式创建监听 netca -silent /responsefile /tmp/database/response/netca.rsp
执行完会在$ORACLE_HOME/network/admin目录下生成sqlnet.ora和listener.ora两个文件 3.4静默方式建立新库,同时也建立一个对应的实例 修改应答文件 $vi /home/oracle/response/dbca.rsp GDBNAME = "orcl" SID = "orcl" SYSPASSWORD = "system@2018" SYSMANPASSWORD = " system@2018" DBSNMPPASSWORD = " system@2018" DATAFILEDESTINATION =/u01/app/oracle/oradata RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area CHARACTERSET = "ZHS16GBK" TOTALMEMORY = "25000" 其中TOTALMEMORY = "25000"为25000MB,一般设置为物理内存的80% 【命令建库不用修改应答文件,目前命令测试失败】【dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname orcl -sid orcl -responseFile NO_VALUE -characterSet ZHS16GBK -memoryPercentage 30 -emConfiguration LOCAL】
建库后进行实例进程检查 $ ps -ef | grep ora_ | grep -v grep 查看监听状态 $lsnrctl status 登录查看实例状态 $sqlplus / as sysdba SQL> select status from v$instance; 如显示 STATUS
OPEN 则表示实例是启动状态 查看数据库编码 SQL> select userenv('language') from dual; 查看数据库版本 SQL> select * from v$version; 第一次安装出错,迅速装完截图留念。
以上错误可能是因为上传阿里云重启ECS中断续传造成安装包损坏。 四、Oracle开机自启动配置 4.1 dbstart和dbshut配置 查看ORACLE_HOME是否设置,执行dbstart数据库自带启动脚本 $ su - oracle $ echo $ORACLE_HOME /u01/app/oracle/product/11.2.0/db_1 $ cd /$ORACLE_HOME/bin $ dbstart
$ ll | grep dbs
编辑 dbstart和dbshut, 将ORACLE_HOME_LISTNER=$1修改成 ORACLE_HOME_LISTNER=$ORACLE_HOME
4.2修改/etc/oratab文件 $ su – oracle $ vi /etc/ oratab 将orcl:/u01/app/oracle/product/11.2.0/db_1:N修改orcl:/u01/app/oracle/product/11.2.0/db_1:Y
输入dbshut和dbstart测试 $ dbshut
$ ps -ef | grep ora_ | grep -v grep Oracle监听停止,进程消失
$ dbstart $ ps -ef | grep ora_ | grep -v grep $ lsnrctl status
4.3切换到root账户建立自启动脚本 $ su – root $ vi /etc/rc.d/init.d/oracle #!/bin/sh
chkconfig: 345 61 61
description: Oracle 11g AutoRun Services
/etc/init.d/oracle
Run-level Startup script for the Oracle Instance, Listener, and
Web Interface
export ORACLE_BASE= /u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=ORCL export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi
depending on parameter -- startup, shutdown, restart
of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
echo "Oracle Stop Succesful!OK."
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo $"Usage: basename $0
{start|stop|reload|restart}"
exit 1
esac
exit 0
修改/etc/init.d/oracle服务文件权限 chmod +x /etc/init.d/oracle 测试脚本是否正常运行 ./oracle start ./oracle stop 设置为开机启动 chkconfig --level 234 oracle on chkconfig --add oracle chkconfig --list oracle
五、修改表空间路径和闪回归档日志路径 5.1修改表空间路径 登陆SQLPLUS查看当前表空间路径 $ sqlplus / as sysdba SQL> select name from v$datafile; 在挂载的data创建表空间文件夹和赋予权限
mkdir /data/bizone
chown -R oracle:oinstall bizone
chmod -R 755 /data/bizone
关闭监听和数据库,启动数据库到mount状态 lsnrctl stop SQL>shutdown immediate; SQL>startup mount; 拷贝原来表空间路径到新的挂载磁盘文件夹下 cp /u01/app/oracle/oradata/orcl/ *.dbf /data/bizone 更改表空间路径 SQL>alter database rename file '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/data/bizone/sysaux01.dbf'; SQL>alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/data/bizone/system01.dbf'; SQL>alter database rename file '/u01/app/oracle/oradata/orcl/undotbs01.dbf' to '/data/bizone/undotbs01.dbf'; SQL>alter database rename file '/u01/app/oracle/oradata/orcl/users01.dbf' to '/data/bizone/users01.dbf'; 打开数据库 SQL> alter database open 查看表空间文件路径是否变更 SQL> select file#,ts#,status,name from v$datafile; 5.2修改归档日志路径 SQL>archive log list
查看闪回恢复区路径 SQL> show parameter db_recover
查看闪回区的使用率 SQL>select file_type, percent_space_used as used,percent_space_reclaimable as reclaimable, number_of_files as "number" from v$flash_recovery_area_usage; 查看闪回恢复区大小 SQL> select name,SPACE_LIMIT,SPACE_USED from v$recovery_file_dest; 默认情况下归档日志会存放到闪回恢复区,如果闪回恢复区用到2G(默认2G),归档日志可能无法继续归档,数据库会挂住,通常解决方法是增大闪回恢复区 SQL> alter system set db_recovery_file_dest_size=4G; 修改闪回区路径 SQL> alter system set db_recovery_file_dest='/fra/bizone'; 通常一劳永逸的办法是修改归档日志路径。 SQL> alter system set log_archive_dest_1='location=/fra/bizone/archive'; 注意:需要给该文件夹oracle用户权限和执行权限。 将数据库启动到mount状态,将数据库修改为归档模式后,启动数据库到open状态 SQL>shutdown immediate; SQL>startup mount; SQL>alter database archivelog; SQL>alter database open; SQL>archive log list
可以通过切换日志,查看归档路径下是否有归档日志产生来验证归档路径设置是否正确,可以通过下面的命令切换日志。 SQL>alter system switch logfile;
六、新建用户关联表空间 创建独立的表空间和系统表空间区分。创建3个用户: 1.ebo_run_rw 只给表记录的插入,修改,查询权限,存储过程/函数/自定义对象的访问和执行权限;其他权限禁止,包括表记录的删除权限。 2.ebo_run_dba 所有权限 3.sys 运维 创建表空间 CREATE TABLESPACE bizone_tablespace DATAFILE '/data/bizone/bizone_tablespace.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 创建用户关联表空间 CREATE USER ebo_run_dba IDENTIFIED BY 123 DEFAULT TABLESPACE bizone_tablespace; CREATE USER ebo_run_rw IDENTIFIED BY aibianli DEFAULT TABLESPACE bizone_tablespace; 授予ebo_run_dba用户dba权限 grant connect,resource,dba to ebo_run_dba; 查看那些用户是dba权限。 select * from dba_role_privs where granted_role='DBA'; 创建ebo_run_rw用户权限 grant create session to ebo_run_rw; grant SELECT ANY DICTIONARY to ebo_run_rw; grant select any table to ebo_run_rw; grant insert any table to ebo_run_rw; grant update any table to ebo_run_rw; grant create any procedure to ebo_run_rw; grant execute any procedure to ebo_run_rw; conn ebo_run_rw 查看当前用户权限 select * from session_privs;
设置sys密码和解锁。 alter user sys identified by suibianxie1ge; alter user sys account unlock;