Oracle数据库操作

一、建立用户/表空间/分配权限/删除表空间

1)注意表空间存放目录

2)/*分为四步 */

/*第1步:创建临时表空间  */

create temporary tablespace yuhang_temp

tempfile 'D:\oracledata\yuhang_temp.dbf'

size 50m 

autoextend on 

next 50m maxsize 20480m 

extent management local; 

 

/*第2步:创建数据表空间  */

create tablespace yuhang_data 

logging 

datafile 'D:\oracledata\yuhang_data.dbf'

size 50m 

autoextend on 

next 50m maxsize 20480m 

extent management local; 

 

/*第3步:创建用户并指定表空间  */

create user yuhang identified by yuhang 

default tablespace yuhang_data 

temporary tablespace yuhang_temp; 

 

/*第4步:给用户授予权限  */

grant connect,resource,dba to yuhang;

对于不使用的表空间要彻底删除

drop tablespace TS_DATA_DB_ZZWK including contents and datafiles;

二:导出oracle的dmp遇到空表的情况

昨天晚上按徐大姐要求给开发导一份测试库,在导测试库的过程中遇到了一个情况是,oracle11g,在使用

export时候不支持导出空表,以下是一个简单的办法:

1、导出前查询一下有多少张空表

SELECT TABLE_NAME FROM USER_TABLES WHERE NUM_ROWS=0,如下18张

2、oracle11g不给空表分片Segment(段,自己百度看下),那么我们就给这些空表分配

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

将执行结果导出为tsv文件,如下:

3、将tsv中的语句复制,在sql窗口中执行,然后再导出dmp文件。如下:

再点击工具栏Tools—Export tables ,打开如下对话框:

三、exp导出dmp

如果oracle的plsql中不能使用export tables命令。那么可以打开cmd窗口,输入:

2) 导出一张表,如:

Exp bzsf/iflytek2015@BZSF  file=D:/T_RYJBXX.dmp  tables=(T_RYJBXX)

3) 导出多张表,如:

exp bzsf/iflytek2015@BZSF  file= D:/T_RYJBXX.dmp  tables=(T_RYJBXX, T_CLJBXX)

   3)导出表中某些值,如:

将数据库中的表t_uaac_organization中的字段code含有"34180"打头的数据导出

 exp gsb_test/passwd!@sgy file=E:\xuancheng.dmp tables=(t_uaac_organization) query=\" where code like '%3418%' \"

4) 导出某一个用户下所有对象,要用超级管理员

exp  workflow_test/123456@192.168.57.180:1521/sgy  file=d:/work.dmp owner=workflow_test

四、导出遇到特殊字符

比如密码中含有@符号。或者/符号

 

五、imp导入dmp

1)可以直接通过plsql工具导入。

2)imp workflow_test/123456@192.168.78.121:1521/zzora  file=d:/work.dmp  full=y  ignore=y

六、查看mysql表的详细信息

登陆mysql服务器,进入mysql数据库,输入:

Mysql>Show table status like 'mytable'

Name: mytable #表名

Engine: InnoDB #存储引擎伟InnoDB

 Version: 10 #mysql版本

Row_format: Compact #行格式。有Dynamic,fixed,Compact等格式。Dynamic是动态行,表字段里面宝航varchar,BloB等不定长字段。fixed是定长行。Compact是行压缩。

 Rows: 0 #表中的行数

Avg_row_length: 0 #平均每行的字节数

Data_length: 16384 #整个表的数据量(字节)

Max_data_length: 0 #表最大的容量。0表示无限

Index_length: 0 #索引数据占用磁盘空间的大小

Data_free: 10485760 #表示已分配但还未被使用的空间大小。Auto_increment: NULL #下一个AUto_increment的值

Create_time: 2011-08-0622:39:46 #创建时间

Update_time: NULL #更新时间

Check_time: NULL #使用check table等命令时的检查时间

Collation: utf8_general_ci #默认字符集和字符列排列顺序

 Checksum: NULL #如果启动,则表示整个表的校验和Create_options: max_rows=4294967295avg_row_length=32 #表创建时的选项 Comment: 1 row inset (0.00 sec)

七、oracle复制表结构和数据

Oracle:

复制表结构及其数据:create table table_name_new as select * from table_name_old

只复制表结构:create table table_name_new as select * from table_name_old where 1=2;

 

八、查看oracle表空间使用查看

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",

  D.TOT_GROOTTE_MB "表空间大小(M)",

  D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",

  TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%'"使用比",

  F.TOTAL_BYTES "空闲空间(M)",

  F.MAX_BYTES "最大块(M)"

  FROM (SELECT TABLESPACE_NAME,

  ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,

  ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES

  FROM SYS.DBA_FREE_SPACE

  GROUP BY TABLESPACE_NAME) F,

  (SELECT DD.TABLESPACE_NAME,

  ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB

  FROM SYS.DBA_DATA_FILES DD

  GROUP BY DD.TABLESPACE_NAME) D

  WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME

  ORDER BY 1;

 

使用情况

Select

total.tablespace_name,

  round(total.MB, 2) as Total_MB,

  round(total.MB - free.MB, 2) as Used_MB,

  round((1 - free.MB / total.MB) * 100, 2) || '%'as Used_Pct

 

from

(select tablespace_name, sum(bytes) / 1024 / 1024 as MB

  from dba_free_space

  group by tablespace_name) free,

  (select tablespace_name, sum(bytes) / 1024 / 1024 as MB

  From dba_data_files

Group by tablespace_name) total

 

Where free.tablespace_name = total.tablespace_name;

 

 

九、登录oracle数据提示异常:表空间问题

 

扩大表空间:

更改system表空间的数据文件SYSTEM.dbf分配空间

alter database datafile ‘/u04/oradata/truth/system.dbf’ resize 2048M

 

十、linux 下启动Oralce

   a、root用户关闭防火墙  service iptables stop

   b、oracle用户开启监听 :

 su - oracle ;

lsnrctl start;

    c、开启数据库:

     sqlplus "/as sysdba" ; 

startup ; 

exit ;

十一、查看oracle字符集、版本、修改字符集

select version from v$instance;

select userenv('language') from dual;--服务端字符集

client字符集修改:在 /home/oracle与 /root用户目录下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句;

修改数据库字符集为UTF-8

1.以DBA登录

2.执行转换语句:

复制代码 代码如下:

SHUTDOWN IMMEDIATE;

STARTUP MOUNT EXCLUSIVE;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE NATIONAL CHARACTER SET UTF8;

SHUTDOWN IMMEDIATE;

STARTUP;

十二、添加表空间大小

先查看表空间当前情况:

select tablespace_name, file_id, file_name,

round(bytes/(1024*1024),0) total_space

from dba_data_files

order by tablespace_name

重设大:1:

alter database datafile  '\oracle\oradata\anita_2008.dbf' resize 4000m

重设大小2:

alter tablespace ESPS_2008 add datafile '\oracle\oradata\anita_2010.dbf' size 1000m

十三、数据库启动 startup报错,

启动的时候提示郑:MEMORY_TARGET not supported on this system

请看:http://www.linuxidc.com/Linux/2012-12/76976.htm 进行学习

vi /etc/fstab 调整内存:

十四、oracle自启动设置

请看

http://jingyan.baidu.com/article/b2c186c8fe4306c46ef6ff16.html

 

十五、导入和导出dmp操作

imp workflow_test/123456@192.168.78.121:1521/zzora file=d:/work.dmp full=y

exp workflow_test/123456@192.168.57.180:1521/sgy file=d:/work.dmp owner=workflow_test

十六、表空间名字错了,修改表空间名字

Alter tablespace XX rename to YY

十七、oracle执行select提示如下

grant select on v_$statname to yztv1_test;

grant select on v_$sesstat to yztv1_test;

grant select on v_$session to yztv1_test;

grant select on v_$mystat to yztv1_test;

 十八、一个用户yztv1_test查询另一个用户workflow_test的表

grant select on workflow_test.wfworkitem to yztv1_test;

grant select on workflow_test.wfwiparticipant to yztv1_test;

十九、数据库回滚日志文件UNDOTBS01.DBF太大了

 以SYS用户登录Oracle 自带的SQL*PLUS的方法:

1-- 创建一个新的小空间的UNDO TABLESPACE

CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF' SIZE 100M REUSE AUTOEXTEND ON;

 2-- 设置新的表空间为系统UNDO_TABLESPACE

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;

3—在配置文件中修改undo_tablespace的设置                                  

D:\oracle\product\10.1.0\db_1\database\initoracle.ora

将其中的undo_tablespace=UNDOTBS1 改为 UNDOTBS2

4—重启数据库                                                               

采用命令SHUTDOWN IMMEDIATE 关闭数据库,然后再采用命令STARTUP 重新开启数据库;

二十、建立表空间遇到的问题,权限不足问题

解决方法 对要创建文件的目录执行 “chown -R oracle:oinstall 目录”,

比如chown -R oracle:oinstall /u01所以这个命令的作用是:

把/u01目录下的所有文件和目录的拥有者改为oracle 。

二十一、oracle数据库日志归档满了

登陆数据库,弹出如下提示框:

办法:登陆oracle数据库服务器

Su - oracle

rman

connect target /;

crosscheck archivelog all;

delete expired archivelog all;

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

二十二、低效率sql语句(时间长)

select *

 from (select v.sql_id,

 v.child_number,

 v.sql_text,

 v.elapsed_time,

 v.cpu_time,

 v.disk_reads,

 rank() over(order by v.elapsed_time desc) elapsed_rank

 from v$sql v) a

 where elapsed_rank <= 10;

二十三、占用CPU高的sql

select *

from (select v.sql_id,

v.child_number,

v.sql_text,

v.elapsed_time,

v.cpu_time,

v.disk_reads,

rank() over(order by v.cpu_time desc) elapsed_rank

from v$sql v) a

where elapsed_rank <= 10;

二十四、锁表查询

--锁表查询(用超级管理)

SQLSELECT object_name, machine, s.sid, s.serial#

FROM gv$locked_object l, dba_objects o, gv$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid;

找到被

ALTER system kill session '23, 1647'锁定的表,解锁:

二十五、导出表和表结构

导出表:export tables是一个dmp文件

导出表结构:export users object是一个sql文件

选择要导出的表名称。

 

对于一个sql文件再导入时候,可以点击File—New—Command Window,

弹出框中,输入@,选择导入的sql文件名称。

 

二十六、从开发那里导出的dmp文件导入测试库提示XX表空间不存在

1)请让开发导出dmp的时候,不要勾选表空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值