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

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

主旨

上文我们介绍了如何搭建,在这里我们讲下如何重启,如何新建用户,如何新建数据库等基本操作吧,为什么要介绍这些呢?因为我发现身边的人吧,可能使用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 sysdbaSQL> startup  # 同样会提示是否启动成功SQL> exit[oracle@localhost ~]$

    验证:

如上图,使用客户端连接成功。

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

数据库关闭

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

关闭实例:

命令:shutdown实例:[oracle@localhost ~]$ sqlplus / as sysdbaSQL> shutdownSQL> 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的关系图。

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

下面说下切换的方式:

[yunweijia@localhost ~]$ sudo su - oracle上一次登录:三 2月 23 13:44:54 CST 2022pts/0 上[oracle@localhost ~]$ sqlplus / as sysdbaSQL> show pdbs    CON_ID CON_NAME                       OPEN MODE  RESTRICTED---------- ------------------------------ ---------- ----------         2 PDB$SEED                       READ ONLY  NO         3 ORCLPDB1                       MOUNTEDSQL>

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

SQL> alter session set container=ORCLPDB1;SQL> startupSQL> show pdbs;    CON_ID CON_NAME                       OPEN MODE  RESTRICTED---------- ------------------------------ ---------- ----------         3 ORCLPDB1                       MOUNTEDSQL> 

从上面看,我们切换完毕之后,再次查询,发现只有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                       MOUNTEDSQL> 

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

数据库和用户

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

行行行,就是这里明确下,一个用户对应一个库,建库自然建用户,但是一个库不一定只能被一个库所管理,完事儿,下面我们直接操作。别问我如何单独新建用户,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/yunweijiamkdir: 已创建目录 "dba"mkdir: 已创建目录 "dba/yunweijia"[oracle@localhost ~]$[oracle@localhost ~]$ sqlplus / as sysdba

2、新建临时表空间:

SQL> create temporary tablespace yunweijiatempfile '/home/oracle/dba/yunweijia/yunweijia.dbf'size 50mautoextend onnext 50m maxsize 1024mextent management local;解释:yunweijia:是临时表空间的名字yunweijia.pdf:是临时表空间存放位置和名字其他的文件大小,你根据实际情况来即可


3、新建表空间:

SQL> CREATE TABLESPACE yunweijia01 DATAFILE  '/home/oracle/dba/yunweijia/yunweijia01.dbf' SIZE 1024M AUTOEXTEND OFFLOGGINGONLINEEXTENT MANAGEMENT LOCAL AUTOALLOCATEBLOCKSIZE 8KSEGMENT SPACE MANAGEMENT AUTOFLASHBACK 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、让新建的用户可以连接:

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

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

SQL> select name,pdb from v$services;NAME----------------------------------------------------------------PDB--------------------------------------------------------------------------------orclpdb1ORCLPDB1SQL> 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客户端,使用我们新建的用户连接,看看是否可以看到我们新建的数据库;

从上面看,我们成功了。

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

删除用户+库

1、删除用户

DROP USER 用户名 CASCADE;

2、删除表空间

DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;

3、删除临时表空间

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

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

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

运维家
早上9点9分,更新有关于linux和python的内容,我希望关注我的老板们每天都能有收获,都能有进步。也欢迎各位老板后台留言改进的内容,或者想看的内容。
33篇原创内容 -->
公众号

本文使用 文章同步助手 同步

你可能感兴趣的:(一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈)