Vamos a comenzar a generar una prueba de pagina web conectada a una base de datos.
Ahora bien, para realizar esto primero debemos tener un ambiente que no sea el productivo. Pero como creamos ese ambiente?, donde y como generamos una base?.
1. Tener el wampserver, sino lo tenemos lo descargamos. En este programa vamos a encontrar como dejar activa la base y que sea utilizada previa a nuestra puesta en producción :
Para abrir phpMyAdmin, haz clic en la opción phpMyAdmin del menú de WampServer que se obtienen al hacer clic sobre su icono. O accede a la dirección http://localhost/phpmyadmin/.
2. Puedes seleccionar un juego de caracteres en el desplegable Cotejamiento, si lo dejas en blanco se tomará el valor por defecto que variará según la configuración de cada servidor.
3. Es recomendable que escojas la opción utf-8_spanish_ci para maximizar la compatibilidad con todos los caracteres especiales del alfabeto en castellano y para que la salida en cualquier navegador sea correcta.
Una vez que ingresamos a la base, vamos a creer una Base de datos
Y ya, una vez que le damos CREAR, ya tenemos nuestra base de datos y podemos comenzar a generar nuestras tablas, procesos,etc.
Próximamente subire como hacer un login, en PHP-
Este blog esta hecho con la intención de ayudar. Aportes sobre realización de backups y recovery. Métodos de administración de bases, dblinks y migraciones, tablas, indices, estadísticas, etc. Diseño web y plantillas en php.
Mi lista de blogs
viernes, 25 de septiembre de 2015
miércoles, 23 de septiembre de 2015
Hace tu web vos mismo, en pocos pasos
Bueno, si bien este es un ejemplo, pero luego cada uno lo puede adaptar o consultar para modificarlo. Haremos una pequeña prueba, y para ello es necesario que me sigas.
A empezar a diseñar
1-Bajar dreamweaver, entorno de desarrollo donde haremos la pagina.
2-Ingresamos a dreamweaver.
3-Vamos a CREAR NUEVO HTML
4-En titulo ponemos el nombre que queremos que figure en el navegador, yo puse "Mi web".
5-Luego vamos a Insertar, Tabla y dentro de la misma escribimos lo que querramos o bien vamos a la solapa codigo e insertamos :
<table>
<tr>
<td>Estamos trabajando en la web...</td></tr>
<tr>
<td>Un cambio, una imagen, vos, tu propia pagina</td></tr>
<tr>
<td> </td></tr>
<tr>
<td style="font-size: 8pt">dba-mg.blogspot.com.ar</td></tr>
</table>
<br><br>
6- Damos f12 y nos mostrara un mensaje para que la guardemos con un nombre. Siempre a la pagina principal, referencial o home, le colocaremos index.html
¿Como crear una tabla en una base de datos en Mysql php para mi pagina Web?
Bueno, si nos encontramos con el diseño de una pagina web, en la cual es necesario que tengamos una conexión con una base de datos, para realizar por ejemplo el LOGIN, Es importante que contemos, primero con la creación de las tablas en donde iremos a guardar los datos. Como ser, la plantilla de datos de un usuario que se esta resgistrando en nuestra pagina. Haremos entonces la creación de la tabla, luego mostrare como conectar esta base con mi web.
1- Me conecto a la base de datos en la cual, voy a crear la tabla. En este caso a mi tabla la llame Usuarios y los campos que utilice son específicos para el tipo de pagina, ya que la web que diseñe es casi para una interacción de web social y se refiere al trueque, es por ello que contiene tantos campos de localidad. Dichos campos, estan pensados para que los usuarios tengan opciones para juntarse a concretar la operación.
Pero bien, el punto central aqui es que al ingresar a la base, le demos NUEVA para crear la tabla, Alli nos aparecera un campo en blanco que dice NOMBRE DE TABLA y el colocaremos el nombre al cual haremos referencia, cada vez que lo necesitemos.
Luego completaremos los campos, con NOMBRE, nombre del campo como ser "apellido:", en tipo, colocaremos el tipo de dato a ingresar y así iremos completando todos los campos. Los mas importantes, ademas de los mencionados son: si queremos permitir NULOS es decir NULL, que el usuario pueda dejar vació ese campo, luego el del indice, indicar para esa tabla cual sera el campo id indice. Por ultimo, si queremos que sea incremental.
Una vez hecho esto, hacemos click en guardar y listo, tabla creada.
Les quedara algo así:
1- Me conecto a la base de datos en la cual, voy a crear la tabla. En este caso a mi tabla la llame Usuarios y los campos que utilice son específicos para el tipo de pagina, ya que la web que diseñe es casi para una interacción de web social y se refiere al trueque, es por ello que contiene tantos campos de localidad. Dichos campos, estan pensados para que los usuarios tengan opciones para juntarse a concretar la operación.
Pero bien, el punto central aqui es que al ingresar a la base, le demos NUEVA para crear la tabla, Alli nos aparecera un campo en blanco que dice NOMBRE DE TABLA y el colocaremos el nombre al cual haremos referencia, cada vez que lo necesitemos.
Luego completaremos los campos, con NOMBRE, nombre del campo como ser "apellido:", en tipo, colocaremos el tipo de dato a ingresar y así iremos completando todos los campos. Los mas importantes, ademas de los mencionados son: si queremos permitir NULOS es decir NULL, que el usuario pueda dejar vació ese campo, luego el del indice, indicar para esa tabla cual sera el campo id indice. Por ultimo, si queremos que sea incremental.
Una vez hecho esto, hacemos click en guardar y listo, tabla creada.
Les quedara algo así:
Problemas al compilar, herramientas de compilación, errores y formas de solucionar este problema -
Hace poco, sucedió en una complementación que realizo el área de producción, de hacer un cambio sobre algunas tablas. Estos cambios, realizaban insert y update de registros. Por lo tanto, adoptaron la teoría de que no habría ningún problema, pues en el ambiente de test no lo hubo y todo salio exitosamente. Cuando fueron a realizar la compilación de los objetos, se encontraron con algunos errores en la salida. Estos errores claramente mostraban que algunos insert los había realizado y otros no, lo mismo paso con los updates.
¿Que sucedió y porque?
Aquí es donde intervino mi gestión y se comunicaron conmigo. ¿Que paso? al compilar los objetos encontro lineas donde existian caracteres raros, es por ello que algunos registros ingresaron y otros no.
¿Porque sucede esto? en verdad por que paso en el pasaje a producción y no en testing, es por que en testing lo compilaron con una herramienta que difiere a la que utilizaron para aplicarlo en el ambiente productivo. Esto es SUMAMENTE importante que siempre los archivos sean compilados en la misma herramienta. Yo recomiendo que sea en SQLPLUS,
Los dba estamos acostumbrados a utilizar muchas herramientas, en mi caso uso mucho ademas del sqlplus, el toad y el sqldeveloper. Por eso es importante que al momento de compilar un cambio en producción se hagan con sqlplus.
Por otro lado, es fundamental que antes de hacer un cambio se haga un backup de los objetos, en este caso hacer un EXPORT de las tablas era la solución, pero los chicos de producción no lo hicieron :(
Paso que utilice:
Yo tenia un ambiente para probar, en un unix. Entonces lo que hice fue transferirme el backup full de la noche anterior. Yo en mi caso, hago backups full todas las noches luego de la corrida de los procesos batch. En el día, cada 30 minutos hago archive log.
¿Como lo solucione? restaure el backup full, aplique mis archive log previos a este cambio, y realice un export/import de las tablas afectadas. Esta claro, que me hubiese ahorrado todo esto si tenia un export de las tablas previo al cambio, como lo mencione anteriormente.
Entonces, es importante que antes de cualquier cambio:
1- Se tome BACKUP así sea EXPORT, de tablas, esquemas, store procedures, etc, pero tener un resguardo de los cambios sobre los componentes que se modificaran.
2 - Se utilice la misma herramienta de compilación para todos los ambientes.
3 - En caso de incidentes, con el punto 1, restaurar a tiempo los objetos corruptos.
¿Que sucedió y porque?
Aquí es donde intervino mi gestión y se comunicaron conmigo. ¿Que paso? al compilar los objetos encontro lineas donde existian caracteres raros, es por ello que algunos registros ingresaron y otros no.
¿Porque sucede esto? en verdad por que paso en el pasaje a producción y no en testing, es por que en testing lo compilaron con una herramienta que difiere a la que utilizaron para aplicarlo en el ambiente productivo. Esto es SUMAMENTE importante que siempre los archivos sean compilados en la misma herramienta. Yo recomiendo que sea en SQLPLUS,
Los dba estamos acostumbrados a utilizar muchas herramientas, en mi caso uso mucho ademas del sqlplus, el toad y el sqldeveloper. Por eso es importante que al momento de compilar un cambio en producción se hagan con sqlplus.
Por otro lado, es fundamental que antes de hacer un cambio se haga un backup de los objetos, en este caso hacer un EXPORT de las tablas era la solución, pero los chicos de producción no lo hicieron :(
Paso que utilice:
Yo tenia un ambiente para probar, en un unix. Entonces lo que hice fue transferirme el backup full de la noche anterior. Yo en mi caso, hago backups full todas las noches luego de la corrida de los procesos batch. En el día, cada 30 minutos hago archive log.
¿Como lo solucione? restaure el backup full, aplique mis archive log previos a este cambio, y realice un export/import de las tablas afectadas. Esta claro, que me hubiese ahorrado todo esto si tenia un export de las tablas previo al cambio, como lo mencione anteriormente.
Entonces, es importante que antes de cualquier cambio:
1- Se tome BACKUP así sea EXPORT, de tablas, esquemas, store procedures, etc, pero tener un resguardo de los cambios sobre los componentes que se modificaran.
2 - Se utilice la misma herramienta de compilación para todos los ambientes.
3 - En caso de incidentes, con el punto 1, restaurar a tiempo los objetos corruptos.
martes, 22 de septiembre de 2015
A tener en cuenta - Puntos claves para la administración de base de datos
Algunos puntos a tener en cuenta para una administración de base de datos:
Es importante, controlar todos los procesos que se ejecutan en nuestra base, si bien por algunos en particular nos suelen llamar y decirnos "el sistema esta lento" y en ese momento hacemos un monitorio sobre la base. Es muy importante, como ejercicio hacer frecuente los controles sobre por ejemplo: cuanto me consumen los query en mi servidor, cuantas conexiones inactivas tengo, ya que esto es un gran problema, o algún bloqueo que se produce en determinados momentos. Tambien las full scan son un gran dolor de cabeza. Esto es frecuente en nuestros sistemas.
Algunas consideraciones a tener en cuenta son:
Es importante, controlar todos los procesos que se ejecutan en nuestra base, si bien por algunos en particular nos suelen llamar y decirnos "el sistema esta lento" y en ese momento hacemos un monitorio sobre la base. Es muy importante, como ejercicio hacer frecuente los controles sobre por ejemplo: cuanto me consumen los query en mi servidor, cuantas conexiones inactivas tengo, ya que esto es un gran problema, o algún bloqueo que se produce en determinados momentos. Tambien las full scan son un gran dolor de cabeza. Esto es frecuente en nuestros sistemas.
Algunas consideraciones a tener en cuenta son:
- Tener habilitado el informe AWR
- Colocar alarmas o hacer verificaciones sobre el tamaño de tu tablespace.
- Validar el uso de recursos de tus procesos dentro del UNIX o de tu servidor.
- Tener una buena metodología de backup.
- Analizar las query que tienen mayor demora en devolver una salida.
- Verificar la recreación de indices, como una tarea periódica.
- Realizar el calculo de estadísticas periódicamente.
Almacenamiento - Cuotas de tablespace
Las Tablespace ses un lugar de almacenamiento donde los datos reales que subyacen a la base de datos de objetos se pueden cumplir. Proporciona una capa de abstracción entre los datos físicos y lógicos.
Cuando instalamos la base de datos, se instalan junto a todo el paquete las tablespace por default, pero nosotros como administradores podemos crear las tablespace que consideremos necesarias para la buena administración de nuestra base de datos.
A su vez, es importante tener en cuenta el tamaño que le asignaremos a cada una de ellas.
Una tablespace, puede tener varios data files, de una buena administración depende tener nuestros datafiles correspondientes de modo UNLIMITED.
Aquí les dejo el código para verificar los tablespace de sus bases, sus tamaños y espacio ocupado.
Luego, el código lo pueden ir modificando, yo sugiero que este el modo de incremento, es decir el crecimiento que va tendiendo mis tablespace por porcentaje.
Tablespace de mi base y sus características:
select tablespace_name "Tablespace_Name",
username "Username",
bytes/1024/1024 "Megabytes",
(case when max_bytes = -1 then null
else max_bytes/1024/1024 end) "Max_Megabytes",
(case when max_bytes = -1 then 'UNLIMITED'
else null end) "Quota"
from sys.dba_ts_quotas
where (:TABLESPACE_NAME is null or
instr(lower(tablespace_name),lower(:TABLESPACE_NAME)) > 0)
order by tablespace_name, username
Agrego el incremento en %
SELECT T.TABLESPACE_NAME "TABLESPACE", T.STATUS "ESTADO",
ROUND(MAX(D.BYTES)/1024/1024,2) "MB TAMAÑO", ROUND((MAX(D.BYTES)/1024/1024) -
(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024),2) "MB USADOS",
ROUND(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024,2) "MB LIBRES",
ROUND((100* ROUND((MAX(D.BYTES)/1024/1024) -
(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024),2))/ROUND(MAX(D.BYTES)/1024/1024,2))"% INCREMENTO", SUBSTR(D.FILE_NAME,1,80) "FICHERO DE DATOS" FROM DBA_FREE_SPACE F,
DBA_DATA_FILES D, DBA_TABLESPACES T WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
AND F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME AND F.FILE_ID(+) = D.FILE_ID GROUP BY
T.TABLESPACE_NAME, D.FILE_NAME, T.PCT_INCREASE, T.STATUS ORDER BY 1,3 DESC;
Cuando instalamos la base de datos, se instalan junto a todo el paquete las tablespace por default, pero nosotros como administradores podemos crear las tablespace que consideremos necesarias para la buena administración de nuestra base de datos.
A su vez, es importante tener en cuenta el tamaño que le asignaremos a cada una de ellas.
Una tablespace, puede tener varios data files, de una buena administración depende tener nuestros datafiles correspondientes de modo UNLIMITED.
Aquí les dejo el código para verificar los tablespace de sus bases, sus tamaños y espacio ocupado.
Luego, el código lo pueden ir modificando, yo sugiero que este el modo de incremento, es decir el crecimiento que va tendiendo mis tablespace por porcentaje.
Tablespace de mi base y sus características:
select tablespace_name "Tablespace_Name",
username "Username",
bytes/1024/1024 "Megabytes",
(case when max_bytes = -1 then null
else max_bytes/1024/1024 end) "Max_Megabytes",
(case when max_bytes = -1 then 'UNLIMITED'
else null end) "Quota"
from sys.dba_ts_quotas
where (:TABLESPACE_NAME is null or
instr(lower(tablespace_name),lower(:TABLESPACE_NAME)) > 0)
order by tablespace_name, username
Agrego el incremento en %
SELECT T.TABLESPACE_NAME "TABLESPACE", T.STATUS "ESTADO",
ROUND(MAX(D.BYTES)/1024/1024,2) "MB TAMAÑO", ROUND((MAX(D.BYTES)/1024/1024) -
(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024),2) "MB USADOS",
ROUND(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024,2) "MB LIBRES",
ROUND((100* ROUND((MAX(D.BYTES)/1024/1024) -
(SUM(DECODE(F.BYTES, NULL,0, F.BYTES))/1024/1024),2))/ROUND(MAX(D.BYTES)/1024/1024,2))"% INCREMENTO", SUBSTR(D.FILE_NAME,1,80) "FICHERO DE DATOS" FROM DBA_FREE_SPACE F,
DBA_DATA_FILES D, DBA_TABLESPACES T WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
AND F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME AND F.FILE_ID(+) = D.FILE_ID GROUP BY
T.TABLESPACE_NAME, D.FILE_NAME, T.PCT_INCREASE, T.STATUS ORDER BY 1,3 DESC;
lunes, 21 de septiembre de 2015
Permisos y Privilegios
Visualizar permisos y privilegios en ORACLE
Consideraciones al momento de crear un usuario o cuenta en Oracle, y los privilegios y roles que le podemos asignar.
- El nombre de usuario no debe superar 30 caracteres.
- Un método de autentificación. El mas común es una clave o password, pero Oracle 10g soporta otros métodos (como biometric, certificado y autentificación por medio de token).
- Un Tablespace default, el cual es donde el usuario va a poder crear sus objetos por defecto, sin embargo, esto no significa que pueda crear objetos, o que tenga una cuota de espacio. Estos permisos se asignan de forma separada, salvo si utiliza el privilegio RESOURCE el que asigna una quota unlimited, incluso en el Tablespace SYSTEM! Sin embargo si esto ocurre, ud. puede posteriormente mover los objetos creados en el SYSTEM a otro Tablespace.
- Un Tablespace temporal, donde el usuario crea sus objetos temporales y hace los sort u ordenamientos.
- Un perfil o profile de usuario, que son las restricciones que puede tener su cuenta.
Permisos de Objetos:
select grantor "Grantor",
grantee "Grantee",
table_name "Table_Name",
privilege "Privilege",
initcap(grantable) "Grantable"
from sys.all_tab_privs
where grantor = user
or grantee = user
order by grantor, grantee, table_name
Privilegios de Columnas:
select grantor "Grantor",
grantee "Grantee",
table_name "Table_Name",
column_name "Column_Name",
privilege "Privilege",
initcap(grantable) "Grantable"
from sys.all_col_privs
where grantor = user
or grantee = user
order by grantor, grantee, table_name, column_name
Privilegios de Rol:
select username "User",
granted_role "Granted_Role",
initcap(admin_option) "Admin_Option",
initcap(default_role) "Default_Role"
from user_role_privs
order by username, granted_role
Privilegios del sistema:
select privilege "Privilege",
initcap(admin_option) "Admin_Option"
from user_sys_privs
order by privilege
Suscribirse a:
Entradas (Atom)