Linux环境中安装Oracle,系统版本centos7.6 gui 桌面版。
前期准备 资源准备 提前下载好相关资源,并存放/home/soft目录下 链接:https://pan.baidu.com/s/1XniDCJmyYvsYcXihV5Bqjw 提取码:o0nv
服务器准备 1 2 3 4 5 6 [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~]
oracle用户准备 1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost ~] [root@localhost ~] [root@localhost ~] useradd: user 'oracle' already exists [root@localhost ~] uid=1000(oracle) gid=1000(oracle) groups =1000(oracle),10(wheel) [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~] [root@localhost ~]
修改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 [root@localhost ~] ······ oracle soft nproc 4096 oracle hard nproc 16384 oracle soft nofile 2048 oracle hard nofile 65536 [root@localhost ~] ······ session required /lib/security/pam_limits.so session required pam_limits.so [root@localhost ~] ······ if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi [root@localhost ~]
配置内核参数和资源限制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost ~] fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 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 = 1048576 [root@localhost ~]
配置oracle用户环境变量 将下列设置添加到 /home/oracle/.bash_profile文件中。 注意:要写到原有“PATH=PATH: PATH: HOME/bin”变量上面,否则会提示“bash: sqlplus: command not found”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@localhost ~] ········· umask 022export ORACLE_BASE=/home/data/oracleexport ORACLE_HOME=$ORACLE_BASE /product/11.2.0/db_1export ORACLE_SID=orclexport ORACLE_TERM=xtermexport PATH=$ORACLE_HOME /bin:/user/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME /lib:/lib:/usr/libexport LANG=Cexport NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" PATH=$PATH :$HOME /.local/bin:$HOME /bin:$ORACLE_HOME /bin export PATH[root@localhost ~] [oracle@localhost ~]$ source /home/oracle/.bash_profile
配置主机名监听 1 2 3 4 5 6 7 8 [root@oracle ~] [root@oracle ~] ········· hostname=oracle [root@oracle ~] ········· 10.128.1.71 oracle
安装java指定jdk jdk-8u60-linux-x64.tar.gz
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 [root@oracle soft] check_user=`id -u` if [ ${check_user} != "0" ];then echo "Must be root can use !" exit 1 fi JDK_version="jdk1.8.0_60" BASE_dir="/usr/java" SOFT_dir="/home/soft" JDK_package="jdk-8u60-linux-x64.tar.gz" JAVA_HOME="/usr/java/${JDK_version} " source /etc/profilefunction jdk_install (){ [ -d ${SOFT_dir} ] || mkdir -p ${SOFT_dir} [ -e ${BASE_dir} /${JDK_version} ] && echo -e "\033[32m ${JDK_version} 已部署,请退出!!! \033[0m" if [ -e ${BASE_dir} /${JDK_version} ];then sleep 1 && exit 0 else [ -f ${SOFT_dir} /${JDK_package} ] || echo -e "\033[36m ${JDK_package} 正在下载.... \033[0m" sleep 1 [ -d "${BASE_dir} " ] && rm -rf ${BASE_dir} /* || mkdir -p ${BASE_dir} sleep 1 && echo -e "\033[35m 正在解压${JDK_package} .... \033[0m" cd ${SOFT_dir} && tar -xzf ${JDK_package} -C ${BASE_dir} sleep 2; sed -i '/JAVA_HOME*/d' /etc/profile sed -i.ori '$a export JAVA_HOME=/usr/java/jdk1.8.0_60\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile source /etc/profile && . /etc/profile echo "JAVA_HOME=$JAVA_HOME " echo `$JAVA_HOME /bin/java -version` echo -e "\033[32m JDK已部署成功!!! \033[0m" fi } function main (){ jdk_install } main [root@oracle soft] [root@oracle soft] 正在解压jdk-8u60-linux-x64.tar.gz.... JAVA_HOME=/usr/java/jdk1.8.0_60 java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) JDK已部署成功!!!
开始安装oracle 安装相关依赖包 1 2 3 4 5 6 [root@oracle soft] [root@oracle soft] [root@oracle soft]
安装图形化界面(已安装可忽略) 1 2 3 4 5 6 7 8 systemctl get-default yum grouplist yum groupinstall "GNOME Desktop" "Graphical Administration Tools" systemctl set-default graphical.target ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.targetsystemctl get-default reboot
解压oracle安装包 1 2 3 4 5 6 [root@oracle soft] [root@oracle soft] [root@oracle soft] [root@oracle soft]
开始安装 注意此步骤一定要在图形桌面上执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~] [oracle@oracle ~] [oracle@oracle ~] [oracle@oracle ~] [oracle@oracle ~]
安装步骤 取消选中这个界面上的I wish to receive security updates via My Oracle Support 复选框,点击Next 直接默认yes,点击下一步,默认创建和配置一个数据库 选择服务类 选择单实例库 选择典型安装,也可以选择高级安装,安装步骤更多: 安装Oracle基本配置:最好保持和ORACLE_BASE&&ORACLE_HOME配置环境变量一致,点击yes: 密码:Oracle2022 (大小写字母+数字) 选择清单目录、即Oracle配置文件存放目录:用户组选择默认 先决条件检查:查看缺失的依赖包
最好不要选择右上角“Igrnore all”(全部忽略),如下图显示,有些包还没有安装,里面显示是需要32位(i386)的,相关文件已经打包好。 使用方法:在root用户下,解压后直接./oracle_rpm_setup.sh即可自动安装全部的包。
1 2 3 4 [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~]
点击”Check Again”后,之前提示包全部完成,剩下的可以忽略。 直接下一步,在Summary界面,保持默认,点击Finish,开始安装: 安装过程中,差不多需要15—30分钟左右,其中会有一些错误提示,不过不影响,我们选择continue和默认即可。 安装完成后会提示需要执行两个脚本, 使用root账户执行两个脚本即可完成所有安装步骤。 登录root用户,到下面的两个目录下执行脚本即可。
1 2 3 4 [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~]
点击close,至此完成Oracle的配置和安装:
启动oracle和配置监听 linux下的Oracle在安装结束后是处于运行状态的。端口号1521,运行top -u oracle可以看到以Oracle用户运行的进程。在图形化界面下,运行$ORACLE_HOME/sqldeveloper/sqldeveloper.sh可以出现Oracle自带的免费Oracle管理客户端SQL Developer。试着连接刚安装的Oracle,连接成功。
以oracle用户登录 以oracle身份登录数据库,进入Sqlplus控制台:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@oracle db_1] [oracle@oracle ~]$ sqlplus / as sysdba [oracle@oracle ~]$ sqlplus /nolog --进入Sqlplus控制台 SQL> connect / as sysdba Connected. SQL> startup ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup 启动 ORACLE instance started. Total System Global Area 3273641984 bytes Fixed Size 2217792 bytes Variable Size 1795164352 bytes Database Buffers 1459617792 bytes Redo Buffers 16642048 bytes Database mounted. Database opened.
启动监听服务 以oracle身份登录数据库,前提是首先启动数据库,也可以用dbstart和dbshut启动和关闭数据库实例
1 2 3 4 5 6 7 8 [oracle@oracle ~]$ dbstart $ORACLE_HOME [oracle@oracle ~]$ dbshut $ORACLE_HOME [oracle@oracle ~]$ lsnrctl status [oracle@oracle ~]$ lsnrctl stop [oracle@oracle ~]$ lsnrctl start [oracle@oracle ~]$ dbca [oracle@oracle ~]$ sqlplus / as sysdba
添加用户授权 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 create user 用户 identified by 密码; 语法: grant connect, resource to 用户名; 例子: grant connect, resource to test ; 语法: revoke connect, resource from 用户名; 列子: revoke connect, resource from test ; grant select on ECO9.FORMTABLE_MAIN_94 to XJZT; grant select on ECO9.hrmsubcompany to XJZT; grant select on yurun501.bd_accsubj to yanfa519;
密码过期 1 2 3 4 5 6 7 8 $sqlplus / as sysdbasql> alter user smsc identified by <原来的密码> ----不用换新密码 SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME' ; ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
开机自启动 方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@oracle db_1] ········· orcl:/home/data/oracle/product/11.2.0/db_1:Y chmod +x /etc/rc.d/rc.localvi /etc/rc.d/rc.local su - oracle -lc "/home/data/oracle/product/11.2.0/db_1/bin/lsnrctl start" su - oracle -lc "/home/data/oracle/product/11.2.0/db_1/bin/dbstart $ORACLE_HOME " [oracle@oracle ~]$ lsnrctl status LISTENER
方法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@oracle ~] [Unit] Description=Oracle Database 12c Startup/Shutdown Service After=syslog.target network.target [Service] LimitMEMLOCK=infinity LimitNOFILE=65535 Type=oneshot RemainAfterExit=yes User=oracle Environment="ORACLE_HOME=/home/data/oracle/product/11.2.0/db_1" ExecStart=/home/data/oracle/product/11.2.0/db_1/bin/dbstart $ORACLE_HOME >> 2>&1 & ExecStop=/home/data/oracle/product/11.2.0/db_1/bin/dbshut $ORACLE_HOME 2>&1 & [Install] WantedBy=multi-user.target [root@oracle ~] [root@oracle ~] [root@oracle ~] [root@oracle ~]
问题处理 表空间用完时新增表空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 select file_id,tablespace_name,bytes/1024/1024/1024,maxbytes/1024/1024/1024,AUTOEXTENSIBLE from dba_data_files where tablespace_name='BWDATA' ; SELECT TABLESPACE_NAME, FILE_NAME, BYTES / 1024 / 1024 AS SIZE_MB, AUTOEXTENSIBLE, MAXBYTES / 1024 / 1024 AS MAX_SIZE_MB FROM DBA_DATA_FILES; USERS /u01/app/oracle/oradata/yxdb/users01.dbf 5 YES 32767.984375 UNDOTBS1 /u01/app/oracle/oradata/yxdb/undotbs01.dbf 2950 YES 32767.984375 SYSAUX /u01/app/oracle/oradata/yxdb/sysaux01.dbf 11970 YES 32767.984375 SYSTEM /u01/app/oracle/oradata/yxdb/system01.dbf 3048 YES 32767.984375 BWDATA /u01/app/oracle/oradata/yxdb/bwdata01.dbf 32767.984375 YES 32767.984375 BWDATA /u01/app/oracle/oradata/yxdb/bwdata02.dbf 32767 YES 32767 BWDATA /u01/app/oracle/oradata/yxdb/bwdata03.dbf 32767 YES 32767 BWDATA /u01/app/oracle/oradata/yxdb/bwdata04.dbf 22528 YES 22528 ALTER TABLESPACE bwdata ADD DATAFILE '/u01/app/oracle/oradata/yxdb/bwdata04.dbf' SIZE 22528M;