暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

运维家 2022-02-24
919

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


主旨

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

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


环境

    linux环境
    oracle环境


    注意

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


    数据库启动

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

    启动监听:
      命令:lsnrctl start


      实例:
      [yunweijia@localhost ~]$ sudo su - oracle
      上一次登录:三 223 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
              上一次登录:三 223 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
                    上一次登录:三 223 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;


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

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


                                    文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                    评论