ORACLE-工作常用配置及命令记录-导入sql、unl文件、查看数据库状态等

博文说明【前言】:

本文将记录个人工作中常用的oracle配置命令及相关知识,在目前时间点【2017年5月16号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。



正文:


1、cmd中执行sql脚本

sqlplus mcpdb/[email protected]/cxydck1 @D:\浏览器下载-download\TS_COMPANY-副本.sql

上面这是在没有使用ora文件的情况下,如有ora文件,则10.133.200.230/cxydck1可以替换成自定义的名称

2、plsql中执行sql脚本

打开命令窗口-->@d:\database.sql  或者 start d:\database.sql

3、将unl文件数据导入oracle数据库

1、编辑sql.ctl文件,sql.ctl文件内容如下:

load data  
infile ‘C:\Users\Administrator\Desktop\移动查勘上线测试\2016-10-26-更新分公司用户数据库\prpdbankaccount.txt‘  
insert  
into table ts_bankaccount_bak2  
fields terminated by‘#‘  
trailing nullcols  
(  
    OPENBANKCODE,  
    OPENBANKNAME,  
    NAMECODE, 
    AREACODE, 
    USEFLAG   
)

注意:文件中的“#”代表的是unl文件中以#为分隔符,如果文件中是以|作为分隔符,则需要将#替换成|,括号中的5个字段指的是对应的5个字段。

2、打开cmd,路径进入ctl和data.txt所在的路径,运行

sqlldr mcp31000000/[email protected] control=sql.ctl log=log.log bad=bad.log errors=5000
rows=500 bindsize=1048576

注意:

rows与bindsize相关,rows默认64行,如果不修改bindsize,只修改rows无效。

bindsize --(每次提交记录的缓冲区的大小,字节为单位,默认256000)

4、AIX服务器上使用topas,查看时出现:Terminal linux is unknown

解决方法:export TERM=vt100  然后在CRT终端上修改将terminal修改为VT100,输出结果后可以再次修改回linux

5、查看RAC集群资源信息

# srvctl  config database -d cxydck -a 【注意:-d后面接的是server_name】

6、查看RAC集群监听信息

# srvctl config listener -n ZB23YDCK1(主机名)

7、查看RAC集群连接信息

# srvctl  config database -d cxydck -t

8、查看RAC集群实例状态【cxydck为server_name】

# srvctl  status database -d cxydck  -v

9、查看节点应用程序状态: srvctl status nodeapps

10、列出所配置的数据库名称:srvctl config database

11、列出所配置的数据库的详细信息:srvctl config database -d cxydck -a

12、查看ASM磁盘:srvctl status asm -a

13、查看listener:srvctl status listener

14、查看磁盘空间信息

进grid用户下进入asmcmd,然后lsdg查看磁盘组空间

15、修改数据库默认字符集

查看当前数据库的字符集

Sql> select userenv(‘language‘) from dual;

改服务器端字符集,通过ORACLE的SQL PLUS命令窗口改

在SQL*PLUS中,以DBA登录 conn 用户名 as sysdba

然后执行以下命令

>shutdown immediate;    (把database停了,关闭数据库实例Instance)

>startup mount;        (把database重开去可更改情況,实例装载数据库)

>alter system enablerestricted session;

>alter system set job_queue_processes=0;

>alter system setaq_tm_processes=0;

>alter database open;                     (Instance打开数据库)

>alter database characterset utf8;

OR

>alter database characterset internal_use utf8;(AL32UTF8)

>shutdown immediate;

>startup;        (重开正常oracle)

16、死锁问题解决

一、数据库死锁的现象

程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。

二、死锁的原理

当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提

交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,

此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。

三、死锁的定位方法

通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。

1)用dba用户执行以下语句

select username,lockwait,status,machine,program from v$session where sid in

(select session_id fromv$locked_object)

如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:

Username:死锁语句所用的数据库用户;

Lockwait:死锁的状态,如果有内容表示被死锁。

Status:状态,active表示被死锁

Machine:死锁语句所在的机器。

Program:产生死锁的语句主要来自哪个应用程序。

2)用dba用户执行以下语句,可以查看到被死锁的语句。

select sql_text from v$sqlwhere hash_value in

(select sql_hash_value fromv$session where sid in

(select session_id fromv$locked_object))

四、死锁的解决方法

一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可

能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。

 经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。

1)查找死锁的进程:

sqlplus "/assysdba" (sys/change_on_install)

SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,

l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS

FROM V$LOCKED_OBJECTl,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

3)如果还不能解决:

select pro.spid fromv$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

  其中sid用死锁的sid替换: exit

ps -ef|grep spid

  其中spid是这个进程的进程号,kill掉这个Oracle进程

17、执行startup时,提示ORA-00845:MEMORY_TARGET not supported on this system

在重启oracle11G的时候出现这个错误,解决方法:

如上的内容就详细的解释了该错误是由于/dev/shm小于MEMORY_TARGET的大小,或者是/dev/shm根本就没有挂载,如果同时设置了MEMORY_TARGET和MENORY_MAX_TARGET,那么/dev/shm至少必须和MEMORY_MAX_TARGET的大小一致

因此在这里需要重新把这个目录进行挂载,在挂载的时候,添加内存参数,进入/etc/fstab文件

修改为:tmpfs                   /dev/shm                tmpfs   defaults,size=3G        0 0

[[email protected] ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

tmpfs                 1.9G  909M 1009M 48% /dev/shm

/dev/sda1             194M   32M 152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G 4.1G     0 100% /media

提示无法umount的时候使用  fuser -km /dev/shm/  然后再umount

重新挂载之后的状态:

[[email protected] ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

/dev/sda1             194M  32M  152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G  4.1G    0 100% /media

tmpfs                 3.0G     0 3.0G   0% /dev/shm

然后:

SQL> startup;

ORACLE instance started.

Total System Global Area1603411968 bytes

Fixed Size               2213776 bytes

Variable Size               939526256 bytes

Database Buffers        654311424 bytes

Redo Buffers                 7360512 bytes

Database mounted.

Database opened.

然后重新挂载,如果在卸载umount  /dev/shm的时候失败,无法卸载,那么输入:fuser–km /dev/shm,

然后再重新挂载mount –a



结尾:

感谢阅读,祝有收获的一天,谢谢!

时间: 2024-08-25 07:03:08

ORACLE-工作常用配置及命令记录-导入sql、unl文件、查看数据库状态等的相关文章

达梦数据库常用功能及命令记录--持续更新

达梦数据库常用功能及命令记录 达梦数据库语句的使用总体来说跟oracle很接近的,这篇文章主要是把常用的情况和语句做了记录,并且后续还会不断的持续更新 达梦数据库常用说明 1.测试查询语句:select 1;select top 2 from v$dm_ini; select from v$dm_ini limit 2;select * from v$dm_ini where rownum<2; 2.达梦大小写:DM7.6之前版本默认密码是转为大写存储的,登录时要注意.比如用户设置test/te

CentOS7开放端口以及常用的使用命令记录整理

CentOS7与以前常用的CentOS6还是有一些不同之处的,比如在设置开放端口的时候稍许有些不同,常用的iptables命令已经被firewalld代替.这几天正好有在CentOS7系统中玩Seafile自建网盘,默认的时候是没有开启8082端口的,然后看到CentOS7开放端口稍微与CentOS6不同,这里本着学习和记录的习惯,将CentOS7开放端口以及常用的使用命令记录整理. 这样在以后遇到有需要CentOS7开放端口和命令的时候直接翻阅使用到,内容比较基础,对于大佬来说简单,但是我记忆

二十七、Linux下常用的shell命令记录

本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会持续更新. 说明,我是在一个Centos 6.4 64位的虚拟机系统进行测试.本文介绍的命令都会在此Centos下运行验证(也有部分命令会在我的suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出了. 硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /pro

MySQL命令行导入sql文件时出现乱码解决方案

Note: sql> source F:weibo.sql(执行相关sql文件) sql> select * from sina into outfile "/weibo.txt"(导出相应数据到C:的weibo.txt) 1. mysql 5.0后其客户端仅支持gbk,故可在sql> set names gbk; 例如: set names gbk; /* Navicat MySQL Data Transfer Source Server : localhost_3

命令行导入SQL文件

摘要:把数据库导出为XX.sql格式的数据库文件,导入到另外一个数据库中的时候,总是无法全部导入.及时用mysql的命令界面导入依然是无法全部导入.老师告诉我:在命令行中运行的效率和成功率是最快和最高的.所以查了一下如何用命令行导入SQL文件,方法很简单! 1.首先运行cmd(注意此处要用管理员身份运行)或者“开始菜单”-->附件-->命令提示符(右键)-->以管理员身份运行 2.进入mysql的bin目录 3.运行:mysql -u root -proot test <I:\re

Linux下常用的shell命令记录1

 硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等 内存相关 free -m #概要查看内存情况 这里的单位是MB cat /proc/meminfo #查看内存详细信息 磁盘相关 lsblk #查看硬盘和分区分布,显示很直观 df -h #查看各分区使用情况 cat /proc/partitions #查看硬盘和分区 mount | column -t #查看挂接的分区状态 网卡相关 lspc

Linux下常用的shell命令记录

 硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等 内存相关 free -m #概要查看内存情况 这里的单位是MB cat /proc/meminfo #查看内存详细信息 磁盘相关 lsblk #查看硬盘和分区分布,显示很直观 df -h #查看各分区使用情况 cat /proc/partitions #查看硬盘和分区 mount | column -t #查看挂接的分区状态 网卡相关 lspc

mysql命令行导入sql脚本中文变问号问题

之前一直用工具连接mysql虽然小问题不断也都无伤大雅,最近做金融云项目,只能通过服务器的内网访问数据库,也就是说只能在linux下通过命令行访问,在导入中文的时候发现都变成问号了,经过查询资料解决,特此记录一下思路. 1.检查sql脚本文件是否unicode编码,打开查看是脚本文件中中文是否能正常显示. 2.检查所建好的数据库是否采用utf8编码. 3.在mysql命令行下执行status检查Server characterset和Client characterset编码是否一致(我就是这一

mysql用命令行导入sql文件

前面说到了用navicat工具导入导出数据库,今天给同事导入数据库的时候,发现到不进去,好多错误,情急之下,用命令行导入的 1.打开mysql的服务.cmd-->net start mysql 关闭服务:cmd-->net stop mysql 2.找到你的mysql安装包下的bin目录 "E:\MySQL\MySQL Server 5.0\bin\" 3.在cmd下运行 cd E:\MySQL\MySQL Server 5.0\bin   回车 4.运行  mysql -