声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。
主旨
上文我们介绍了如何搭建,在这里我们讲下如何重启,如何新建用户,如何新建数据库等基本操作吧,为什么要介绍这些呢?因为我发现身边的人吧,可能使用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 ~]$
验证:
如上图,使用客户端连接成功。
什么?如何使用客户端连接?那请看前一篇文章咯。
数据库关闭
同理,不解释理论,记住顺序,先关闭实例,再关闭监听。
关闭实例:
命令: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的关系图。
什么玩意?上面的你没看懂,那你只需要记住,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?你又要说什么?你上面说模式,我忍了,看你这个破标题,难不成又要说理论?我不要理论,你直接给我上操作。
行行行,就是这里明确下,一个用户对应一个库,建库自然建用户,但是一个库不一定只能被一个库所管理,完事儿,下面我们直接操作。别问我如何单独新建用户,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、让新建的用户可以连接:
什么玩意儿?不是都授权了嘛?怎么还连不了咋地?你是不是在和我开玩笑呢?
别急,不过确实是这样,确实新建完用户之后连不上,原因下面会写,我们还需要进行下面的一步操作:
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客户端,使用我们新建的用户连接,看看是否可以看到我们新建的数据库;
从上面看,我们成功了。
完事了吗?俗话说的好,你会创建,你就要会删除,继续往下看吧。
删除用户+库
1、删除用户
DROP USER 用户名 CASCADE;
2、删除表空间
DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;
3、删除临时表空间
drop tablespace 临时表空间名 including contents and datafiles cascade constraints;
搞定,本文结束,按照这个操作一遍,必须拿捏,稳稳当当。
老板们,点个关注呗~~~
本文使用 文章同步助手 同步