oracle的建表空间,imp导入导出,以及一些简单自我总结

1.创建表空间:

create tablespace zhongway
logging  
datafile 'd:\oracle\product\10.2.0\client_2\orcl\zhongway.dbf'
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;

说明:zhongway是表空间名字,datefile是你自己硬盘的有效地址。 maxsize 20480m 一般我建的时候是去掉的,不要这一句,就是表空间没哟最大限制,有限制用久了老是表空间不足要扩表空间懒得麻烦。其他的应该都看的懂意思。


先用sys身份登录:
    用户名:sys
    口令:你自己安装oracle设置的密码
    数据库:orcl
    连接为:SYSDBA

2.创建用户:

--新建用户角色:
create user wxpt identified by zhongway default tablespace zhongway;  
--分配权限:
grant connect,resource,dba to wxpt;

说明:wxpt是用户,密码是zhongway,表空间是zhongway,分配resource和dba 权限给用户wxpt,一般分resource最大权限就够了。

3.一般现在就是导入了,前提是你已经有导好的dmp文件,一般是从其他数据库导出的,或者在客户那边导的最新的数据库,下来看怎么从数据库导出dmp文件。

直接在电脑开始点运行,输入cmd命令输入导出语句:

格式:exp wxpt/zhongway@200.200.200.91/orcl file=d:\wxpt20170616.dmp buffer=8000

说明:exp 导出 wxpt是用户名,zhongway是密码,  200.200.200.91是自己的ip地址如果是自己电脑上的数据库可以不写IP直接@orcl ,file后面的是你导出的dmp文件的保存在硬盘的哪里和导出文件的名字,buffer=8000是缓冲区。

把语句复制在cmd里面等执行完,看见说明,导出成功的提示说明导出好了。

4.现在有了dmp文件上面2步骤也已经创建好用户了,现在我们把3导出的dmp文件导入2步骤创建的用户。

一样cmd命令:输入如下语句:

格式:imp wxpt/zhongway@200.200.200.62/orcl file=d:\wxpt20170930.dmp full=y

说明:和导出语句差不多导出语句你理解了导入一样很好理解,说个习惯一般dmp文件名字是user名字+当天时间+dmp,因为你可能会有很多备份或者导出针对同一个用户。

好了我们把IP为200.200.200.91上的用户导入到了200.200.200.62的数据库上。

注意:如果oracle高版本兼容低版本,低版本不兼容高版本,就是oracle11g的数据库导出的数据,导入不到oracle10g里面,反之可以。

5.下面是一些日常简单语句有时候很有用。

解锁语句:

用sys登录:alter user scott account unlock  

说明:scott 是你数据库锁住的用户。

修改用户密码:alteruser wxpt(用户)identified byzhongway(密码)

查看该用户所权限: select *from session_privs;

查看该用户拥有的角色: select* from user_role_privs;

查看该角色有哪些权限:select* from dba_sys_privs t where t.grantee='RESOURCE';

查询该用户下有多少视图: select* from user_views;

创建一个自增的序列:createsequence sequence_id

                        startwith1

                        incrementby1

                        maxvalue999999999999

                        nocache

                        nocycle;

 说明:从1开始每次自增1 最大999999999999值不能循环

创建索引:createindex id_test_indexontest_index(id);

查询表空间是否自动扩展,和最大值

selectt.autoextensible数据文件是否自动扩展,t.maxbytes 数据文件最大  fromdba_data_files t wheretablespace_name='zhongway';

6.删除重复数据的办法,推荐第一种,想当年自己写的很长的一个。。。。。

nh_sfz相同的分到一组但是物理rowid删除不是最大的就去除重复了

delete from tbl_bt where rowid not in (select max(rowidfrom tbl_bt t groupby nh_sfz );

分组后having count()查找

select* from tbl_bt wherenh_sfzin ( selectnh_sfz  fromtbl_bt groupbynh_sfzhavingcount(nh_sfz)>1);

还是利用物理地址rowid查询

select* from tbl_btwherenh_sfz in  (selectnh_sfzfrom tbl_bt whererowidnotin (selectmax(rowid)from  tbl_bt groupby nh_sfz )  );

7.用闪存恢复删除的数据或者表

--如何快速恢复刚删除的表和数据flashback闪回
--事务闪回:才更新了insert 和update 和delete语句的时候需要恢复commit操作之前的数据,则需要撤销刚才的操作。
--行级闪回:对表进行了insert和update和delete语句,需要恢复到一个时间点。
--表级闪回:错误的drop,table操作,需要表和表中的数据。
--数据库级闪回:错误的将整个数据库很多数据,需要将整个数据库恢复到过去时间点。
--是否有闪回权限
select * from session_privs where privilege like 'FLASHBACK%';
--如果没有查到数据就是没有权限登陆sys 分配权限
grant flashback any table to  'yxgwcs';

--查询时间点的数据
select sysdate from dual;--当前时间
select * from tblweb_pwd as of timestamp to_timestamp('2017/3/17 10:27:42','yyyy-mm-dd hh24:mi:ss')  where xm='赵树仁';
 --开启行移动功能  全部整表插入 开始
 alter table tblweb_pwd enable row movement;

 --恢复表数据
 flashback table tblweb_pwd to timestamp to_timestamp('20170317100000','yyyy-mm-dd hh24:mi:ss');

 --关闭行移动功能 ( 千万别忘记 )
 alter table tblweb_pwd disable row movement;
 --全部整表插入 结尾

 --插入单条数据数据
insert into tblweb_pwd  select * from tblweb_pwd as of timestamp to_timestamp('20170317100000','yyyy-mm-dd hh24:mi:ss')  where xm='赵树仁';

--这个是11g才能用
select  t.start_timestamp,t.commit_timestamp,t.logon_user,t.operation,
             t.table_name,t.table_owner,t.undo_sql
 from flashback_transaction_query  t where table_name='tblweb_pwd';
 --查询到值再插进去
 
 --恢复删除的表
 --1先查看删除的表在能恢复的列表没
 select * from user_recyclebin  order by droptime  desc;
 --恢复到删除之前
 flashback table TBL_BOTTOM_COPY to before drop;

8.sum()函数的一个奇异现象

select sum(1) from dual where 1=2;


说明:因为sum()函数一定有返回值,这样会返回一个空行记录,我现在不想要这个记录,这样写

select sum(1) from dual where 1=2 group by 1000;


说明:加group by语句。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值