当前位置 : 主页 > 操作系统 > centos >

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收

来源:互联网 收集:自由互联 发布时间:2022-08-15
​​ 声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。 ​​ ​​ 主旨 ​​ 上文我们介绍了如何搭建,在这里我们讲下如何重启,如何新建用户,

​​声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。​​

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_sql


​​主旨​​

上文我们介绍了如何搭建,在这里我们讲下如何重启,如何新建用户,如何新建数据库等基本操作吧,为什么要介绍这些呢?因为我发现身边的人吧,可能使用mysql习惯了,所以oracle的这些基本操作,都不是很会,而且网上的资料,怎么说呢,参差不齐,我还是直接自己来整理一番吧。


文章写完了我上来吐个槽,当时我学习的时候,要有这么个文章,我尼玛至于那么烦嘛~~~吐血。网上的文章乱七八糟,都是一点一点抠抠索索的,服了~~~


​​环境​​

linux环境
oracle环境


​​注意​​

oracle数据库的所有操作,都要使用oracle用户操作。


​​数据库启动​​

普及个概念,oracle启动需要启动两个东西,一个是实例,实例就是数据库,另一个需要启动的是监听,监听是提供服务的。那么问题来了,这两个东西,先启动哪个呢?启动顺序是什么?长篇大论就不说了,也不说为什么要先启动谁了,直接记住:先启动监听,然后再启动实例。

启动监听:

命令:lsnrctl start

实例:
[yunweijia@localhost ~]$ sudo su - oracle
上一次登录:三 2月 23 10:41:40 CST 2022pts/0 上
[oracle@localhost ~]$ lsnrctl start # 最后会提示 successfully


启动实例:

命令:startup

实例:
[oracle@localhost ~]$ sqlplus / as sysdba
SQL> startup # 同样会提示是否启动成功
SQL> exit
[oracle@localhost ~]$


    验证:

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_sql_02


如上图,使用客户端连接成功。什么?如何使用客户端连接?那请看前一篇文章咯。


​​数据库关闭​​

同理,不解释理论,记住顺序,先关闭实例,再关闭监听。


关闭实例:

命令:shutdown

实例:
[oracle@localhost ~]$ sqlplus / as sysdba
SQL> shutdown
SQL> exit
[oracle@localhost ~]


关闭监听:

命令:lsnrctl stop

实例:
[oracle@localhost ~]$ lsnrctl stop


​​数据库模式​​

为什么会出现这个东东,什么数据库模式,不是说这篇文章是基本操作嘛,我不想知道什么数据库模式,我只想知道咋用,赶紧说咋用~~~


别急,别急,这个很重要,关系到你下面建库可以顺利,这是基石。


从Oracle 12C开始,引入了CDB与PDB的新特性,在ORACLE 12C之后的数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_sql_03


什么玩意?上面的你没看懂,那你只需要记住,oracle 12c之后的版本,区分数据库模式,默认是cdb模式,你要手动切换成pdb模式。记住这个就行了。当然了,如果你要用cdb模式,那也是可以的,不过​用户名前面就需要添加 “C##” 了​,按需使用。


下面说下切换的方式:

[yunweijia@localhost ~]$ sudo su - oracle
上一次登录:三 2月 23 13:44:54 CST 2022pts/0 上
[oracle@localhost ~]$ sqlplus / as sysdba
SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 MOUNTED
SQL>

上面执行完结果显示的 PDB$SEED 是一个PDB的模板,状态始终是 READ ONLY NO,而 ORCLPDB1 是PDB,下面看下如何切换。

SQL> alter session set container=ORCLPDB1;
SQL> startup
SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 ORCLPDB1 MOUNTED
SQL>

从上面看,我们切换完毕之后,再次查询,发现只有ORCLPDB1了,注意,切换完毕之后,需要输入 startup 才算正常,否则后面命令执行建库命令会报错。那么万一我们有哪天需要将PDB切换到CDB呢,这不是没可能呀,我们又该如何操作呢,往下看;

SQL> alter session set container=CDB$ROOT;

??????

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 MOUNTED
SQL>

从上面结果看,我们是不是又成功的切换到了CDB,当然了,我下文中的所有操作,都是在PDB模式中进行的,我不用CDB,下面操作报错的时候,你记得看看数据库模式是不是PDB哦。

​​数据库和用户​​

what?你又要说什么?你上面说模式,我忍了,看你这个破标题,难不成又要说理论?我不要理论,你直接给我上操作。

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_oracle_04


行行行,就是这里明确下,一个用户对应一个库,建库自然建用户,但是一个库不一定只能被一个库所管理,完事儿,下面我们直接操作。别问我如何单独新建用户,OVER。


​​新建用户+库​​


1、新建目录和进入数据库:

[yunweijia@localhost ~]$ sudo su - oracle
上一次登录:三 2月 23 13:46:36 CST 2022pts/0 上
[oracle@localhost ~]$ pwd
/home/oracle
[oracle@localhost ~]$ mkdir -pv dba/yunweijia
mkdir: 已创建目录 "dba"
mkdir: 已创建目录 "dba/yunweijia"
[oracle@localhost ~]$
[oracle@localhost ~]$ sqlplus / as sysdba


2、新建临时表空间:

SQL> create temporary tablespace yunweijia
tempfile '/home/oracle/dba/yunweijia/yunweijia.dbf'
size 50m
autoextend on
next 50m maxsize 1024m
extent management local;

解释:
yunweijia:是临时表空间的名字
yunweijia.pdf:是临时表空间存放位置和名字
其他的文件大小,你根据实际情况来即可



3、新建表空间:

SQL> CREATE TABLESPACE yunweijia01 DATAFILE
'/home/oracle/dba/yunweijia/yunweijia01.dbf' SIZE 1024M AUTOEXTEND OFF
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

解释:
yunweijia01:是表空间的名字
yunweijia01.pdf:是表空间存放位置和名字,需要和临时表空间处于同一目录


4、新建用户:

SQL> CREATE USER yunweijia
IDENTIFIED BY yunweijia123456
DEFAULT TABLESPACE yunweijia01
TEMPORARY TABLESPACE yunweijia
PROFILE DEFAULT
ACCOUNT UNLOCK;

解释:
CREATE USER yunweijia # 新建用户名是 yunweijia
IDENTIFIED BY yunweijia123456 # 密码是yunweijia123456
DEFAULT TABLESPACE yunweijia01 # 表空间hiyunweijia01
TEMPORARY TABLESPACE yunweijia # 临时空间是yunweijia


5、用户授权:

SQL> GRANT CONNECT TO yunweijia;
SQL> GRANT DBA TO yunweijia;
SQL> GRANT resource to yunweijia;


6、让新建的用户可以连接:

什么玩意儿?不是都授权了嘛?怎么还连不了咋地?你是不是在和我开玩笑呢?

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_sql_05

别急,不过确实是这样,确实新建完用户之后连不上,原因下面会写,我们还需要进行下面的一步操作:

SQL> select name,pdb from v$services;
NAME
----------------------------------------------------------------
PDB
--------------------------------------------------------------------------------
orclpdb1
ORCLPDB1


SQL> exit
[oracle@localhost ~]$ vim /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCLCDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLCDB)
(SERVICE_NAME = orclpdb1) # 这里是新加的
(SERVICE_NAME = ORCLPDB1) # 这里是新加的
)
)

LISTENER_ORCLCDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


[oracle@localhost ~]$


从上面可以看到,我们是把查出来的PDB的名字,添加到服务名字了,因为我们之前默认的是CDB,那么你连接PDB是不是不太行,但是我们经过这个操作,那就一点儿毛病没有了。

PS:本步骤改完文件,不需要重启oracle数据库。


7、验证:

我们使用navicat客户端,使用我们新建的用户连接,看看是否可以看到我们新建的数据库;

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_数据库_06

一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_数据库_07


一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈_数据库_08

从上面看,我们成功了。


完事了吗?俗话说的好,你会创建,你就要会删除,继续往下看吧。


​​删除用户+库​​

1、删除用户

DROP USER 用户名 CASCADE;


2、删除表空间

DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;


3、删除临时表空间

drop tablespace 临时表空间名 including contents and datafiles cascade constraints;


搞定,本文结束,按照这个操作一遍,必须拿捏,稳稳当当。

老板们,点个关注呗~~~


网友评论