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

简介

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

实验环境

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

命令步骤

一、用户管理

1、登录Oracle数据库

[[email protected] ~]$ lsnrctl start #启动监听

[[email protected] ~]$ 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、登录数据库

[[email protected] ~]$ 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;

序列已删除。

七、导入导出测试数据

[[email protected] ~]$ 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、导出数据

[[email protected] ~]$ 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

原文地址:http://blog.51cto.com/11905606/2298983

时间: 2024-10-09 23:38:17

详解Oracle 12c九项数据库对象管理操作的相关文章

详解Oracle 12c数据库管理

简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.它是一种高效率.可靠性好的适应高吞吐量的数据库解决方案. 验环境 系统环境:centos7.4Oracle服务IP地址:192.168.1.99光盘挂载目录:/mnt/sr0安装相关目录:/opt 注意

Java Web(五) JSP详解(四大作用域九大内置对象等)

前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编写一些HTML代码,是很不方便的一件事情,每次都需要out.println(HTML); 因此就出现了JSP,来解决这样的问题,JSP中的内容就是html,但是能够嵌套java语言,现在来详细了解一下JSP. --WH 一.JSP 1.什么是JSP? JSP(Java Server Pages):是

详解oracle 12c通过数据泵expdp/impdp工具实现对数据备份、恢复

简介 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用1.实现逻辑备份和逻辑恢复2.数据库用户之间移动对象3.数据库之间移动对象4.实现表空间搬移 实验环境 系统环境:centos7.4Oracle服务IP地址:192.168.100.99光盘挂载目录:/mnt/sr0安装相关目录:/opt 命令步骤 一.创建测试用户并授权 1.创建数据备份目录 [[email protected] ~]# mkdir /opt/

详解Oracle存储结构 掌握基本操作管理

2018.10.14那天我写了Oracle12C 的安装并初步了解了一下Oracle体系结构中数据库和实例.从中我们知道: 数据库是磁盘上数据的集合,位于收集和维护相关信息的数据库服务器上的一个或多个文件中.数据库由各种物理和逻辑结构组成,而表则是数据库中最重要的逻辑结构.表由包含数据的相关行和列组成. 组成数据库的文件主要分为两类:数据库文件和非数据库文件.两者之间的区别在于存储何种数据.数据库文件包含数据和元数据,非数据库文件则包含初始参数和日志记录信息等.数据库文件对于每时每刻正在进行的数

深入详解Oracle data change notification

深入详解 Oracle  data change notification 1.什么是 Oracle  data change notification  ? 当有多个应用程序或者进程操作同一个数据库时,其中进程1对Oracle中的某个表Table1进行插入.删除.修改等操作,进程2想在第一个进程操作完成后进行相应的操作.有没有什么方法让进程2获取到进程1的操作? 类似进程.多线程的同步机制,或者消息响应机制.在Oracle中也有类似的实现,该机制名称即为:data change notific

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第2/5套:Oracle SQL语言DDL和对象管理.主要学习Oracle数据库模式对象和表中可用的数据类型,表/临时表的创建与使用,索引/约束的创建与管理,视图/同义词/序列的创建和使用,触发器/存储过程/包的创建和使用. Oracle SQL语言DDL和对象管理,课程内容详细如下

Oracle学习(九):创建和管理表

1.知识点:可以对照下面的录屏进行阅读 SQL> --创建表 SQL> create table test1 2 (tid number, 3 tname varchar2(20), 4 hidatedate date default sysdate); SQL> --使用as和子查询快速建表 SQL> --创建表:包含员工号 姓名 月薪 年薪 部门名称 SQL> create table empincome 2 as 3 select empno,ename,sal,sal

Oracle(一)--&gt; 数据库对象详解(文字解释,先有个小理解~)

----数据库对象:逻辑结构的集合 ---- 一.同义词:现有对象的别名 /* 作用:  简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 分类:*/ --公有同义词:可以被所有的数据库用户访问,本地对象和公有对象同名时,本地对象优先 create public synonym syn1 for scott.emp; select * from syn1; --私有同义词:只能被当前模式访问,且不能与当前模式下的对象同名 create synonym emp1 for scott.e

详解ORACLE数据库的分区表

此文从以下几个方面来整理关于分区表的概念及操作:    1.表空间及分区表的概念    2.表分区的具体作用    3.表分区的优缺点    4.表分区的几种类型及操作方法    5.对表分区的维护性操作.    (1.) 表空间及分区表的概念    表空间:    是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.    分区表:    当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行