介绍
Oracle 19c,或者说是Oracle 12.2.0.3,是12c中稳定的版本,就像Oracle 11.2.0.4,是值得让客户做出升级决策,从Oracle支持的版本序列图中,就可以看出Oracle 19c所处的地位,Oracle 19c将稳定性作为此版本的核心目标,开发人员专注于修复已知问题,而不是添加新功能,这可能是让19c更加可靠以及让客户决定升级的关键因素
ORACLE 19C 安装
环境:
CentOS 7.9
安装方法:最简单的RPM安装
需要先安装一下组件:
oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
下载地址:
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html
下载ORACLE 19C安装包:
官网下载(需登录):
https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#19c
把下载的包上传到服务器上(lrzsz)
添加oracle的yum源解决依赖问题:wget http://public-yum.oracle.com/public-yum-ol7.repo
添加GPG-KEY:wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
开始安装:yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm
配置oracle
oracle RPM安装方式默认安装路径为/opt/oracle
创建数据库实例
默认数据库系统配置文件放在/etc/sysconfig/下,默认的配置文件名是oracledb_ORCLCDB-19c.conf,默认数据库实例名称也是ORCLCDBcat /etc/sysconfig/oracledb_ORCLCDB-19c.conf
1 | #This is a configuration file to setup the Oracle Database. |
配置文件定义了监听的端口和数据库文件的路径,可以按需求修改,这里就先用默认配置
修改数据库初始化配置文件:cat /etc/init.d/oracledb_ORCLCDB-19c
1 | # Setting the required environment variables |
这里定义了初始化数据库的配置,主要修改以下配置:
export ORACLE_SID=ORCLCDB #默认数据库名为ORCLCDB,可以自行修改,我这里也是用默认
export CHARSET=ZHS16GBK #默认为AL32UTF8,可以修改为ZHS16GBK,国内使用效率高一点
export PDB_NAME=maintest #默认数据库名为ORCLPDB1,可以自行修改,我这里修改成maintest
export LISTENER_NAME=LISTENER #默认监听器的名字
从12c开始 oracle添加了CDB,默认连接的都是CDB,在不切换到pdb的情况下,创建用户名需要加C##的前缀,因为CDB中默认创建的是common user如果想要创建本地用户,则要在PDB容器中创建
修改好后,可以建立数据库实例:etc/init.d/oracledb_ORCLCDB-19c configure
大概十几分钟的过程,和服务器性能有关
建立完数据库实例,可以先修改oracle用户的环境变量,oracle安装完毕后会自动创建oracle用户touch /home/oracle/.bash_profile
vim /home/oracle/.bash_profile
1 | export ORACLE_BASE=/opt/oracle |
应用配置:source /home/oracle/.bash_profile
登录数据库
切换到oracle用户操作:su oracle
sql plus / as sysdba
默认oracle命令行界面不支持上下箭头操作,此时可以加入rlwrap工具来操作:
切换回root用户:yum install -y rlwrap
这样在oracle用户下就可以使用上下键:
bash-4.2$ rlwrap sqlplus / as sysdba
实用配置
停机后手动启动
切换到oracle用户
启动监听:lsnrctl start
启动数据库实例:cd $ORACLE_HOME/bin
./dbstart $ORACLE_HOME
进入命令行启动数据库:sqlplus / as sysdba
startup mount;
alter database open;
自动启动
需要先修改一下 oracle 的启动脚本配置:
vi /etc/oratab
将“ORCLCDB:/opt/oracle/product/19c/dbhome_1:N”
改为“ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y”
保存退出然后设置数据库的启动命令
增加的内容为: 注意改成自己的$ORACLE_HOMEvim /usr/bin/oracle.sh
1 |
|
设置文件oracle.sh的读写权限
chmod 777 /usr/bin/oracle.sh设置 oracle19c.service
vi /etc/systemd/system/oracle19c.service
编辑添加内容为:
1 | [Unit] |
- 设置开机自动启动
systemctl enable oracle19c
orawd创建密码文件跳过复杂度
以12c的格式来创建orapwd file=orapwzqt.ora password=admin entries=10 format=12
数据库启动的不同状态
启动数据库时
先要找到初始化文件(spfile或pfile),此时数据库处在nomount状态(初始阶段);
其次根据初始文件找到控制文件(Control File),此时数据库处在mount状态;
然后根据控制文件找到数据库文件(Data File)、重做日志文件(Redo File);
此时数据库处在open状态,可以让用户访问数据库了。
关闭数据库的四个不同命令
1、用SQLplus登录到数据库sqlpuls / as sysdba
查看当前数据库的状态:select instance_name,status from v$instance;
可以查看到实例名和当前状态
2、关闭数据库
shutdown immediate;
再次运行select instance_name,status from v$instance;
则会出现ORA-01034:ORACLE not avaliable的报错
其实是关闭了实例(Instance),实例已经不在内存中,则显示Oracle数据库处在不能用的状态。
关闭数据库的4个命令如下:
shutdown immediate :不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事物自动rollback。启动时不需要对数据库进行实例恢复,最常用的命令,即使还有事务在运行,还有用户停留在数据库上,都可以关闭数据库。
shutdown abort:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时数据库将自动进行实例恢复。很少用,一般数据库在运行复杂业务时,shutdown immediate 命令不能关闭数据库,并且需要快速关闭数据库是使用。
shurdown transactional:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。启动时数据库不需要实例恢复,这个命令也很少使用,在数据库的业务很重要时,需要等到事务处理完成以后才能关闭。
shutdown normal(等于shutdown):不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时数据库不需要实例恢复。这个命令很少使用,只有还有用户停留在数据库上,都不能正常关闭时使用。
启动数据库到nomonunt状态
startup nomount
nomount状态是数据库进程刚运行到初始化文件(spfile或pfile文件)
pfile文件是文本文件,可以手工编辑
spfile是二进制文件,不能手工修改里面的参数,只能用数据库命令进行修改,还能在数据库运行是修改spfile里面的参数,提高了该文件的安全性。数据库默认使用spfile启动数据库。
nomount状态一般是在维护数据库是需要用到,如修改数据库重要参数,恢复数据库的控制文件以及数据时都需要用到该状态。
查看spfile文件的操作:show parameter spfile;
根据spfile文件创建pfile文件create pfile='D:\app\pfile.ora' from spfile;
打开pfile文件即可查看到数据库的重要参数
shutdown immediate 以后重新使用pfile 文件启动数据库到nomount状态startup nomount pflie='D:\app\pfile.ora';
启动到nomount状态以后,输入查询语句select name from v$controlfile;
报错,说明数据库在nomount 状态下不能查看控制文件的路径。
Oracle数据库启动时,进程先读取到初始化spfile文件,可见该文件是数据库重要文件之一。
数据库的mount状态
数据库的mount状态中,Oracle进程会读取到控制文件中的参数;该状态在数据库恢复时需用到,儿数据库在配置数据库的备库(Dataguard)时,数据库的备库是处于mount的状态。alter database mount;
select instance_name,status from v$instance;
数据库显示处于mounted状态,表示Oracle已处于mount状态
查看控制文件的具体位置:select name from v$controlfile;
打开控制文件是二进制文件,不能用记事本查看其内容。
可以使用oracle的命令,把控制文件的内容显示在trace(追踪)中:
alter database backup controlfile to trace as ‘D:\app\ct1.trc’;
即可用记事本打开ct1.trc文件,查看到里面的控制文件内容;其中‘—’为注释,其他内容则是控制文件的内容,可以根据控制文件来重建数据库的控制文件;该文件显示重做日志(Redo Logfile)组位置及其大小、数据文件(Data file)位置、字符集等。
将数据库启动到mount状态操作:
先关闭数据库:shutdown immediate;
启动到mount状态:startup mount;
数据库的open状态
数据库open状态表示数据库已经正常运行,且允许数据库用户访问,可以对数据库的数据进行增删改查操作,数据库可以正常工作了。
将数据库改为open状态:alter database open;
查看数据库的数据文件位置:select name from v$datafile;
查看数据库的重做日志位置:select member from v$logfile;
数据库的密码文件
Windows系统中oracle数据库中,密码文件位置:
F:\app11G\Administrator\product\11.2.0\dbhome_1\database
\PWDorcl11G.ora(orcl11G位数据库名)
Linux和Unix系统中名字叫orapworcl(orcl为数据库名)
改密码文件的作用是允许数据库的sysdba、sysoper用户通过口令远程登录,比如sys为数据库的sysdba的用户。
查看数据库中的“是否允许远程登录”的参数:show parameter remote_login_passwordfile;
remote_login_passwordfile 为none则表示不能远程;为exclusive则表示可以远程alter system set remote_login_passwordfile=none scope=spfile;
重启数据库才能生效,输入强制数据库重启SQL命令startup force;
查询及说明表空间
用sys账号登录查询:
select
tablespace_name as “表空间名称”,
block_size/1024 as “数据块存储大小单元KB”,
status as “表空间的状态”,
contents as “表空间的类型”,
logging as “是否有日志记录”
from dba_tablespaces;
tablespace_name as “表空间名称”,
block_size/1024 as “数据块存储大小单元KB”,—一般默认是8KB,如果需要存储大对象可设为18K
status as “表空间的状态”,—online表空间处于联机状态,offline为脱机
contents as “表空间的类型”,—permanent永久保存,undo还原表空间的数据,相当于回收站,只能保存最近更改的数据;temporary一般为临时表空间数据,不会永久存储在系统数据文件中,只在查询或者排序是,内存不够时借用改空间临时存放数据
logging as “是否有日志记录”—重要需保存数据的表空间,一般都为logging状态,需要记录相关日志,像临时表空间或者不重要的表空间则不需要记录。
查询及说明数据文件
查看数据文件的表空间、大小、是否扩展以及最大值
select
tablespace_name as “表空间名称”,
file_name as “数据文件路径”,
bytes/1024/1024 as “数据文件大小MB”,
autoextensible as “数据文件是否自动扩展”,
maxbytes/1024/1024 as “数据文件最大MB”
from dba_data_files;
表空间和数据文件是一对多的关系。
数据文件路径:是oracle数据库的数据文件再系统所在的磁盘位置;
数据文件大小:可以看到每个数据文件现在使用了多大空间;
是否自动扩展:一般为了节省磁盘空间,刚开始的数据文件都设置得比较小,当数据不断增多是,文件是否自动扩展,直至到达设定的最大值;
数据文件最大值:及该数据文件最大容量。可以根据具体的需要来进行设置,若是默认,则根据所在的系统允许单个文件的最大值。
查询及说明重做日志
查看重做日志得位置、状态、大小和类型:select * from v$logfile;
group#(组):可以看到数据库中共有3组重做日志,图中每组只有一个文件
status(状态):stale为已经把数据提交到数据库中,空白状态为正在使用该文件
member(成员):为每组的成员(这里每组只有一个成员),并 列出路径和名称。