oracle常用命令及常见错误

--导出数据库

exp test2/test2@trp84 file=e:\test2.dmp owner=test2

--导入数据库

imp test2/test2@orcl file='e:\test.dmp' fromuser=test touser=test2

--查看oracle当前的连接数

select * from v$session where username is not null

--查看不同用户的连接数

select username,count(username) from v$session where username is not null group by username

--连接数

select count(*) from v$session

--并发连接数

Select count(*) from v$session where status='ACTIVE'

--查看当前有哪些用户正在使用数据 

SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine 

from v$session a, v$sqlarea b where a.sql_address =b.address order by cpu_time/executions desc;

--oracle 服务

OracleDBConsoleorcl --可以不启动,用于管理Oracle的企业管理器的服务; 

OracleJobSchedulerORCL --通常不启动,用于定期操作任务的服务; 

OracleOraDb10g_home1iSQL*Plus --可以不启动,这是isqlplus服务,用于用网页执行sql执行,11g已经取消了这个功能; 

OracleOraDb10g_home1TNSListener --必须启动,这是监听,用于远程客户端连接你的Oracle; 

OracleServiceORCL --必须启动,这是Oracle数据库的服务。 

可以用命令启动: 

#启动listener:lsnrctl start 

#启动数据库:net start OracleServiceORCL 

--创建用户

CREATE USER sa IDENTIFIED BY trp;

--授予DBA权限

GRANT DBA to sa;

--授予创建连接权限,否则用户不能正常登陆

GRANT CREATE SESSION TO sa

--修改密码

ALTER USER sa IDENTIFIED BY newpwd;

--删除用户

DROP USER sa

--查看所有用户

select * from all_users; 

--查看所有dba用户

select * from dba_users;

--创建临时表空间 

create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf' size 32m autoextend onnext 32m maxsize 2048m extent management local; 

--创建数据表空间 

create tablespace test_data logging datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; 

--创建用户并指定表空间 

create user testserver_user identified by testserver_user default tablespace test_data temporary tablespace test_temp; 

数据导出: 

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 将数据库中的表inner_notify、notify_staff_relat导出 

    exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 

   exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 

数据的导入 

1 将D:daochu.dmp 中的数据导入 TEST数据库中。 

   imp system/manager@TEST file=d:daochu.dmp 

   imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y 

   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 

   在后面加上 ignore=y 就可以了。 

2 将d:daochu.dmp中的表table1 导入 

   imp system/manager@TEST file=d:daochu.dmp tables=(table1) 

常见错误

1.ORA-00257: 归档程序错误。在释放之前仅限于内部连接【由于不断归档导致磁盘空间,可调整归档空间大小,或删除部分以前的归档】

解决方法1:先手工删除D:\oracle\product\10.2.0\flash_recovery_area里面的日志,然后用户用rman(Recovory Manager)进入把归档日志删除

1)rman登陆命令>rman target /

2)命令>crosscheck archivelog all;

3)命令>delete expired archivelog all;

4)命令>exit

--删除100天前日志

delete NOPROMPT archivelog until time "sysdate-100";

解决方法2:调整FLASH_RECOVERY_AREA的大小:

登陆命令>sqlplus / as sysdba

修改命令>alter system set db_recovery_file_dest_size=8G scope=both;

查看命令>show parameter db_recovery_file_dest_size;

关闭登陆>shutdown immediate;

重启>startup

2. ora-01795 maximum number of expressions in a list is 1000: in查询的条件超过999个(并非1000个)

解决办法1: 将条件存入临时表中,再通过子查询将条件取出来,即 select ... in (select xx from temp_table)

解决办法2: 拆成多个in,用or连接起来,即select xxx columnX in ('A','B','C') or columnX in ('E','F','G')

猜你喜欢

转载自mcqueen.iteye.com/blog/1431721