声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。
主旨
上文我们介绍了如何搭建,在这里我们讲下如何重启,如何新建用户,如何新建数据库等基本操作吧,为什么要介绍这些呢?因为我发现身边的人吧,可能使用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 sysdba2、新建临时表空间:
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 # 临时空间是yunweijia5、用户授权:
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;搞定,本文结束,按照这个操作一遍,必须拿捏,稳稳当当。
老板们,点个关注呗~~~