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

主旨
环境
linux环境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的关系图。

[yunweijia@localhost ~]$ sudo su - oracle上一次登录:三 2月 23 13:44:54 CST 2022pts/0 上[oracle@localhost ~]$ sqlplus as sysdbaSQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 ORCLPDB1 MOUNTEDSQL>
SQL> alter session set container=ORCLPDB1;SQL> startupSQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------3 ORCLPDB1 MOUNTEDSQL>
SQL> alter session set container=CDB$ROOT;??????SQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 ORCLPDB1 MOUNTEDSQL>
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 yunweijiaIDENTIFIED BY yunweijia123456DEFAULT TABLESPACE yunweijia01TEMPORARY TABLESPACE yunweijiaPROFILE DEFAULTACCOUNT UNLOCK;解释:CREATE USER yunweijia # 新建用户名是 yunweijiaIDENTIFIED BY yunweijia123456 # 密码是yunweijia123456DEFAULT TABLESPACE yunweijia01 # 表空间hiyunweijia01TEMPORARY 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客户端,使用我们新建的用户连接,看看是否可以看到我们新建的数据库;



从上面看,我们成功了。
完事了吗?俗话说的好,你会创建,你就要会删除,继续往下看吧。
删除用户+库
DROP USER 用户名 CASCADE;
DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;
drop tablespace 临时表空间名 including contents and datafiles cascade constraints;
搞定,本文结束,按照这个操作一遍,必须拿捏,稳稳当当。
老板们,点个关注呗~~~




