zoukankan      html  css  js  c++  java
  • 工作中oracle常用操作

    常用数据库操作

    启动数据库监听器lsnrctl start
    停止数据库监听器
    lsnrctl stop
    登录oracle
    sqlplus / as sysdba
    启动oralce
    startup;
    关闭oracle
    shutdown immediate;

    数据库因数据文件损坏起不来时
    startup mount
    alter database datafile 21 offline drop;
    alter database recover datafile '/u01/app/oracle/oradata/test.dbf';
    alter database datafile '/u01/app/oracle/oradata/test.dbf' online;
    alter database open;

    创建表空间
    CREATE TABLESPACE test
    DATAFILE '/u01/app/oracle/oradata/test.dbf'
    SIZE 32M
    AUTOEXTEND ON
    NEXT 32M MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL;
    查询表空间数据文件
    SELECT tablespace_name, file_id, file_name,bytes
    FROM dba_data_files ORDER BY tablespace_name;
    为表空间添加数据文件
    ALTER TABLESPACE test ADD DATAFILE
    '/u01/app/oracle/oradata/test02.dbf' SIZE 1G
    AUTOEXTEND ON NEXT 1G MAXSIZE 30G;
    创建用户
    create user 用户名 identified by 密码 default tablespace 表空间;
    赋给用户Connect角色、Resource角色和DBA角色
    grant connect,resource,dba to 用户名;
    赋给用户远程权限(访问其他用户的表需要此权限)
    grant all privileges to 用户名

    数据库导出:
    expdp 用户名/密码@数据库服务器IP:1521/数据库实例名 schemas=用户名 directory=DATA_PUMP_DIR DUMPFILE=需要导出的备份文件.DMP LOGFILE=导出产生的日志.log
    导出某几个表参数
    tables=schema1.table1,schema1.table2
    DATA_PUMP_DIR目录是使用数据泵导出导入方式的默认存储目录,具体路径为oracle安装路径下的oracle/admin/orcl(实例)/dpdump
    数据库导入:
    IMPDP 用户名/密码@数据库服务器IP:1521/数据库实例名 directory=DATA_PUMP_DIR DUMPFILE=需要导入的备份文件.DMP LOGFILE=导入产生的日志.log REMAP_SCHEMA=源用户名:目标用户名 remap_tablespace=源表空间:目标表空间 TRANSFORM= OID:N,SEGMENT_ATTRIBUTES:N SKIP_UNUSABLE_INDEXES=Y TABLE_EXISTS_ACTION=truncate
    表存在时参数
    table_exists_action=skip
    table_exists_action=replace

    常用sql语句

    清除表重复数据
    delete from test where rowid in(
    select max(rowid) From test group by year,admdivid,expfuncid,expecoid,projectid having count(*)>1)

    MERGE 命令,如果数据库中存在数据就update,如果不存在就insert。
    MERGE INTO TEST T1
    USING (SELECT '2' as ID, 'newtest2' as NAME FROM dual) T2 on (T1.ID=T2.ID)
    WHEN MATCHED THEN
    UPDATE SET T1.NAME=T2.NAME
    WHEN NOT MATCHED THEN
    INSERT (T1.ID, T1.NAME) VALUES (T2.ID, T2.NAME );

    intersect 是交集,交集就是两个结果集中都有的元素
    select uid from tb1
    intersect
    select uid from tb2
    那么既存在tb1 又存在tb2中 相同的UID 就会查出来
    minus 是差集
    select uid from tb1
    minus
    select uid from tb2
    存在于tb1 但不存在于tb2中的uid 会被查出

    --查看被锁的表
    select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
    --查看那个用户那个进程照成死锁
    select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
    --查看连接的进程
    SELECT sid, serial#, username, osuser FROM v$session;
    --查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
    SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
    s.terminal, s.logon_time, l.type FROM v$session s, v$lock l
    WHERE s.sid = l.sid AND s.username IS NOT NULL ORDER BY sid;
    /*这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,
    任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。*/
    --杀掉进程 sid,serial#
    alter system kill session'210,11562';

  • 相关阅读:
    python 3.5.2安装mysql驱动报错
    mysql创建用户
    Centos7 修改SSH 端口
    centos 7 升级后yum install出现Exiting on user cancel
    centos7 systemctl 启动 Redis 失败
    redis 异常解决办法
    用普通用户通过sudo进行启动tomcat时报如下异常
    svn迁移到git仓库并保留commit历史记录
    CentOS更新yum源
    django 添加comments app
  • 原文地址:https://www.cnblogs.com/kdy11/p/11419766.html
Copyright © 2011-2022 走看看