oracle 19c

介绍

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,默认数据库实例名称也是ORCLCDB
cat /etc/sysconfig/oracledb_ORCLCDB-19c.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
#This is a configuration file to setup the Oracle Database. 
#It is used when running '/etc/init.d/oracledb_ORCLCDB configure'.
#Please use this file to modify the default listener port and the
#Oracle data location.

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# ORACLE_DATA_LOCATION: Database oradata location
ORACLE_DATA_LOCATION=/opt/oracle/oradata

# EM_EXPRESS_PORT: Oracle EM Express listener
EM_EXPRESS_PORT=5500

配置文件定义了监听的端口和数据库文件的路径,可以按需求修改,这里就先用默认配置

修改数据库初始化配置文件:
cat /etc/init.d/oracledb_ORCLCDB-19c

1
2
3
4
5
6
7
8
9
10
11
# Setting the required environment variables
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1

export ORACLE_VERSION=19c
export ORACLE_SID=ORCLCDB
export TEMPLATE_NAME=General_Purpose.dbc
export CHARSET=AL32UTF8
export PDB_NAME=maintest
export LISTENER_NAME=LISTENER
export NUMBER_OF_PDBS=1
export CREATE_AS_CDB=true

这里定义了初始化数据库的配置,主要修改以下配置:
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
2
3
4
5
6
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=ORCLCDB
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8

应用配置:
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;

自动启动

  1. 需要先修改一下 oracle 的启动脚本配置:
    vi /etc/oratab
    将“ORCLCDB:/opt/oracle/product/19c/dbhome_1:N”
    改为“ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y”
    保存退出

  2. 然后设置数据库的启动命令
    增加的内容为: 注意改成自己的$ORACLE_HOME
    vim /usr/bin/oracle.sh

1
2
3
4
#! /bin/bash
# script For oracle19c.service
/data1/opt/oracle/app/oracle/product/19/dbhome_1/bin/lsnrctl start
/data1/opt/oracle/app/oracle/product/19/dbhome_1/bin/dbstart /data1/opt/oracle/app/oracle/product/19/dbhome_1/dbhome_1
  1. 设置文件oracle.sh的读写权限
    chmod 777 /usr/bin/oracle.sh

  2. 设置 oracle19c.service
    vi /etc/systemd/system/oracle19c.service
    编辑添加内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Oracle19c
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"
ExecStart=/usr/bin/oracle.sh

[Install]
WantedBy=multi-user.target
  1. 设置开机自动启动
    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(成员):为每组的成员(这里每组只有一个成员),并 列出路径和名称。

分享到