静默安装的好处在于成功率比图形化界面高,并且静默安装在配置程度上,要强于图形化界面,所以普遍不用图形化界面安装
安装环境版本如下:
Oracle 11G R2
注意安装包要两个:linux.x64_11gR2_database_1of2、linux.x64_11gR2_database_2of2
CentOS 7 64位
安装包下载地址:https://blog.csdn.net/dudadudadd/article/details/127186705
第一步:上传安装包,rz命令需要yum install lrzsz -y
第二步:解压安装包
yum -y install unzip
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
第三步:关闭selinux
vi /etc/selinux/config
设置SELINUX=disabled
第四步:关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
第五步:安装Oracle需要的依赖
yum install -y gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel
第六步:给Oracle配置一个用户,并添加主组合附加组
groupadd oracle
groupadd dba
useradd -g oracle -G dba oracle
passwd oracle
第七步:修改系统内核配置
vi /etc/sysctl.conf
追加:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
#kernel.shmmax 道理上将需要设置成服务器内存的一半,单位为byte
kernel.shmmax = 1073741824
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
修改后刷新配置
sysctl -p
第八步:修改用户限制
vi /etc/security/limits.conf
追加:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
vi /etc/pam.d/login
追加:
session required /lib64/security/pam_limits.so
session required pam_limits.so
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
第九步:准备安装用的文件夹,可以自定义
#注意这个路径最后一层最好是11.2.0 因为安装完我才发现后面有个oracle用户域的环境变量文件中Oracle的HOME最后一层就是11.2.0,没有随着安装而改变,导致我最后进数据库的时候一致报HOME的错
mkdir -p /opt/oracleData/product/11.2
mkdir /opt/oracleData/data
mkdir /opt/oracleData/inventory
mkdir /opt/oracleData/fast_recovery_area
chown -R oracle:oracle /opt/oracleData
chmod -R 775 /opt/oracleData
第十步:设置oracle用户,并且下面所有步骤均不变用户,除非特别说明
首先切换到oracle用户
su oracle
cd ~
随后开始修改oracle用户的配置
vi .bash_profile
追加:
ORACLE_BASE=/opt/oracleData
ORACLE_HOME=$ORACLE_BASE/product/11.2
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
注意,ORACLE_SID
一般默认orcl,否则很可能数据库启动后无法访问。第一次配置完记得source一下
第十一步:编辑静默安装响应文件
复制安装文件夹response到当前oracle用户的主目录下,并开始配置
cp -r /opt/wy/database/response/ ./
cd response/
vi db_install.rsp
找到并设置如下选项
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=CentOS
UNIX_GROUP_NAME=oracle
INVENTORY_LOCATION=/opt/oracleData/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/opt/oracleData/product/11.2
ORACLE_BASE=/opt/oracleData
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
第十二步:根据响应文件安装Oracle11
首先回到Oracle11的安装包解压后的文件夹中
cd /opt/wy/database/
运行如下命令
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
开始Oracle在后台静默安装。安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在后台进行,等待出现Successfully Setup Software,则安装程序已经停止了。
安装成功后,此时还没有结束,你需要根据提示进行操作
切换回root用户
su root
运行提示中的脚本
[root@hdp3 wy]# sh /opt/oracleData/inventory/orainstRoot.sh
更改权限/opt/oracleData/inventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/opt/oracleData/inventory 到 oracle.
脚本的执行已完成。
[root@hdp3 wy]# sh /opt/oracleData/product/11.2/root.sh
Check /opt/oracleData/product/11.2/install/root_hdp3_2022-10-06_20-40-01.log for the output of root script
第十三步:以静默方式配置监听
在root用户下安装nc
yum install -y nc
切换回oracle用户,启动监听
[root@hdp3 bin]$ su oracle
[oracle@hdp3 bin]$ /opt/oracleData/product/11.2/bin/netca /silent /responseFile /home/oracle/response/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /home/oracle/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/opt/oracleData/product/11.2/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
[oracle@hdp3 bin]$
监听启动后,会在/opt/oracleData/product/11.2/network/admin
中生成listener.ora
和sqlnet.ora
,并且你可以通过nc工具查看监听的端口
[oracle@hdp3 bin]$ netstat -tnulp | grep 1521
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::1521 :::* LISTEN 5637/tnslsnr
第十四步:生成所有的默认数据库实例
vi /home/oracle/response/dbca.rsp
修改如下参数
[GENERAL]
# oracle版本,不能更改
RESPONSEFILE_VERSION = "11.2.0"
# Description : Type of operation
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
# Description : Global database name of the database
# 全局数据库的名字=SID+主机域名
# 第三方工具链接数据库的时候使用的service名称
GDBNAME = "orcl.test"
# Description : System identifier (SID) of the database
# 对应的实例名字
SID = "orcl"
# Description : Name of the template
# 建库用的模板文件
TEMPLATENAME = "General_Purpose.dbc"
# Description : Password for SYS user
# SYS管理员密码
SYSPASSWORD = "123456"
# Description : Password for SYSTEM user
# SYSTEM管理员密码
SYSTEMPASSWORD = "123456"
# Description : Password for SYSMAN user
# SYSMAN管理员密码
SYSMANPASSWORD = "123456"
# Description : Password for DBSNMP user
# DBSNMP管理员密码
DBSNMPPASSWORD = "123456"
# Description : Location of the data file's
# 数据文件存放目录
DATAFILEDESTINATION =/opt/oracleData/data
# Description : Location of the data file's
# 恢复数据存放目录
RECOVERYAREADESTINATION=/opt/oracleData/fast_recovery_area
# Description : Character set of the database
# 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
# (CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8")
CHARACTERSET = "AL32UTF8"
NATIONALCHARACTERSET= "UTF8"
# Description : total memory in MB to allocate to Oracle
# 设置oracle内存1638MB,正常情况需要是物理内存的80%
TOTALMEMORY = "1638"
运行命令生成所有默认的数据库实例
[oracle@hdp3 bin]$ /opt/oracleData/product/11.2/bin/dbca -silent -responseFile /home/oracle/response/dbca.rsp
复制数据库文件
1% 已完成
3% 已完成
11% 已完成
18% 已完成
37% 已完成
正在创建并启动 Oracle 实例
40% 已完成
45% 已完成
50% 已完成
55% 已完成
56% 已完成
60% 已完成
62% 已完成
正在进行数据库创建
66% 已完成
70% 已完成
73% 已完成
85% 已完成
96% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/opt/oracleData/cfgtoollogs/dbca/orcl/orcl.log"。
当数据库生成结束,运行一下线程检查,能正常输出就OK
[oracle@hdp3 bin]$ ps -ef | grep ora_ | grep -v grep
oracle 5484 1 0 21:08 ? 00:00:00 ora_pmon_orcl
oracle 5486 1 0 21:08 ? 00:00:00 ora_vktm_orcl
oracle 5490 1 0 21:08 ? 00:00:00 ora_gen0_orcl
oracle 5492 1 0 21:08 ? 00:00:00 ora_diag_orcl
oracle 5494 1 0 21:08 ? 00:00:00 ora_dbrm_orcl
oracle 5496 1 0 21:08 ? 00:00:00 ora_psp0_orcl
oracle 5498 1 0 21:08 ? 00:00:00 ora_dia0_orcl
oracle 5500 1 0 21:08 ? 00:00:00 ora_mman_orcl
oracle 5502 1 0 21:08 ? 00:00:00 ora_dbw0_orcl
oracle 5504 1 0 21:08 ? 00:00:00 ora_lgwr_orcl
oracle 5506 1 0 21:08 ? 00:00:00 ora_ckpt_orcl
oracle 5508 1 0 21:08 ? 00:00:00 ora_smon_orcl
oracle 5510 1 0 21:08 ? 00:00:00 ora_reco_orcl
oracle 5512 1 0 21:08 ? 00:00:00 ora_mmon_orcl
oracle 5514 1 0 21:08 ? 00:00:00 ora_mmnl_orcl
oracle 5516 1 0 21:08 ? 00:00:00 ora_d000_orcl
oracle 5518 1 0 21:08 ? 00:00:00 ora_s000_orcl
oracle 5552 1 0 21:08 ? 00:00:00 ora_qmnc_orcl
oracle 5567 1 0 21:08 ? 00:00:00 ora_cjq0_orcl
oracle 5569 1 0 21:08 ? 00:00:00 ora_q000_orcl
oracle 5571 1 0 21:08 ? 00:00:00 ora_q001_orcl
还要检查一下监听的状态
/opt/oracleData/product/11.2/bin/lsnrctl status
到此你要注意是否需要修改一个地方,我前面创建安装目录的时候也说了,在oracle用户的主目录下.bash_profile
文件中,HOME的最后一层是11.2.0,但我创建的是11.2,你看看你有没有这个问题。
此时数据库安装就结束了,更多的安装信息可以去看/opt/oracleData/cfgtoollogs/dbca/orcl/orcl.log
为了后续使用,你要将/opt/oracleData/product/11.2/bin
目录写到/etc/profile
的PATH中,作者本地侧环境已经添加,所以后面使用命令不需要路径了。
第十五步:登录Oracle检查是否可以正常使用,运行如下命令
[oracle@hdp3 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 6 21:46:57 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
OPEN
如果正常显示了上面的信息则数据库正常运行
第十六步:我们要使用数据库就需要一个普通用户,用来日常的使用,因为默认自带的那些SYS等用户,是不能用来远程的,而且也不会有那个傻子一样的数据库管理员给你那些用户的密码
首先登录进入数据库
sqlplus / as sysdba
随后在数据库中运行如下sql
语法:CREATE USER 用户名 IDENTIFIED BY 密码;
CREATE USER oruse IDENTIFIED BY 123456;
刚创建的用户还不能用,需要解锁
语法:ALTER USER 用户名 ACCOUNT UNLOCK/LOCK
alter user oruse account unlock;
如果那一天这个用户不用了就把它LOCK了,然后运行“drop user 用户名”删掉它
给该用户使用的权限
语法:CRANT 权限 SESSION TO 用户名
创建权限:grant create session to oruse;
数据库管理员权限:grant dba to oruse;
我们今后日常使用就用这个用户,而非自带的用户,因为那些用户的权限太大了不好控制,此时你可以运行下面的命令切换用户
connect oruse/123456;
外部的第三方连接工具你也可以使用,比如Navicat
连接的时候注意,连接数据库用的服务名为orcl.test
,系统标识符 (SID)为orcl
,前面配置的时候估计会有人把orcl.test理解成了一个数据库,其实不是,它就是用来连接认证的服务名,连接后你可以看到所有的默认实例。同时我们建立的oruse用户也并不只属于某一个实例,因为我们已经给了它整个Oracle的dba权限,你可以把他看做mysql的root,不过权限没那么高而已。
如果后期使用数据库你忘了连接名可以用下面的语句查询
查询服务名
select * from global_name;
查询SID
select value from v$parameter where name like '%service_name%';
在说关闭和启动前,我强调一点,任何Oracle的服务系统级别管理操作都使用安装时创建的oracle用户,在后期日常使用数据库实例时使用oruse用户,除非必要不要用root和自带的那些数据库用户。
数据库的关闭
我们先说如何关闭Oracle数据库,因为如果你是按照文档来的话,现在正好是启动的,关闭Oracle你要先查看一下数据库的所有进程
[oracle@hdp3 bin]$ ps -ef|grep oracle
root 1300 1083 0 19:57 pts/0 00:00:00 su oracle
oracle 1301 1300 0 19:57 pts/0 00:00:00 bash
root 1416 1373 0 20:11 pts/0 00:00:00 su oracle
oracle 1417 1416 0 20:11 pts/0 00:00:00 bash
root 4344 1524 0 20:41 pts/0 00:00:00 su oracle
oracle 4345 4344 0 20:41 pts/0 00:00:00 bash
oracle 5484 1 0 21:08 ? 00:00:00 ora_pmon_orcl
oracle 5486 1 0 21:08 ? 00:00:18 ora_vktm_orcl
oracle 5490 1 0 21:08 ? 00:00:00 ora_gen0_orcl
oracle 5492 1 0 21:08 ? 00:00:00 ora_diag_orcl
oracle 5494 1 0 21:08 ? 00:00:00 ora_dbrm_orcl
oracle 5496 1 0 21:08 ? 00:00:00 ora_psp0_orcl
oracle 5498 1 0 21:08 ? 00:00:02 ora_dia0_orcl
oracle 5500 1 0 21:08 ? 00:00:00 ora_mman_orcl
oracle 5502 1 0 21:08 ? 00:00:00 ora_dbw0_orcl
oracle 5504 1 0 21:08 ? 00:00:00 ora_lgwr_orcl
oracle 5506 1 0 21:08 ? 00:00:01 ora_ckpt_orcl
oracle 5508 1 0 21:08 ? 00:00:00 ora_smon_orcl
oracle 5510 1 0 21:08 ? 00:00:00 ora_reco_orcl
oracle 5512 1 0 21:08 ? 00:00:00 ora_mmon_orcl
oracle 5514 1 0 21:08 ? 00:00:01 ora_mmnl_orcl
oracle 5516 1 0 21:08 ? 00:00:00 ora_d000_orcl
oracle 5518 1 0 21:08 ? 00:00:00 ora_s000_orcl
oracle 5552 1 0 21:08 ? 00:00:00 ora_qmnc_orcl
oracle 5567 1 0 21:08 ? 00:00:00 ora_cjq0_orcl
oracle 5569 1 0 21:08 ? 00:00:00 ora_q000_orcl
oracle 5571 1 0 21:08 ? 00:00:00 ora_q001_orcl
oracle 5637 1 0 21:14 ? 00:00:00 /opt/oracleData/product/11.2/bin/tnslsnr LISTENER -inherit
oracle 5649 1 0 21:18 ? 00:00:00 ora_smco_orcl
root 5744 4362 0 21:37 pts/0 00:00:00 su oracle
oracle 5745 5744 0 21:37 pts/0 00:00:00 bash
oracle 5852 1 0 21:59 ? 00:00:06 ora_vkrm_orcl
oracle 6016 1 0 22:28 ? 00:00:00 ora_w000_orcl
oracle 6019 5745 0 22:29 pts/0 00:00:00 ps -ef
oracle 6020 5745 0 22:29 pts/0 00:00:00 grep --color=auto oracle
这些进程中oracle用户的进程是我们需要关注的,其中ora_xx_orcl
表示的是所有的数据库实例,/opt/oracleData/product/11.2/bin/tnslsnr
是监听进程。
我们要先关闭监听
[oracle@hdp3 bin]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 06-OCT-2022 22:34:45
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
然后关闭实例,实例的关闭需要进入数据库
[oracle@hdp3 bin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 6 22:35:49 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
运行shutdown关闭的时候注意,共有三种命令可以选择,如下。
shutdown normal
:正常方式关闭数据库,只会关闭数据库,所占用的资源不会释放。
shutdown immediate
:完整关闭数据库,执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),推荐使用这个。
shutdown abort
:直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
再次检查进程,如下没有实例和监听进程则关闭成功。
[oracle@hdp3 bin]$ ps -ef|grep oracle
root 1300 1083 0 19:57 pts/0 00:00:00 su oracle
oracle 1301 1300 0 19:57 pts/0 00:00:00 bash
root 1416 1373 0 20:11 pts/0 00:00:00 su oracle
oracle 1417 1416 0 20:11 pts/0 00:00:00 bash
root 4344 1524 0 20:41 pts/0 00:00:00 su oracle
oracle 4345 4344 0 20:41 pts/0 00:00:00 bash
root 5744 4362 0 21:37 pts/0 00:00:00 su oracle
oracle 5745 5744 0 21:37 pts/0 00:00:00 bash
oracle 6081 5745 0 22:41 pts/0 00:00:00 ps -ef
oracle 6082 5745 0 22:41 pts/0 00:00:00 grep --color=auto oracle
数据库的启动
接下来我们说启动,启动的时候,需要用到sqlplus工具,不要以为sqlplus必须Oracle启动才可以运行,它是个工具,和Oracle服务没有必然关系
,因此需要使用它来启动数据库。
[oracle@hdp3 bin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Oct 6 22:45:35 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup;
ORACLE instance started.
Total System Global Area 1720328192 bytes
Fixed Size 2214056 bytes
Variable Size 1006634840 bytes
Database Buffers 704643072 bytes
Redo Buffers 6836224 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
随后启动监听
[oracle@hdp3 bin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 06-OCT-2022 22:52:19
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /opt/oracleData/product/11.2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracleData/product/11.2/network/admin/listener.ora
Log messages written to /opt/oracleData/diag/tnslsnr/hdp3/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hdp3)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 06-OCT-2022 22:52:19
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracleData/product/11.2/network/admin/listener.ora
Listener Log File /opt/oracleData/diag/tnslsnr/hdp3/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hdp3)(PORT=1521)))
The listener supports no services
The command completed successfully
检查是否有实例与监听进程
[oracle@hdp3 bin]$ ps -ef|grep oracle
root 1300 1083 0 19:57 pts/0 00:00:00 su oracle
oracle 1301 1300 0 19:57 pts/0 00:00:00 bash
root 1416 1373 0 20:11 pts/0 00:00:00 su oracle
oracle 1417 1416 0 20:11 pts/0 00:00:00 bash
root 4344 1524 0 20:41 pts/0 00:00:00 su oracle
oracle 4345 4344 0 20:41 pts/0 00:00:00 bash
root 5744 4362 0 21:37 pts/0 00:00:00 su oracle
oracle 5745 5744 0 21:37 pts/0 00:00:00 bash
oracle 6124 1 0 22:46 ? 00:00:00 ora_pmon_orcl
oracle 6126 1 0 22:46 ? 00:00:01 ora_vktm_orcl
oracle 6130 1 0 22:46 ? 00:00:00 ora_gen0_orcl
oracle 6132 1 0 22:46 ? 00:00:00 ora_diag_orcl
oracle 6134 1 0 22:46 ? 00:00:00 ora_dbrm_orcl
oracle 6136 1 0 22:46 ? 00:00:00 ora_psp0_orcl
oracle 6138 1 0 22:46 ? 00:00:00 ora_dia0_orcl
oracle 6140 1 0 22:46 ? 00:00:00 ora_mman_orcl
oracle 6142 1 0 22:46 ? 00:00:00 ora_dbw0_orcl
oracle 6144 1 0 22:46 ? 00:00:00 ora_lgwr_orcl
oracle 6146 1 0 22:46 ? 00:00:00 ora_ckpt_orcl
oracle 6148 1 0 22:46 ? 00:00:00 ora_smon_orcl
oracle 6150 1 0 22:46 ? 00:00:00 ora_reco_orcl
oracle 6152 1 0 22:46 ? 00:00:00 ora_mmon_orcl
oracle 6154 1 0 22:46 ? 00:00:00 ora_mmnl_orcl
oracle 6156 1 0 22:46 ? 00:00:00 ora_d000_orcl
oracle 6158 1 0 22:46 ? 00:00:00 ora_s000_orcl
oracle 6192 1 0 22:46 ? 00:00:00 ora_qmnc_orcl
oracle 6206 1 0 22:46 ? 00:00:00 ora_cjq0_orcl
oracle 6208 1 0 22:46 ? 00:00:01 ora_vkrm_orcl
oracle 6214 1 0 22:46 ? 00:00:00 ora_q000_orcl
oracle 6216 1 0 22:46 ? 00:00:00 ora_q001_orcl
oracle 6287 1 0 22:52 ? 00:00:00 /opt/oracleData/product/11.2/bin/tnslsnr LISTENER -inherit
oracle 6293 5745 0 22:53 pts/0 00:00:00 ps -ef
oracle 6294 5745 0 22:53 pts/0 00:00:00 grep --color=auto oracle
再次着重说明一下,关闭时,先关监听,再关实例,启动时,就反着来了,先开实例,再开监听,安装的时候监听先启动是得利于创建监听的程序,同时启动除了startup
,还有其他命令,不过!!!!!我们正常情况下不用,如下。
startup
:其实就是startup nomount、alter database mount、alter database open三个命令的总和
startup force
:强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令
startup nomount
:非安装启动,这种方式下启动可执行重建控制文件、重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
startup mount (dbname)
:安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
执行“nomount”,可以打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
startup open (dbname)
:先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
startup restrict
:约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问,非特权用户访问时,会出现以下提示:
ERROR:ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
startup pfile=参数文件名
:带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库,例:startup pfile=/oradb/init.ora
startup EXCLUSIVE
:独占和共享启动
到此Oracle数据安装教程结束,要说的几个常识问题,刚接触Oracle的朋友一般分不清Oracle的自带用户和权限,其实对于我们开发人员,而非专门的Oracle管理员,你只需要分清下面几点就行,其他的那不是你该操心的。
1、Oracle中自带有sys、system等多个内置的低特权管理用户
,和多个锁定的普通用户,自带普通用户一般不用,也不用关注它。不过默认的数据库实例和自带普通用户一般是一对一关系。
2、sys是Oracle的最高权限所有者,它只允许以sysdba认证方式登录,system是次于sys的一般管理用户,在权限上和普通的dba权限用户基本一致,而且system只能以普通用户的方式登录。
3、Oracle常用的登录认证方式有三种,同时也代表了三种角色,分别有normal、sysdba 和 sysoper
normal是普通用户角色认证,一般我们使用数据库第三方工具都只有这一种认证方式,作者接触到的第三方只有PLSQL Developer
有另外两种认证方式,但是然并然,人家不可能把sys密码告诉你,所以基本没用。sysdba是独属于sys用户的认证方式。sysoper网上众说纷纭,且一般用的很少,但能够确定的是该角色认证独属于public用户,而且该用户没有配置密码的说法,官方也有说明public是一个特殊用户
,所以一般sysdba和sysoper只在sqlplus工具中用
我上面说了三种认证代表了三种角色,既然是角色就有固定的权限,当然普通用户权限很灵活,但是另外两种角色权限持有者的权限如下图所示
4、最容易混淆的是dba和sysdba,一定要分清,sysdba说的是独属于sys用户的一种角色认证,认证成功后``就可直接登录sys用户,并持有属于系统级最高管理权限,你删库跑路
就需要sys用户,而dba只是普通管理角色,或者说是用户级别权限集合,日常的管理是够用的,只是某些特别重要操作的权限它没有,比如删库跑路
5、最后一点,我要特别说明低特权账户,就是system等这些系统内置的拥有特殊使用作用的账户,再强调一次,无论是你自己使用或者是交于他人使用另行创建用户,不要为了方便直接给这些数据库用户。低特权用户在oracle数据库中拥有一个很危险的能力权限越级
。通常情况下,我们要获得oracle数据库的sys权限,需要知道sys的密码,运行conn sys as sysdba
也就是要经历如下的操作:
a. 打开命令行或终端窗口。
b. 输入以下命令并按回车键:sqlplus / as sysdba
c. 这将直接以sys用户的身份登录到数据库,并拥有sysdba特权。
但是低特权用户oracle允许他们使用以下的方式来越级:
a. 使用system用户登录到数据库:sqlplus system/password
b. 输入以下命令并按回车键:alter session set “_oracle_script”=true;
c. 然后使用以下命令将system用户提升为sysdba权限:grant sysdba to system;
d. 现在,你可以使用system用户以sysdba权限登录到数据库了
并且你要注意,如果你给一个用户赋予了dba权限,他也属于低特权用户。只不过这个低级特权用户在其他某些特殊操作的时候不可使用oracle内部有些操作是定死的某些用户才能够使用。