简介
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