GUI模式
SQL指令
create tablespace "表空间名"
datafile "表空间物理文件存储位置"
size 64-- 数据库文件初始大小为64M
autoextend on -- 是否自动扩容:是
next 2 -- 扩容尺寸为每次增长2M
maxsize 10240 -- 扩容上限为10G
-- 可以同时添加多个数据库文件,并用逗号隔开
CACHE = NORMAL -- 缓存状态
GUI模式
选中表空间右键–>修改
SQL指令
修改表空间物理文件初始大小
alter tablespace "表空间名"
resize datafile "表空间物理文件名" to 128
修改表空间物理文件自动增长方式和最大增长上限
alter tablespace "表空间名"
datafile "表空间物理文件名"
autoextend on
next 2
max 10240
修改表空间添加一个物理文件(在表空间物理文件存储满了之后常用的方法)
alter tablespace "表空间名"
add datafile "表空间物理文件名"
size 128
autoextend on
next 1
maxsize 2048
GUI模式
选中表空间右键–>删除
SQL指令
drop tablespace "表空间名"
GUI模式
选中表空间右键—>联机或脱机
SQL指令
-- 设置表空间脱机
alter tablespace "表空间名" offline;
-- 设置表空间联机
alter tablespace "表空间名" online;
GUI模式
常规设置
角色授权
系统权限设置
对象权限设置
资源限制设置
@具体资源限制调整参数
资源设置项 | 说明 | 最大值 | 最小值 | 缺省值 |
---|---|---|---|---|
SESSION_PER_USER | 在一个实例中,一个用户可以同时拥有的会话数量 | 32768 | 1 | 系统所能提供的最大值 |
CONNET_TIME | 一个会话连接,访问和操作数据库服务器的时间上限(单位:1分钟) | 1440(一天) | 1 | 无限制 |
CONNECT_IDLE_TIME | 会话最大空闲时间(单位:1分钟) | 1440(一天) | 1 | 无限制 |
FAILLED_LOGIN_ATTEMPS | 将引起一个账户被锁定的连续注册失败的次数 | 100 | 1 | 3 |
CPU_PER_SESSION | 一个会话允许使用的CPU时间上限(单位:秒) | 31536000(365天) | 1 | 无限制 |
CPU_PER_CALL | 用户的一个请求能够使用的CPU时间上限(单位:秒) | 86400(1天) | 1 | 无限制 |
READ_PER_SESSION | 会话能够读取的总数据页数上限 | 2147483646 | 1 | 无限制 |
READ_PER_CALL | 每个请求能够读取的数据页数 | 2147483646 | 1 | 无限制 |
MEM_SPACE | 会话占有的私有内存空间上限(单位:MB) | 2147483646 | 1 | 无限制 |
PASSWORD_LIFE_TIME | 一个口令在其终止前可以使用的天数 | 365 | 1 | 无限制 |
PASSWORD_RUSE_TIME | 一个口令在可以重新使用前必须经过的天数 | 365 | 1 | 无限制 |
PASSWORD_REUSE_MAX | 一个口令在可以重复使用前必须改变的次数 | 32768 | 1 | 无限制 |
PASSWORD_LOCK_TIME | 如果超过FAILED_LOGIN_ATTEMPS设置值,一个账户将被锁定的分钟数 | 1440(一天) | 1 | 1 |
PASSWORD_GRACE_TIME | 以天为单位的口令过期宽限时间 | 30 | 1 | 10 |
SQL指令
-- 创建一个用户"Test"
create user "TEST"
identitfied by "123456789" -- 设置密码
limit session_per_user 2, -- 指定单实例的一个用户的最大连接数量
failed_login_attemps 3, -- 指定登录失败最大尝试次数
password_life_time 30, -- 密码有效期
password_reuse_time 5, -- 密码等待期
password_reuse_max 2, -- 密码重用必须要经过的修改次数
password_lock_time 1, -- 登录失败最大尝试次数使用完成后锁定该用户的时间
password_grace_time 10 -- 密码宽限期
default tablespace "表空间" -- 指定用户创建的资源默认存放的表空间
default index tablespace "表空间"; -- 指定默认索引表空间
-- 将VTI角色权限授予新建的用户
grant "VTI" to "TEST";
-- 将创建表的系统权限授予TEST的用户,并且可以进行转授
grant CREATE TABLE to "TEST" with admin option;
-- 将在A模式下的B表上的查询权限授予TEST用户,并且可以转授
grant select on "A"."B" to "TEST" with grant option;
GUI模式
选中用户右键–>修改
SQL指令
alter user "TEST" identified by "123456789"
limit session_per_user 1,
failed_login_atttemps 5,
password_life_time 20,
password_reuse_time 10,
password_reuse_max 5,
default index tablespace "表空间"
GUI模式
选中用户右键–>锁定或解锁
SQL指令
alter user TEST account lock;
alter user TEST account unlock;
GUI模式
选中用户右键–>删除
SQL指令
drop user "TEST";
模式是一种数据库对象,它属于某个用户并且只能属于一个用户,也就是一个用户可以又多个模式,一个模式只能属于一个用户,模式中存放了它所属用户劝降范围内能访问的部分或者全部数据库对象
创建用户的时候会自动创建一个和用户名同名的模式,如果新建模式需要将改模式关联到某个特定的用户
选中模式右键–>修改
GUI模式
选中模式右键–>删除
字符模式
drop schema "模式名" restrict;
权限分类
系统权限
对象权限
角色权限
查看用户或角色具备的权限
查询用户或角色具备的对象权限
select * from dba_tab_privs where grantee="用户名或角色名"
查询用户或角色具备的系统权限
select * from dba_sys_privs where grantee="用户名或角色名"
查询用户或角色具备的角色权限
select * from dba_role_privs where grantee="用户名或角色名"
授权和撤销权限
新用户默认具备VTI和PUBLIC角色权限
授予和撤销系统权限
grant "系统权限" to "用户"
revoke "系统权限" from "用户"
授予和撤销对象权限
grant "权限" on SCHEMA.OBJECT to "用户"
revoke "权限" on SCHEMA.OBJECT from "用户"
授予和撤销角色权限
创建角色以及授权给角色&将角色权限授权给用户
create role "角色名";
grant "权限" to "角色";
grant "角色" to "用户"
删除角色
drop role "角色名"
@系统自带的角色讲解
常用数据类型
创建表
修改表
修改表插入新的列
alter table "模式"."表"
add column("列名" "列数据类型" "是否为空");
修改表删除列
alter table "模式"."表"
drop column "列名";
修改表中列的数据类型
alter table "模式"."表"
modify "列名" "数据类型";
删除表
drop table "模式"."表" restrict;
约束是为了确保数据完整性而设定的一系列的规划;完整性又包含了准确性和有效性
约束类型
非空约束
主键约束
外键约束
唯一键约束
Check约束
创建约束
alter table "模式"."表" add primary key("主键列名");
alter table "模式"."表" add constraint "约束名" primary key("主键列名");
alter table "模式"."表" add constraint "约束名" foreign key("外键列名") references "主表名"("主键列名");
alter table "模式"."表" add constraint "约束名" unique("唯一键列名");
alter table "模式"."表" add constraint "约束名" check("检查约束的表达式");
删除约束
alter table "模式"."表" drop constraint "约束名";
视图基本概念
视图的核心功能和使用场景
视图创建和使用
create view "模式"."视图"
查询语句
select * from "模式"."视图"
索引是为了提高查询性能而创建的一种数据库对象
使用场景
不适合使用索引的情况
创建索引,删除索引
create index "索引" on "模式"."表"
storage(
initial 1, -- 初始分配簇数
next 1, -- 下次分配簇数
minextents 1 -- 最小保留簇数
);
使用索引:使用索引前,重新搜索数据库统计信息
begin
dbms_stats.gather_table_stats('SCHEMA','TABLE');
end
百万级别测试数据对比有无索引的时候查询的时间消耗
-- 创建一个学生表
create table I_student (
stu_no bigint not null primary key,
stu_name varchar2(50) not null
);
declare
num int := 1000;
firstChar text :='...';
secondChar text := '...';
-- 声明两个变量用于表示随机数
rand1 int := 0;
rand2 int := 0;
rand3 int := 0;
begin
while num<=1001000 loop
-- 生成第一个随机数
rand1 := floor(rand() * (566 - 1 + 1) + 1);
rand2 := floor(rand() * (6679 - 1 + 1) + 1);
rand3 := floor(rand() * (10 - 1 + 1) + 1);
insert into I_STUDENT
values(num,concat(
substring(firstChar,rand1,1),
substring(secondChar,rand2,rand3)
)
);
num := num + 1;
end loop;
end;
commit;
select * from I_STUDENT where STU_NAME like '欧%';
-- 没有创建索引的情况下使用时间:178ms
-- 创建索引之后使用时间:2ms
DMSQL分类
基础CRUD操作
插入数据
-- 插入单条数据
insert into "模式"."表"("列名1","列名2"...) values("值1","值2"...);
-- 插入多条数据
insert into "模式"."表"("列名1","列名2"...) values("值1","值2"...),("值1","值2"...);
-- 插入多条数据(需要先创建新表tab)
insert into "模式"."表" select "列名" from "模式"."表";
-- 创建新表并从其他数据表中查询数据插入到新表中
create table "模式"."表" as select "列名" from "模式"."表";
删除数据
delete feom "模式"."表" [where 条件]
修改数据
update "模式"."表" set 列1=值1,....[where 条件]
查询数据
select "列名",... from "模式"."表" [where 条件]
select 列1,...,列n from "模式"."表" [where 条件] [group by 分组列1,...,分组列n] [having 筛选分组条件] [order by 排序列1,...,排序列n]
条件查询常用表达式
%
& _
查询分组,多列分组,聚合函数
筛选分组
having 筛选分组条件
查询排序
order by 分组列名列表
分页查询
top分页
select top 每页显示条数 列名列表 from 表 where id not in(
select top 偏移量条数 id from 表
)
limit分页
select 列名列表 from 表() limit 偏移量,每页显示条数
伪列分页
rowid
select rowid,列名列表 from 表 where rowid between 起始编号 and 结束编号
rownum
select t 列名列表 from(
select rownum num,列名列表 from 表名 where rownum < maxValue
) t where num > minValue
笛卡尔集查询
select 列名列表 from 表1,表2;
内联接查询
select 列名列表 from 表1,表2 where 两表关联列条件表达式;
select 列名列表 from 表1 inner join on 两表关联列条件表达式;
外联接查询
左外联接查询
select 列名列表 from 表1 left outer join 表2 on 两表关联列条件表达式;
右外联接查询
select 列名列表 from 表1 right outer join 表2 on 两表关联列条件表达式;
全联接查询
select 列名列表 from 表1 full join 表2 on 两表关联列条件表达式;
where子句子查询:将一个查询的结果作为另一个查询(更新)操作的条件
select 列名列表 from 表名 where 条件列 = |in|not in(
子查询
) [条件];
from子句子查询:将一个查询的结果看作一张虚拟表提供给其他查询使用
select 列名列表 from(
子查询
) 临时表名 [条件];
select子句子查询:将一个查询的结果和其他查询的结果进行组合
select 列名列表,(
子查询
) from 表名[条件]
关闭数据库实例服务
service DmServiceDMSERVER stop
备份数据库
> backup database "实例文件"
还原数据库
> restore database "实例文件" from backupset "备份文件"
恢复数据库
> recover database "实例文件" from backupset "备份文件"
更新模式
> recover database "实例文件" update db_magic
开启数据库实例服务
service DmServiceDMSERVER start
@注意事项
GUI设置归档
SQL命令配置归档
-- 设置实例为配置状态
alter database mount;
-- 配置本地归档文件
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=0';
-- 添加归档
alter database archivelog;
-- 设置实例为开启状态
alter database open;
-- 查看实例归档状态
select * from v$database;
./dexp逻辑导出和./dimp逻辑导入
-- 库级别导出
dexp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="导出日志名_exp.log" DIRECTORY="导出文件路径" FULL = Y
-- 库级别导入
dimp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="日志名_imp,log" DIRECTORY="导入文件路径" FULL = Y
-- 用户级别导出
dexp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="导出日志名_exp.log" DIRECTORY="导出文件路径" OWNER="用户名"
-- 用户级别导入
dimp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="日志名_imp,log" DIRECTORY="导入文件路径" OWNER="用户名"
-- 模式级别导出
dexp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="导出日志名_exp.log" DIRECTORY="导出文件路径" SCHEMAS = "模式名"
-- 模式级别导入
dimp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="日志名_imp,log" DIRECTORY="导入文件路径" SCHEMAS = "模式名"
-- 表级别导出
dexp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="导出日志名_exp.log" DIRECTORY="导出文件路径" TABLE="模式"."表名"
-- 表级别导入
dimp USERID=SYSDBA/[email protected] FILE=db_库名.dmp LOG="日志名_imp,log" DIRECTORY="导出入文件路径" TABLE="模式"."表名"
创建两个作业分别是job1和job2,job1负责每周日,周三晚上23:00做全库备份,job2负责每周一、二、四、五、六晚上0:00做增量备份
安装gcc
yum install gcc
安装odbc
下载unixODBC-2.30.tar.gz,并将压缩包上传到服务器并解压
tar -zxvf unixODBC-2.3.0.tar.gz
进入解压目录并配置
./configue --enable-gui=no
编译并安装
make
make install
检查安装情况
odbcinst -j
配置odbc配置文件
vim /user/local/etc/odbc.ini
vim /user/local/etc/odbcinst.ini
[]
Driver = mydriver
SERVER = 192.168.1.99
UID = SYSDBA
PWD=123456
TCP_PORT=5236
[]
Driver = /dm8/bin/libdodbc.so
测试连接