数据库之Oracle-第1篇-基础

a.服务器配置

1)启动 "OracleOraDb11g_home1TNSListener" 服务
2)启动 "OracleServiceORCL" 服务
3)提供连接参数 
	地址:127.0.0.1
	端口:1521
	服务吗:ORCL
	用户名:system
	密码:admin

b.客户端配置

方案1:
	Oracle自带工具 (推荐->安全)
	Oracle目录/配置和移植工具/Net Manager
方案2:
	修改配置文件
	Oracle安装路径:
	一般为路径为
	盘符:\app\用户名\product\11.2.0\dbhome_1\NETWORK\ADMIN\
	C:\OracleDBApps\product\11.2.0\dbhome_1\NETWORK\ADMIN\
		listener.ora	-> 服务器侦听配置
		tnsnames.ora	-> 网络服务名配置

JDBC连接参数

驱动类:
	oracle.jdbc.OracleDriver
链接地址:
	jdbc:oracle:thin:@主机地址:端口号:服务名
	jdbc:oracle:thin:@localhost:1521:ORCL

Oracle备份

1)技巧

	备份->
		create table tablename_time as select * from tablename
	还原->
		truncate table tablename;
		insert into tablename select * from  tablename_time;
		commit;
	缺点:备份表不存在主外键约束

2)备份

	模式:a.数据库 b.用户 c.对象表
	导出:exp
	导入:imp
	注意:
		Oracle命令子啊DOS环境执行导入和导出的用户可以不同,但不推荐
		在导入之前需要进行初始化(清除对应的数据)
		对象表 -> 要求移除表
		用户 -> 要求级联删除用户 并创建一个同名用户 且授予权限
		原因:备份文件保存的是SQL脚本

Oracle锁

规则

a.在Oracle环境中,当执行DML(INSERT UPDATE DELETE)语句时,所有影响的资源会自动添加隐式锁,
	保证会话独占模式。 
b.在Oracel环境中,操作结束的标示是事务(COMMIT ROLLBACK)
c.在Oracle环境中,DQL语句只在查询过程中加锁,查询完毕后自动解除。其他语句执行完成后自动提交。

分类

a.锁表现形式
	1)隐式锁  -> 参考规则a
	2)显示锁	  -> select * from [表] where {条件} for update wait [时间 单位:秒];
b.锁作用范围
	1)行锁 -> 参考显示锁
	2)表锁 -> lock table [表] in share|exclusive mode;
c.锁共存性
	1)共享锁 share -> 锁可以共存 如果要操作 必须解除所有共享锁
	2)排它锁 exclusive -> 只能允许单个锁
d.锁是否作为
	1)乐观锁 -> 作为(否定)
	2)悲观锁 -> 不作为	
死锁现象(锁的互斥)
	1)A会话 删除id=1的数据 A锁1
	2)B会话 删除id=2的数据 B锁2
	3)A会话 删除id=2的数据 A卡住
	4)B会话 删除id=1的数据 B卡住	
铺垫->业务操作一般通过过程(脚本块)实现
package top.baoit.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Test {
//驱动类
static String drives = "oracle.jdbc.OracleDriver";
//链接地址
static String urls = "jdbc:oracle:thin:@localhost:1521:ORCL";
//账号
static String username = "system";
//密码
static String password = "admin";
protected static Connection connection = null;

//获取连接
public static Connection getConnection() {
	try {
		//反射
		Class.forName(drives);
		// 连接字符串 jdbc:oracle:thin:@server:1521:服务名
		connection = DriverManager.getConnection(urls, username, password);
	} catch (Exception e) {
		e.printStackTrace();
	} 
	return connection;
}	
   //测试
public static void main(String[] agrs) {
	System.out.println(getConnection()); 
}
}
附件:Oracle驱动包(ojdbc14.jar)[${安装目录}$\product\11.2.0\dbhome_1\jdbc\lib]

SQL Plus环境下常用练习

--最高管理员登录
--请输入用户名:
sys as sysdba;
--SQL>
conn sys as sysdba
--查看当前用户
show user;
--解锁用户
alter user username account unlock;
alter user scott account unlock;
--断开连接
disconnect
disconn
--常规用户登录
--请输入用户名:
username/password
system/admin
--SQL>
conn username/password
conn system/admin
--查看当前用户
show user;
--创建表空间
create tablespace tablespace_name  datafile 'path' size [32k~128G] autoextend on/off;
create tablespace test datafile 'c:/test.dbf' size 1m autoextend on;
--创建用户
create user username identified by password default tablespace tablespace_name ;
create user lichee identified by admin default tablespace test;
--授登录和资源权限
grant connect,resource to username;
grant connect,resource to lichee;
--断开连接
disconnect
disconn
--常规用户登录
--请输入用户名:
username/password
lichee/admin
--SQL>
conn username/password
conn lichee/admin
--查看当前用户
show user;
--设置显示长度
set linesize length;
set linesize 100;
--设置显示行数
set pagesize length;
set pagesize 100;
--创建表
create table 表名(
   field1 field1 Type(length) primary key not null,
   field2 field2 Type(length) unique,
   ......
);
--删除表
drop table tb_test;
create table tb_test(
	tid int primary key not null,
	tname varchar(20) unique
);
--查看表结构
desc tablename;
desc tb_test;
--插入数据
insert into tablename values(field1,field1,...)
insert into tb_test values(1,'lichee');
--查询插入的数据
select * from tablename;
select * from tb_test;
--授查询和插入权限权给其他用户
grant select,insert on username1.tb_test to username2;
grant select,insert on lichee.tb_test to scott;
--断开连接
disconnect
disconn
--常规用户登录
--请输入用户名:
username/password
scott/admin
--SQL>
conn username/password
conn scott/admin
--查看当前用户
show user;
--插入数据
insert into tb_test values(2,'scott');
--查询插入的数据
select * from username.tablename;
select * from lichee.tb_test;
---------------------------------------------------------
--授管理员权限
grant dba to username 
grant dba to lichee;

--添加字段
alter table tablename add field3 Type(length);
alter table tb_test add time varchar2(233);
--删除字段
alter table tablename drop  column field3 ;
alter table tb_test drop  column  time;

--添加字段
alter table tablename add field3 Type(length);
alter table tb_test add ttime varchar2(233);

--后期修改约束
alter table tablename add constraint Constraint_name Constraint(field1,field2);
alter table tb_test add constraint pk unique(ttname);

--设置密码不过期[管理员]
alter profile dafault limit failed_login_attempts unlimited;
--加锁用户
alter user 用户名 account lock;

--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
--删除用户
drop user username;
--拓展
--查看当前用户拥有的角色权限信息
select * from role_sys_privs;
--查看当前用户的详细信息
select * from user_users;
--查看当前用户的角色信息
select * from user_role_privs;
--查看用户和默认表空间的关系[管理员]
select username,default_tablespace  form dba_user;
--Oracle查询所有函数和储存过程
select * from user_source
--Oracle查看当前用户权限
select * from session_privs
--查看当前用户的表
select table_name from user_tables;
--查询所有用户的表名
select table_name from all_tables;
--查看所有用户
select * from all_users;
--查看当前用户
select * from user_users;
--查看所有用户系统权限[管理员]
select * from dba_sys_privs;
--查看当前用户系统权限
select * from user_sys_privs;
--查看用户对象权限
select * from all_tab_privs;
--查看所有角色
select * from dba_roles;
--查看用户所拥有的角色
select * from user_role_privs; 
--USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息。
--ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息。
--DBA_*:有关整个数据库中对象的信息。
--设置密码不过期[管理员]
alter profile dafault limit failed_login_attempts unlimited;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值