详解Oracle 12c九项数据库对象管理操作

简介

1.用户管理
2.用户授权
3.事务管理
4.索引
5.视图以及物化视图
6.序列
7.导入导出数据
8.同义词
9.分区表

实验环境

系统环境:centos7.4
Oracle服务IP地址:192.168.100.99
光盘挂载目录:/mnt/sr0
安装相关目录:/opt

命令步骤

一、用户管理

1、登录Oracle数据库

[oracle@oracle ~]$ lsnrctl start #启动监听

[oracle@oracle ~]$ sqlplus / as sysdba

SQL> startup                   #启动数据库
ORACLE 例程已经启动。

Total System Global Area 1593835520 bytes
Fixed Size          8793256 bytes
Variable Size        1023411032 bytes
Database Buffers      553648128 bytes
Redo Buffers            7983104 bytes
数据库装载完毕。
数据库已经打开。
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT           #默认数据库容器,CDB模式下

2、创建表空间

SQL> create tablespace supermarket                                         #指定表空间名称
  2  datafile '/opt/app/oracle/oradata/supermarket01.dbf'   #指定数据文件路径
  3  size 200M                                                                                   #指定表空间大小           
  4  autoextend on                                                                           #设置表空间自动扩展
  5  next 50M maxsize 20480M                                                     #每次扩展50M,最大扩展20480M 
  6  extent management local;                                                      #表空间的区管理为本地管理,为的是减少分配extent的时候产生的内部递归sql,提高数据库分配空间的效率.

表空间已创建。

3、创建用户

SQL> conn          #使用tom用户进行登录
请输入用户名:  c##tom  
输入口令: 
已连接。
SQL> create user c##tom      #创建用户"Tom"
  2  identified by 123               #设置用户密码"123"
  3  default tablespace supermarket    #指定默认表空间"supermarket"
  4  temporary tablespace temp           #指定默认临时表空间"temp"
  5  quota unlimited on supermarket  #针对"supermarket"表空间不做磁盘配额限制
  6  password expire;                              #设置用户每次登录,强行修改密码,此参数这里不做演示

表空间已创建。

4、更改用户密码

SQL> alter user c##tom identified by 123123;       #将用户"tom"密码更改为"123123"

用户已更改。

5、删除用户

SQL> drop user c##tom cascade;    

二、用户授权

1、授予权限

SQL> conn          #使用系统dba身份用户登录
请输入用户名:  sys  
输入口令: 
已连接。
SQL> grant connect,resource to c##tom;   #connect为连接权限;resource为管理数据库权限

授权成功。
SQL> quit   #退出数据库

2、登录数据库

[oracle@oracle ~]$ sqlplus c##tom/123123 as sysdba #连接数据库


SQL*Plus: Release 12.2.0.1.0 Production on 星期三 10月 10 18:56:43 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

3、撤销权限

revoke connect,resource from c##tom;      #通过sysdba身份登录对用户进行撤销,这里不做演示

三、事务管理

1、创建表结构

SQL> create table product
  2  (
  3  id number(4) constraint pk_id primary key,  
  4  name varchar2(10), 
  5  price number(10,2),
  6  createtime date,
  7  description varchar2(50)  
  8  );

表已创建。

2、添加数据

SQL> insert into product values (1,'Olay',555,to_date('2018-10-10','yyyy-mm-dd'),'good');

已创建 1 行。

3、提交事务

SQL> commit;    #注意,oracle默认是手动提交事务,对数据编辑完之后,必须使用commit进行提交

提交完成。
SQL> rollback;   #注意,事务回滚使用此命令,这里不再做演示

4、查看数据

SQL> select * from product;

    ID NAME                    PRICE CREATETIME
---------- ------------------------------ ---------- ------------
DESCRIPTION
--------------------------------------------------------------------------------
         1 Olay                                  555 10-10月-18
good

5、设置自动提交

SQL> set autocommit on;

6、添加数据

SQL> insert into product values (2,'Kodak',77777,to_date('2018-10-09','yyyy-mm-dd'),'very good');

已创建 1 行。

提交完成。    #此时多出来一个提示,提交完成

四、索引

1、B数索引

SQL> create index index_product on product(price) ;  #通常情况下,使用日期,年龄,分数,价格,具有区间属性的作为B数索引

索引已创建。

2、唯一索引

SQL> create unique index uni_index_product on product(id);

索引已创建。

3、反向索引

SQL> create index rev_index_product on product(createtime) reverse; 

索引已创建。

4、位图索引

SQL> create bitmap index bt_index_product on product(description);

索引已创建。

5、其他索引

SQL> create index up_index_product on product(upper(name));  #大写函数索引

索引已创建。

6、查看索引

……
SQL> select index_name,index_type,table_name,tablespace_name from user_indexes;
INDEX_NAME
--------------------------------------------------------------------------------
INDEX_TYPE
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
--------------------------------------------------------------------------------
WRI$_ADV_DEF_PARAMETERS_PK
NORMAL
WRI$_ADV_DEF_PARAMETERS
SYSAUX

已选择 1647 行。  #目前行数太多,可以自己测试查看

7、重建索引

SQL> alter index up_index_product rebuild;                                     

索引已更改。
SQL> alter index up_index_product rebuild tablespace supermarket;

索引已更改。

8、合并索引碎片

SQL> alter index up_index_product coalesce;

索引已更改。

9、删除索引

SQL> drop index up_index_product;

索引已删除。

五、视图

1、普通视图

1).创建视图

SQL> create view view_product as select * from product;

视图已创建。

2).查看视图

SQL> select * from view_product;

    ID NAME                    PRICE CREATETIME
---------- ------------------------------ ---------- ------------
DESCRIPTION
--------------------------------------------------------------------------------
         1 Olay                                  555 10-10月-18
good

         2 Kodak                               77777 09-10月-18
very good

3).删除视图

SQL> drop view view_product;

视图已删除。

2、物化视图

1).切换dba身份用户

SQL> conn sys/123123 as sysdba
已连接。
SQL> show user;  #查看当前登录用户
USER 为 "SYS"

2).授权

SQL> grant create materialized view to c##tom;     #授予创建物化视图权限

授权成功。
SQL> grant query rewrite to c##tom;                         #授予查询、重写权限

授权成功。
SQL> grant create any table to c##tom;                    #授予创建任何表权限            

授权成功。
SQL> grant select any table to c##tom;                     #授予查询任何表权限  

授权成功。

3).创建物化视图日志

SQL> conn            #连接tom用户
请输入用户名:  c##tom
输入口令: 
已连接。
SQL> create materialized view log on product with rowid;

实体化视图日志已创建。

4).创建物化视图

SQL> create materialized view mtrlview_pro
  2  build immediate           #创建物化视图是否立即生成数据,immediate代表true
  3  refresh fast                    #设置与基表进行同步更新,如果不添加此参数,相当于快照功能
  4  on commit                     #开启提交功能
  5  enable query rewrite   #开启查询、重写功能
  6  as select * from product;

实体化视图已创建

5).删除视图

SQL> drop materialized view mtrlview_pro;

六、序列

1、创建序列

SQL> create sequence toy_seq
  2  start with 3              #指定初始值 
  3  increment by 1        #指定增量
  4  maxvalue 2000       #指定最大值
  5  nocycle                   #指定工作模式为非循环
  6  cache 30;                #指定缓存区30个数值,空闲等待

序列已创建。

2、添加数据

SQL> insert into product values (toy_seq.nextval,'Sony',999999,to_date('2018-10-09','yyyy-mm-dd'),'ok');

已创建 1 行。

提交完成。

3、查看序列

SQL> select toy_seq.currval from dual;

   CURRVAL
----------
     3

SQL> select sequence_name,increment_by,cache_size from user_sequences;                              

SEQUENCE_NAME
--------------------------------------------------------------------------------
INCREMENT_BY CACHE_SIZE
------------ ----------
TOY_SEQ
       1         30

4、更改序列

SQL> alter sequence toy_seq maxvalue 5000 cycle;

5、删除序列

SQL> drop sequence toy_seq;

序列已删除。

七、导入导出测试数据

[oracle@oracle ~]$ sqlplus / as sysdba

1、导入数据

1).创建用户

SQL> create user c##scott identified by scott123
  2  default tablespace users                        #注意此表空间为系统自带的表空间
  3  temporary tablespace temp
  4  quota unlimited on users;

用户已创建。                    #导入数据时,sql语句绑定的是c##scott用户,所以必须创建

2).授予权限

SQL> grant connect,resource,dba to c##scott;        #授予连接、管理数据库权限以及dba权限

授权成功。

3).导入数据文件

SQL> ho ls /home/oracle   #oracle软件可以兼容Linux 使用ho命令跟上liunx命令查看家目录文件
database  flash-player-npapi-26.0.0.131-release.x86_64.rpm  test.sql
SQL> conn c##scott/scott123   #连接"scott"用户
已连接。
SQL> @/home/oracle/test.sql  #导入数据
SQL> select * from tab;              #查看相关表信息

TNAME
--------------------------------------------------------------------------------
TABTYPE            CLUSTERID
--------------------- ----------
BONUS
TABLE

DEPT
TABLE

EMP
TABLE

TNAME
--------------------------------------------------------------------------------
TABTYPE            CLUSTERID
--------------------- ----------
SALGRADE
TABLE

2、导出数据

[oracle@oracle ~]$ exp c##tom/123123 file=/home/oracle/pro.sql #指定用户进行导出数据

八、同义词

1、私有同义词管理

1).创建私有同义词

SQL> show user;   #查看当前用户
USER 为 "C##SCOTT"
SQL> create synonym pr_dept for dept;      #为"product"表设置了一个别名"pr_product"

同义词已创建。

2).调用私有同义词

SQL> select * from pr_dept;   #注意,此时定义的为私有同义词,只是对当前用户有效,切换另一个用户无法识别

    DEPTNO DNAME
---------- ------------------------------------------
LOC
---------------------------------------
    10 ACCOUNTING
NEW YORK

    20 RESEARCH
DALLAS

    30 SALES
CHICAGO

    DEPTNO DNAME
---------- ------------------------------------------
LOC
---------------------------------------
    40 OPERATIONS
BOSTON
#### 3).删除私有同义词
SQL> drop synonym pr_dept;

同义词已删除。

2、公有同义词管理

1).授予用户权限

SQL> conn system/123 as sysdba    #管理员登录 
已连接。
SQL> grant create public synonym to c##scott;

授权成功。

2).创建公有同义词

SQL> conn c##scott/scott123  #连接普通用户
已连接。
SQL> create public synonym public_sy_dept for dept;

同义词已创建。

3).查看公有同义词

SQL> select * from public_sy_dept;   #注意,切换其他用户可以进行访问,创建的为公有同义词

    DEPTNO DNAME
---------- ------------------------------------------
LOC
---------------------------------------
    10 ACCOUNTING
NEW YORK

    20 RESEARCH
DALLAS

    30 SALES
CHICAGO

    DEPTNO DNAME
---------- ------------------------------------------
LOC
---------------------------------------
    40 OPERATIONS
BOSTON

九、分区表

1、建立若干表空间

SQL> show user;  #当前用户为系统管理员
USER 为 "SYS"
SQL> create tablespace tmp01   #注意建立4个表空间,依次为tmp01、tmp02、tmp03、tmp04
  2  datafile '/opt/app/oracle/oradata/tmp01.dbf'
  3  size 100M;

表空间已创建。

2、创建数据表

SQL> create table sales       #创建表
  2  (
  3  sales_id number(4),
  4  product_id varchar2(5),
  5  sales_date date
  6  )
  7  partition by range (sales_date)   #指定时间字段进行分区
  8  (
  9   partition p1 values less than (to_date('2018-04-03','yyyy-mm-dd')) tablespace tmp01,  #p1指定名称;less than小于指定的时间;tablespace指定表空间
 10   partition p2 values less than (to_date('2018-05-03','yyyy-mm-dd')) tablespace tmp02,
 11   partition p3 values less than (to_date('2018-06-03','yyyy-mm-dd')) tablespace tmp03,
 12   partition p4 values less than (maxvalue) tablespace tmp04
 13  );

表已创建。

3、插入测试数据

SQL> insert into sales values (1,'ttt1',to_date('2018-05-23','yyyy-mm-dd'));

已创建 1 行。

4、查询分区

SQL> select * from sales partition(P3);  #按照时间分散存储,已经存储到p3中

  SALES_ID PRODUCT_ID      SALES_DATE
---------- --------------- ------------
         1 ttt1            23-5月 -18

猜你喜欢

转载自blog.51cto.com/11905606/2298983
今日推荐