|
ry_key VARCHAR2(100), field VARCHAR2(1000)) ON COMMIT PRESERVE ROWS;CREATE GLOBAL TEMPORARY TABLE TEMP_TAB2( table_name VARCHAR2(20), primary_key VARCHAR2(100), field VARCHAR2(1000)) ON COMMIT DELETE ROWS; 15、如何使用OEM 先启数据库服务,再启oracle manager服务。 否则重建档案资料库 如果还不行就把ORACLEHOME\NETWORK\sqlnet.ora文件的内容 sqlnet.authentication_services=(NTS) 改成sqlnet.authentication_services=(NONE) 登录 sysman/oem_temp 16、TNS:没有监听器的问题。 (1)查一下监听服务是否启动, 如果没有启动,则运行lsnrctrl start。 (2)查看一下 LISTENER.ORA内监听的服务器名、服务器IP、数据库名是否正确。 (3)查看一下 TNSNAMES.ORA内服务器名、服务器IP、数据库名是否正确。 17、LINUX、UNIX下自动启动ORACLE服务 (1) !/bin/sh # chkconfig: 345 51 49 # description: starts the oracle dabase deamons # ORA_HOME=/u01/app/oracle/product/8.1.7 ORA_OWNER=oracle case "$1" in ''''start'''') echo -n "Starting Oracle8i: " su - $ORA_OWNER -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle8i echo ;; ''''stop'''') echo -n "Shutting down Oracle8i: " su - $ORA_OWNER -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle8i echo ;; ''''restart'''') echo -n "Restarting Oracle8i: " $0 stop $0 start echo ;; *) echo "Usage: oracle8i { start | stop | restart }" exit 1 esac exit 0 我仿照su - $ORA_OWNER -c $ORA_HOME/bin/dbshut 的形式 添加su - $ORA_OWNER -c $ORA_HOME/bin/lsnrctl start 但是在系统启动的时候listener启动不了 (2) /etc/rc.local 改成如下就可以了 touch /var/lock/subsys/local #echo 2147483648 > /proc/sys/kernel/shmmax echo -n "Starting Oracle Database:" date +"%D %T %a" su - oracle -c "lsnrctl start" #su - oracle -c "sqlplus /nolog @startmaster.sql" echo -n "Oracle Database Started:" date +"%D %T %a" ------------- 第一个#是改共享内存大小的 第二个#是启动数据库的。 (3) ftp://ftp.rpmfind.net/linux/rhcontrib/7.1/i386/oraclerun9i-1.0-1.i386.rpm 下载这个软件包并安装。 里面每个文件都有一些要修改的地方。配置完成之后,就可以在系统服务配置中找到它,选中它就可能以自启动了。 18、回滚段不够的处理方法 (1)、先使回滚段脱机一个, 如果不好用,则再脱机一个。直至好用。 ALTER rollback segment rollbackname offline; (2)、增加回滚段数据文件的大小 alter database datafile ''''datafile'''' resize 200M; 19、WINNT向WIN2000移植
不用EXP和IMP的 停掉数据库的服务后,可以做一个数据库的全备份。 在WIN2000上建一个同名的数据库,随便建,越小越好,可以缩短时间。 把WINNT下的数据库备份恢复到WIN2000的数据库上就可以了。但建库的目录 必须一样。(也可以不一样,但需要更改数据文件的连接) 我曾多次为用户这样移植数据,万无一失的。 注意:因为数据很重要,所以建议你先EXP备份一下。这是我们的习惯。 20、ORACLE SQL PLUS Worksheet乱码问题。
dbappscfg.properties,修改该文件即可解决上述问题。$ORACLE_HOME\sysman\config目录下,修改 # SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 为SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。 对于Windows操作系统,还需要修改一项 #SQLPLUS_SYSTEMROOT=c:\\WINNT40 为SQLPLUS_SYSTEMROOT=C:\\WINNT 如操作系统的主目录在C盘的Winnt下 对于后面一项的修改只对Windows操作系统进行,对UNIX操作系统则不需要。如果在Windows操作系统中不修改该项,在Oracle Enterprise Manager中,连接系统时,会提示如下的错误: ORA-12560 TNS:protocol adapter error 或者 ORA-12545 Connect failed because target host or object does not exist 重新连接SQL PLUS Worksheet 21、DROP掉名字是小写的表(用双引号括起来)。
drop table "tablename" select * from "tablename" 22、日期的显示格式 注意:SIMPLIFIED CHINESE(简体中文需要" "括起来) 别的国家不用" " 例如:ENGLISH select to_char(sysdate,''''DAY'''',''''NLS_DATE_LANGUAGE=''''''''SIMPLIFIED CHINESE'''''''''''') from dual; ------------ 星期四 ------------ 23、一个从ORACLE中读表信息的存储过程 可以在vc下调用存储过程来实现 例子: 先修改init.ora 例如: utl_file_dir=/usr //路径为 oracle所在的盘:/usr 此过程将用户TEMP的P1过程的代码保存到ORACLE安装盘下/USR/TEXT.TXT中 create or replace procedure TEST is file_handle utl_file.file_type; STOR_TEXT VARCHAR2(4000); N NUMBER; I NUMBER; begin I:=1; SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=''''TEMP'''' AND NAME=''''P1''''; file_handle:=utl_file.fopen(''''/usr'''',''''test.txt'''',''''a''''); WHILE I<=N LOOP SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=''''TEMP'''' AND NAME=''''P1'''' AND LINE= I; I:=I+1; utl_file.put_line(file_handle,stor_text); END LOOP; utl_file.fclose(file_handle); commit; end TEST; / 24、关于修改ORACLE的列宽 (1)、不论如何都要备份数据。 (2)、如果没有数据,则可以修改宽度。比如NUMBER,CHAR,VARCHAR2 (3)、如果有数据,则可以增加宽度。比如NUMBER,CHAR,VARCHAR2 注意:不可以减小宽度。 (4)、语法:alter talbe tablename modify columnname columntype not null; 25、如何查看用户的存储过程和函数 select name,text from user_source where name= Procedurename and type = ''''PROCEDURE'''' order by line; 26、在批处理中自动启动ORACLE服务(win2000) 编一个批处理文件 net start OracleServiceSID OracleServiceSID是ORACLE的实例名称 27、对行加锁时,只对tb1加锁 select tb1.r1 from tb1, tb2 where tb1.r2 = tb2.r2 and tb2.r1 = xxx for update of tb1.r1 nowait 28、得到列的信息 desc tablename select cname from col where tname=''''TABLENAME''''; select column_name from user_tab_columns where table_name=''''TABLENAME''''; select column_name from ALL_tab_columns where table_name=''''TABLENAME''''; select column_name from dba_tab_columns where table_name=''''TABLENAME''''; select column_name from user_col_comments where table_name=''''TABLENAME''''; select column_name from all_col_comments where table_name=''''TABLENAME''''; select column_name from dba_col_comments where table_name=''''TABLENAME''''; 29、使触发器无效(login_on) svrmgrl connect internal/oracle alter trigger login_on disable; 使触发器为无效alter trigger yourtriggername disable 如果是对于某一个表的所有的触发器: alter table yourtablename disable all triggers 30、如在SQLPLUS中何调用存储过程和函数。
call只能调用存储过程后面加上括号就可以了 call 存储过程名(); exec procedurename;(可以不加()) 调用函数用sql语句 select 函数名(参数) from dual; 31、函数中如果调用DML语句就不可以调用SELECT语句 32、REDO LOG BUFFER 什么时候写到REDO LOGFILE中 (1)、在COMMIT的时候 (2)、重做日志缓冲区1/3满的时候 (3)、重做日志缓冲区大于1M的时候 (4)、它写信息必须是在数据写进程前调用 (5)、一般CHECKPOINT在日志组切换的时候进行或者由初始化参数设定 在CHECKPOINT的时候需要调用数据写进程 33、ORACLE的http server 把原有的WEB server冲掉,如何解决? (1).如果你原来的http server是用IIS等其他发布工具做的,那么可以在服务中停掉 oracle http server服务,并且改为手动启动。 (2).如果原来的http server是用apache发布,则可以改变http.conf中的参数 34、关于创建重建查看索引 创建索引: CREATE INDEX IND_NAME ON TABLE_NAME(COL1,COL2,...);
重建索引: ALTER INDEX IND_NAME REBUILD; 查看索引: SELECT * FROM USER_INDEXES WHERE INDEX_NAME=''''IND_NAME''''; 35、ORACLE如何查杀用户的进程 一|根据用户的应用程序和SQL语句,在DBA STUDIO找到用户的SESSION并断开其连接 二、 (1)、要杀掉一个session应先应知道其sid和serial#,假设你已经知道。 (2)、select paddr from v$session where sid=v_sid and serial#=v_serial# select spid from v$process where addr=paddr(以上语句所查出的); (3)、使用ALTER SYSTEM KILL SESSION ''''v_sid,v_serial#'''' immediate; 试一试如不行转 三、LINUX和UNIX下 转到操作系统下执行:kill -9 spid (以上语句所查出的) 36、ORACLE中检查表是否被锁的语句 SELECT A.OWNER, A.OBJECT_NAME, B.XIDUSN, B.XIDSLOT, B.XIDSQN, B.SESSION_ID, B.ORACLE_USERNAME, B.OS_USER_NAME, B.PROCESS, B.LOCKED_MODE, C.MACHINE, C.STATUS, C.SERVER, C.SID, C.SERIAL#, C.PROGRAM FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C WHERE ( A.OBJECT_ID = B.OBJECT_ID ) AND (B.PROCESS = C.PROCESS ) ORDER BY 1,2 杀掉:alter system kill session ''''sid, serial#'''' 37、ORACLE的登录问题,用户名和密码。 可以直接输入: internal/oracle@serivce_name sys/change_on_install@serivce_name system/manager@serivce_name scott/tiger@serivce_name 注意: 9i中没有internal/oracle 如果选择典型安装则有 scott用户 如果自定义可以不安装 scott用户 如果是本机则可以省略@serivce_name oem:(ORACLE ENTERPRISE MANAGER) sysman/oem_temp
上一页 [1] [2] [3] [4] [5] 下一页 没有相关教程
|