Oracle 常用语句

连接Oracle

  1. 连接本地oracle
   sqlplus / as sysdba

      2.连接远程oracle

   sqlplus fia_aims_jj_hxjj/fia_aims_jj_hxjj@//172.16.2.17:1521/orcl

 

DBA授权

很多时候我们用拥有DBA权限的用户 从oracle数据库导出数据,那么再导入新的数据库时就还得需要DBA权限的用户,下面是如何创建一个新用户并授予DBA权限命令。

1.用有dba权限的用户登录:sys用户

   sqlplus / as sysdba

2、创建表空间:

create tablespace oracle_test datafile ‘G:\Oracle11g_64bit\data\oracle_test.dbf’ size 500M autoextend on next 50m maxsize unlimited;

3.创建一个新用户:

create user user_one identified by 1234 default tablespace oracle_test;
注:Oracle 12C创建用户的时候要以c##开头。

4.授予DBA权限: 

grant connect,resource,dba to user_one ;

ok,创建好了,就可以用user_one 这个用户登录了,user_one 用户拥有dba权限。

select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; 查看你能管理的所有用户!
select * from user_users; 查看当前用户信息 !

5.删除用户 

drop user username cascade;

6.通过当前日期创建用户:

declare 
v_date varchar2(8);--定义日期变量
v_sql varchar2(2000);--定义动态sql
v_tablename varchar2(20);--定义动态表名
begin
 select to_char(sysdate,'yyyymmdd') into v_date from dual;--取日期变量
 v_tablename := 'T_'||v_date;--为动态表命名
 v_sql := 'create user '||v_tablename||'  identified by 123456';--为动态sql赋值
 dbms_output.put_line(v_sql);--打印sql语句
 execute immediate v_sql;--执行动态sql
end;

运行结果:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如何修改Oracle用户名?

1、用sysdba账号登入数据库,然后查询到要更改的用户信息:

   

SELECT user#,name FROM user$;

2、更改用户名并提交:

   UPDATE USER$ SET NAME='PORTAL' WHERE user#=88;
     COMMIT;

3、强制刷新:

     

ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;

4、更新用户的密码:

ALTER USER PORTAL IDENTIFIED BY 123;

导入与导出

1、导入语句

imp username/password@ip/sid file="imp文件路径" log="输出log路径(可以没有)" full=y ignore=y

2、导出语句

数据导出:
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 将数据库中的表table1 、table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

Oracle 导出空表

11g默认创建一个表时不分配segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。

解决方法:

1、解决方法

查找空表语句:

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

运行查询结果,通过Plsql在进行导出。


更新语句

更新表中的所有属性,前面加1

update DICT_DEPT set DDTNAME = '1'  || DDTNAME

更新表中所有属性,把1替换为空的字符串
 

update DICT_DEPT t set DDTNAME = replace(DDTNAME,'1','')

Oracle序列创建和使用
创建序列
语法 CREATE SEQUENCE 序列名 [相关参数]
参数说明
INCREMENT BY :序列变化的步进,负值表示递减。(默认1)
START WITH:序列的初始值 。(默认1)
MAXvalue:序列可生成的最大值。(默认不限制最大值,NOMAXVALUE)
MINVALUE:序列可生成的最小值。(默认不限制最小值,NOMINVALUE)
CYCLE:用于定义当序列产生的值达到限制值后是否循环(NOCYCLE:不循环,CYCLE:循环)。
CACHE:表示缓存序列的个数,数据库异常终止可能会导致序列中断不连续的情况,默认值为20,如果不使用缓存可设置NOCACHE

CREATE SEQUENCE SEQ_DEMO INCREMENT BY 1 START WITH 1 NOMAXvalue NOCYCLE NOCACHE;


修改、删除序列
使用 alter 命令进行修改
使用 drop 命令删除
序列的使用
currval 表示序列的当前值,新序列必须使用一次nextval 才能获取到值,否则会报错
nextval 表示序列的下一个值。新序列首次使用时获取的是该序列的初始值,从第二次使用时开始按照设置的步进递增
查询序列的值:

select seq_name.[currval,nextval] from dual;


查看所有已创建的序列:

select * from user_sequences

SQL语句中使用:

insert into table (id) values (seq_name.nextval)

文档会持更新........

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值