Oracle数据库执行脚本常用命令小结
1.执行一个SQL脚本文件
sqlplususer/pass@servicename<file_name.sql
或
SQL>startfile_names
或
SQL>@file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
@与@@的区别是什么?
@等于start命令,用来运行一个sql脚本文件。
@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件www.111Cn.net。
@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。
如:在c:temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:
@@nest_start.sql–-相当于@c:tempnest_start.sql
则我们在sql*plus中,这样执行:
SQL>@c:tempstart.sql
2.重新运行上一次运行的sql语句
SQL>/
3.将显示的内容输出到指定文件
SQL>SPOOLfile_name
在屏幕上的所有内容都输入到该文件中,包括你输入的sql语句。
通常情况下,我们使用SPOOL方法,将数据库中的表导出为文本文件的时候会采用两种方法,如下述:
方法一:采用以下格式脚本
setcolsep‘|';–设置|为列分隔符 settrimspoolon; setlinesize120; setpagesize2000; setnewpage1; setheadingoff; settermoff; setnum18; setfeedbackoff; spool路径+文件名; select*fromtablename; spooloff;
方法二:采用以下脚本
settrimspoolon setlinesize120 setpagesize2000 setnewpage1 setheadingoff settermoff spool路径+文件名 selectcol1||','||col2||','||col3||','||col4||'..'fromtablename; spooloff
附一些基本命令
1、得到数据库名和创建日期
SELECTname,created,log_mode,open_modeFROMv$database;
2、ORACLE数据库的计算机的主机名,ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息
SELECThost_name,instance_name,versionFROMv$instance;
3、为了知道oracle数据库版本的一些特殊信息
select*fromv$version;
4、获取控制文件名字
select*fromv$controlfile;
5、得到Oracle数据库的重做日志配置信息
SELECTgroup#,members,bytes,status,archivedFROMv$log; selectGROUP#,MEMBERfromv$logfile;
6、获取oracle的每个重做日志(成员)文件所存放的具体位置
select*fromv$logfile;
7、知道ORACLE数据库的备份和恢复策略和归档文件的具体位置
archiveloglist
8、知道ORACLE数据库中到底有多少表空间以及每个表空间的状态
selecttablespace_name,block_size,status,contents,loggingfromdba_tablespaces; selecttablespace_name,statusfromdba_tablespaces;
9、知道每个表空间存在哪个磁盘上以及文件的名字等信息
SELECTfile_id,file_name,tablespace_name,status,bytesfromdba_data_files; selectfile_name,tablespace_namefromdba_data_files;
10、知道Oracle数据库系统上到底有多少用户和都是什么时候创建的
selectusername,createdfromdba_users; selectusername,DEFAULT_TABLESPACEfromdba_users;
11、从控制文件中取出信息涉及到以下一些相关的命令
select*fromv$archived select*fromv$archived_log select*fromv$backup select*fromv$database select*fromv$datafile select*fromv$log select*fromv$logfile select*fromv$loghist select*fromv$tablespace select*fromv$tempfile
12、控制文件由两大部份组成:可重用的部份和不可重用的部分。可重用的部分的大小可用
CONTROL_FILE_RECORD_KEEP_TIME参数来控制,该参数的默认值为7天,即可重用的部份的内容保留7天,一周之后这部份的内容可能被覆盖。可重用的部份是供恢复管理器来使用的,这部份的内容可以自动扩展。Oracle数据库管理员可以使用CREATDATABASE或CREATCONTROLFILE语句中的下列关键字(参数)来间接影响不可重用的部份的大小:
MAXDATAFILES MAXINSTANCES MAXLOGFILES MAXLOGHISTORY MAXLOGMEMBERS
13、查看控制文件的配置
SELECTtype,record_size,records_total,records_usedFROMv$controlfile_record_section;
14、如果您的显示被分成了两部分,您需要使用类似于setpagesize100的SQL*Plus命令先格式化输出。有关的格式化输出命令有以下这些:
record_size:为每个记录的字节数。
records_total:为该段所分配的记录个数。
records_used:为该段所使用的记录个数。
15、知道控制文件中的所有数据文件(DATAFILE),表空间(TABLESPACE),和重做日志(REDOLOG)所使用的记录情况
SELECTtype,record_size,records_total,records_used FROMv$controlfile_record_section WHEREtypeIN(‘DATAFILE',‘TABLESPACE',‘REDOLOG');
16、获取控制文件名字
selectvaluefromv$parameterwherename='control_files'; 或者:select*fromv$controlfile
17、如何在一个已经安装的Oracle数据库中添加或移动控制文件呢?
以下是在一个已经安装的Oracle数据库中添加或移动控制文件的具体步骤:
a、利用数据字典v$controlfile来获取现有控制文件名字。
b、正常关闭Oracle数据库。
c、将新的控制文件名添加到参数文件的CONTROL_FILES参数中。
d、使用操作系统的复制命令将现有控制文件复制到指定位置。
e、重新启动Oracle数据库。
f、利用数据字典v$controlfile来验证新的控制文件名字是否正确。
g、如果有误重做上述操作,如果无误删除无用的旧控制文件。
注:如果您使用了服务器初始化参数文件(SPFILE),您不能关闭Oracle数据库而且应该在第3步使用altersystemsetcontrol_files的Oracle命令来改变控制文件的位置。
SQL>altersystemsetcontrol_files= ‘D:Disk3CONTROL01.CTL', ‘D:Disk6CONTROL02.CTL', ‘D:Disk9CONTROL03.CTL'SCOPE=SPFILE;
18、由于控制文件是一个极其种要的文件,除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外,在数据库的结构变化之后,您应立即对控制文件进行备份。可以用Oracle命令来对控制文件进行备份:
alterdatabasebackupcontrolfileto‘D:backupcontrol.bak';
19、您也可将备份到一个追踪文件中。该追踪文件包含有重建控制文件所需的SQL语句。可使用以下SQL语句来产生这一追踪文件:
alterdatabasebackupcontrolfiletotrace;
20、正常关闭oracle命令
shutdownimmeditae
PS:oracle客户端连接的文件配置:
oracle的目录/network/ADMIN/tnsnames.ora
内容:
MIMI(客户端连接的名称)= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.254)(PORT=1521)) ) (CONNECT_DATA= (SERVICE_NAME=NTDB.RUNNER) ) )
修改表结构
altertablem_gl_gls3_historyadd(aaaaavarchar2(20),bbbbbvarchar2(10)) altertablem_gl_gls3_historymodify(aaaaavarchar2(10)) --要改变表中的字段的类型或缩小字段长度,该字段的所有记录值必须为空。 --如果改字段存在记录值,则该字段长度只能扩大,不能缩小。 altertablem_gl_gls3_historydrop(aaaaa,bbbbb)