1.创建用户
CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE tablespaceName;
2.赋权
grant dba to username;--给予dba权限
GRANT CONNECT, RESOURCE, CREATE VIEW TO username IDENTIFIED BY password;--给予部分权限
3.导出
exp username/password@dbname file=*.dmp log=logPath.log
如果执行这个命令时,报错oracle 12514错误,可以用下边的命令试试
exp username/password@ip:端口/dbname file=*.dmp log=logPath.log
oracle 11g 空表也要导出来的解决方案
http://blog.51cto.com/wanwentao/545154
4.导入(指定表空间)
imp username/password@dbname file=*.dmp tablespaces=tablespaceName fromuser=expusername touser=impusername log=logPath.log
在执行imp命令时,时常会遇到 带有clob blob字段的表导入失败,提示表空间不存在。最快捷的解决方案是,导入前先把这些存在大字段的表创建了,然后再导入,导入语句要加 ignore=y
5.oracle 11g完美导出到oracle10g_百度经验
http://jingyan.baidu.com/article/29697b9137d421ab21de3c47.html
6.删除用户
drop user mpmtj cascade;
强制断开用户连接方法:
select sid,serial# from v$session where username='用户名';
alter system kill session 'sid,serial';
7.修改字符集(转载 http://jingyan.baidu.com/article/c1465413af2fb20bfcfc4c3e.html)
oracle数据库的字符集更改
A、oracle server 端 字符集查询
select userenv('language') from dual
其中NLS_CHARACTERSET 为server端字符集
NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集
$echo $NLS_LANG
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
C、server端字符集修改
*****************************************************************
* 更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK) *
*****************************************************************
SQL>
将数据库启动到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> alter database open;
Database altered.
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL> select * from v$nls_parameters;
略
19 rows selected.
重启检查是否更改完成:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select * from v$nls_parameters;
略
19 rows selected.
正确设置ORACLE客户端字符集的方法:
oracle客户端字符集设置需要和服务器端一致,否则会出现乱码问题。
首先连接服务器,查询服务器端设置:
select * from v$nls_parameters;
找到:
NLS_LANGUAGE
NLS_TERRITORY
NLS_CHARACTERSET
环境变量nls_lang便是由这三部分组成
NLS_LANG = language_territory.charset
比如:AMERICAN_AMERICA.ZHS16GBK
8.删除用户所有的表
select 'drop table '||table_name||' ;' from all_tables where owner='user_name';--owner字段是大写
9.占用cpu大的语句
select * from (select sql_text,sql_id,cpu_time from v$sql order by cpu_time desc) where rownum<=10 order by rownum asc;
select * from (select sql_text,sql_id,cpu_time from v$sqlarea order by cpu_time desc) where rownum<=10 order by rownum asc;
10.查询某段时间某个用户执行时间长的sql
select executions, cpu_time/1e6 as cpu_sec, elapsed_time/1e6 as elapsed_sec, round(elapsed_time/sqrt(executions)) as important, v.*
from v$sql v
where executions > 10 and last_active_time>to_date('2016-11-22 18:00','yyyy-mm-dd hh24:mi') and last_active_time<to_date('2016-11-22 20:00','yyyy-mm-dd hh24:mi') and parsing_schema_name='MBP1'
order by important desc;
11.查看用户信息
select * from dba_users;
12.创建表空间
CREATE TABLESPACE MAINHR
DATAFILE 'C:\Users\chen\oracle_tablespace\MAINHR_FILE01.ora' SIZE 100M REUSE,'C:\Users\chen\oracle_tablespace\MAINHR_FILE02.ora' SIZE 100M REUSE
DEFAULT STORAGE(INITIAL 500K NEXT 500K PCTINCREASE 20);