|
公告
日历
统计
- 随笔 - 88
- 文章 - 3
- 评论 - 11
- 引用 - 0
导航
|
2008年3月4日
Unix系统是通过进程树来进行进程管理,当计算机系统被启动后,Unix的核心程序装主存,这点与Windows差不了.当核心程序在做完自身的初始化工作后,建立系统的第一个进程.这个进程在UNIX系统中被称为0号进程, 0号进程进程始终运行在系统的核心态,它的功能是完成UNIX系统的进程调度(这里说下,UNIX的进程调度一般都是在trap访管理指令下进行的)和让进程在主存与磁盘上进行交换(这一个过程发生在UNIX系统中的交换区,通常为UNIX的swap磁盘区),因此,在UNIX系统中0号进程与被人们称为交换进程.
注意:在UNIX系统中0号进程并不是初始化进程,而是由0号进程创建的1号进程才是初始化进行,1号进程在用户态运行;每当有终端请求注册时,1号进行就为该用户创建一个login进程.如果有多个终端用户向系统注册,则要为每个用户创建一个login进程,分别处理各个用户的登录过程.若用户注册成功,则login进程就为该用户再创建一个shell进程.
每个shell进程等待用户输入命令.shell进行执行shell解释程序,对接收到的命令进行分析,分析后再创建一个进程去执行该命令.执行命令的进程可按需要再继续创建进程.一条命令执行完后,又返回到shell进程等待下一条命令.
以下只是说明UNIX从启动到终端用户登录系统并执行UNIX命令这一过程中从UNIX系统的进程观点去分析相关系统进程的过程,总的来说在UNIX中,0号进程和1号进程是进程簇的老祖宗,在系统运行期间就不消亡.
另外,在UNIX系统中用户可通过Shell编程来监控自己在系统中运行的相关进程情况.
posted @ 2008-03-04 21:08 东方新秀 阅读(430) 评论(0) 编辑
2007年9月10日
select to_char(add_months(last_day(sysdate) +1, -1), 'yyyymmdd'),to_char(last_day(sysdate)+1 , 'yyyymmdd') from dual ;
00 22 * * * [`echo \`cal\`|awk '{print $NF}'` -eq `date +\%d`] && do-something(每月月底做两个.sh文件,以防其中一个不执行成功时,另个起作用) 假设每月最后一天的8点10分执行your_cmd_fullname,则 [code]for ((i=1;i<=12;i++));do cal $i 2004|sed '/^$\|2004\|^Su.*/d'|sed -e :a -e 'N;s/\n/ /;ta'|sed 's/.* \([0-9][0-9]\)$/\1/';done|awk '{a[$0]=sprintf("%s,%s",a[$0],NR)}END{for(i in a)printf("10 8 %d %s * your_cmd_fullname\n",i,a[i])}' days|sed 's/ ,/ /'[/code] 执行结果 [code]10 8 29 2 * your_cmd_fullname 10 8 30 4,6,9,11 * your_cmd_fullname 10 8 31 1,3,5,7,8,10,12 * your_cmd_fullname[/code] 然后加入此段代码到你的crontab中 Linux---Shell:
#!/bin/bash today=`date +%d` last_day=`cal | xargs | awk '{print $NF}'` if [ "$today" != "$last_day" ]; then exit 1 fi .... # other codes start from here
如何在crontab中表达每月的最后一天,用表达式不行
每天执行,在要执行的程序头做判断,不是月末则退出
posted @ 2007-09-10 21:53 东方新秀 阅读(112) 评论(0) 编辑
2007年9月9日
建立一个文本文件,例如文件名是ftp.txt,其内容如下: open *.*.*.* /*用open连接远程服务器192.168.1.100*/ user MYNAME MYPASSWORD /*MYNAME是用户名,MYPASSWORD是密码*/ binary /*以二进制传送*/ hash /*当有数据传送时,显示#号*/ cd REMOTE_PATHNAME /*进入远程目标路径REMOTE_PATHNAME*/ get REMOTE_FILE LOCAL_FILE /*把远程文件REMOTE_FILE下载成本地文件LOCAL_FILE*/ put LOCAL_FILE REMOTE_FILE /*将本地文件LOCAL_FILE上传成远程文件REMOTE_FILE */ bye /*退出ftp应用*/
执行命令: cat ftp.txt | ftp -n
posted @ 2007-09-09 21:30 东方新秀 阅读(148) 评论(0) 编辑
切忌要加上参数-v,不然会....... 到linux上测试看看,呵呵
vi autoftp.sh
内容如下:
ftp -n -v -i < ./autoftp.txt
linux命令(用于设置文件权限)umask
022
上述命令显示表示linux系统的umask值为022
umask -S u=rwx,g=rx,o=rx
umask 177 umask -S u=rw,g=,o= 上述两行命令把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的状态。
chmod u+rwx -R /目录 设定用户对目录的权利 读、写、执行
创建应答脚本
vi autoftp.txt
内容如下:
open *.*.*.* 21 user username password pwd put ftp.txt close bye ftp指令个数如下:
ftp的命令行格式为:ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。 -d 使用调试方式。 -n 限制ftp的自动登录,即不使用.netrc文件。 -g 取消全局文件名。
posted @ 2007-09-09 21:26 东方新秀 阅读(157) 评论(0) 编辑
切忌要加上参数-v,不然会....... 到linux上测试看看,呵呵
vi autoftp.sh
内容如下:
ftp -n -v -i < ./autoftp.txt
linux命令(用于设置文件权限)umask
022
上述命令显示表示linux系统的umask值为022
umask -S u=rwx,g=rx,o=rx
umask 177 umask -S u=rw,g=,o= 上述两行命令把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的状态。
chmod u+rwx -R /目录 设定用户对目录的权利 读、写、执行
创建应答脚本
vi autoftp.txt
内容如下:
open *.*.*.* 21 user username password pwd put ftp.txt close bye ftp指令个数如下:
ftp的命令行格式为:ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。 -d 使用调试方式。 -n 限制ftp的自动登录,即不使用.netrc文件。 -g 取消全局文件名。
posted @ 2007-09-09 21:26 东方新秀 阅读(197) 评论(0) 编辑
2007年9月5日
基本上用到的语法如下: a. 获取单个的建表和建索引的语法 set heading off; set echo off; Set pages 999; set long 90000; spool DEPT. sql select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual; select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual; spool off; b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例: set pagesize 0 set long 90000 set feedback off set echo off spool scott_schema. sql connect scott/tiger; SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u; spool off; c. 获取某个SCHEMA的建全部存储过程的语法 connect brucelau /brucelau; spool procedures. sql select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name) from user_objects u where object_type = 'PROCEDURE'; spool off; 另: dbms_metadata.get_ddl('TABLE','TAB1','USER1') 三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象所在的用户名。.
要自己写程序了,执行一段SQL,让SQL查询结果就是我们想要的SQL脚本:
如下:
select
'INSERT INTO B_STATTEMPLATE ( N_ID,C_NAME, C_KBH, N_PRINT, N_TYPE, N_APP, N_VALID ) '
|| 'Values (' || To_Char(N_ID) ||',''' || C_NAME || ''', ''' || C_KBH || ''', '
|| To_Char( N_PRINT ) || ', ' || To_Char( N_TYPE ) || ', ' || '0, 0 );'
from b_stattemplate
将查询结果保存起来就可以了!
posted @ 2007-09-05 23:08 东方新秀 阅读(4397) 评论(2) 编辑
一、 solaris crontab不执行问题解决
1.先杀掉/usr/sbin/cron,可以用ps -ef|grep cron 得出id号
2. rm /etc/cron.d/fifo
3. /usr/sbin/cron
二、SUSE crontab不执行问题探讨:
我基本上认定是crontab运行程序时,它没有读当前用户的.profile,解决方法----
1.如果有root权限可以这样来修改crontab: 7 50 * * * su - user -c /channel/app/back/scripts/serv_cust.sh >/channel/app/cron.out
2.也可以在serv_cust.sh中加上 . $HOME/.profile 以获取.profile中定义的各种环境变量
3.也可能是权限问题.方法:普通用户须被列在/etc/cron.allow中(如果该文件存在),或不被列在/etc/cron.deny中。检查oracle用户是否在上述文件中。
4.你需要在执行程序前先配置oracle的环境参数,如:$ORACLE_HOME等等; 如下,先写一个脚本文件test.sh
#!/bin/sh ORACLE_HOME=/home/oracle export ORACLE_HOME ...... /usr/users/oracle/test1 然后再写crontab脚本: 4 * * * /usr/users/oracle/test.sh 就可以了。
没登录的后台运行程序,没有.profile里的环境变量
也许是oracle的环境变量。
posted @ 2007-09-05 22:38 东方新秀 阅读(974) 评论(0) 编辑
2007年8月26日
手工创建数据库的全部脚本及说明 系统环境: 1、操作系统:Windows 2000 Server,机器内存128M 2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3、安装路径:D:\ORACLE 建库步骤: 1、手工创建相关目录
D:\Oracle\admin\test
D:\Oracle\admin\test\adhoc
D:\Oracle\admin\test\bdump
D:\Oracle\admin\test\cdump
D:\Oracle\admin\test\create
D:\Oracle\admin\test\exp
D:\Oracle\admin\test\pfile
D:\Oracle\admin\test\udump
D:\Oracle\oradata\test
D:\Oracle\oradata\test\archive
| 2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:
db_name = "test"
instance_name = test
service_names = test
db_files = 1024
control_files = ("D:\Oracle\oradata\test\control01.ctl",
"D:\Oracle\oradata\test\control02.ctl", "D:\Oracle\oradata\test\control03.ctl")
open_cursors = 200
max_enabled_roles = 30
db_file_multiblock_read_count = 8
db_block_buffers = 4096
shared_pool_size = 52428800
large_pool_size = 78643200
java_pool_size = 20971520
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 115
parallel_max_servers = 5
log_buffer = 32768
max_dump_file_size = 10240
global_names = true
oracle_trace_collection_name = ""
background_dump_dest = D:\Oracle\admin\test\bdump
user_dump_dest = D:\Oracle\admin\test\udump
db_block_size = 16384
remote_login_passwordfile = exclusive
os_authent_prefix = ""
job_queue_processes = 4
job_queue_interval = 60
open_links = 4
distributed_transactions = 10
mts_dispatchers = "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"
mts_dispatchers = "(protocol=TCP)"
compatible = 8.1.0
sort_area_size = 65536
sort_area_retained_size = 65536
# log_archive_start = true
# log_archive_dest_1 = "location=D:\Oracle\oradata\oradb\archive"
# log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
| 3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件, 内容:IFILE=’D:\Oracle\admin\test\pfile\inittest.ora’ 4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora 命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5 5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工 set ORACLE_SID=test D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora" 6、生成各种数据库对象 D:\ >svrmgrl --创建数据库
connect INTERNAL/oracle
startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
CREATE DATABASE test
LOGFILE ’D:\Oracle\oradata\test\redo01.log’ SIZE 2048K,
’D:\Oracle\oradata\test\redo02.log’ SIZE 2048K,
’D:\Oracle\oradata\test\redo03.log’ SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE ’D:\Oracle\oradata\test\system01.dbf’
SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
| 控制文件、日志文件在上面语句执行时生成 connect INTERNAL/oracle --修改系统表空间 ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50); ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K; --创建回滚表空间
CREATE TABLESPACE RBS DATAFILE ’D:\Oracle\oradata\test\rbs01.dbf’ SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
| --创建用户表空间
CREATE TABLESPACE USERS DATAFILE ’D:\Oracle\oradata\test\users01.dbf’ SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
| --创建临时表空间
CREATE TABLESPACE TEMP DATAFILE ’D:\Oracle\oradata\test\temp01.dbf’ SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS
UNLIMITED PCTINCREASE 0) TEMPORARY;
| --创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE ’D:\Oracle\oradata\test\tools01.dbf’ SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
| --创建索引表空间
CREATE TABLESPACE INDX DATAFILE ’D:\Oracle\oradata\test\indx01.dbf’ SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
| --创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
| --使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
| --修改sys用户的临时表空间为TEMP alter user sys temporary tablespace TEMP; --创建数据字典表
@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
@D:\Oracle\Ora81\Rdbms\admin\catproc.sql
@D:\Oracle\Ora81\Rdbms\admin\caths.sql
connect system/manager
@D:\Oracle\Ora81\sqlplus\admin\pupbld.sql
connect internal/oracle
@D:\Oracle\Ora81\Rdbms\admin\catrep.sql
exit
| --生成SQL*Plus帮助系统 sqlplus SYSTEM/manager @D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql exit --修改system用户默认表空间和临时表空间 svrmgrl connect internal/oracle alter user system default tablespace TOOLS; alter user system temporary tablespace TEMP; exit 7、将test实例启动服务设置成自动启动方式 D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto (完)
posted @ 2007-08-26 23:22 东方新秀 阅读(1231) 评论(0) 编辑
2007年8月24日
摘要: 对Oracle数据库的定时热备份(Exp)通常可用两种办法实现,一种是在Oracle数据库中利用其提供的任务队列管理器(Job Queue)来实现;另一种是利用操作系统的定时执行命令来完成。在第一种方法中需要数据库启动后台进程SNP,并且需在Oracle的初始化文件中加入任务队列的启动参数,而第二种方法不需对数据库做任何改动即可完成。本例介绍如何利用Digital Unix 4.0F下的定时触发器... 阅读全文
posted @ 2007-08-24 22:14 东方新秀 阅读(263) 评论(0) 编辑
2007年8月20日
摘要: http://www.teajk.com/wss/vb6.asp 阅读全文
posted @ 2007-08-20 23:11 东方新秀 阅读(52) 评论(0) 编辑
|